本文へスキップ
LABMenu

AdditiveIK(アディティブアイケー) : モーキャプ物理編集リターゲット(DirectX12, bvh, fbx, Unity, Maya, VRoid対応)


このツールの概要


AdditiveIK(アディティブアイケー)
VRoidとモーキャプをプロのアセットに盛り付けろ!

モーションキャプチャをブラシで盛るように編集 fbxにしてUnityへ

(bvh, fbx, Unity, Maya, VRoid対応)




  Vector様で ダウンロード
1.0.0.16 インストーラ
 オープンソース GitHub
MIT OSS 随時更新
 MIT OSS















 前作EditMot + DirectX12 -> AdditiveIK

(UnityAsset HQ Retro Farmhouse +VRoid)

表現の意味を手に入れろ!

表現のためのモデル編集とモーション編集から
表現のためのシーン編集へ!

モデルもモーションもシーンによって意味が生まれる

UnityAssetStoreで
https://assetstore.unity.com/?locale=ja-JP
プロのアセットを入手し

それを読込編集保存することが出来る
作業はそこからだ!

(モデルにはVRoidを使用
https://vroid.com/studio)






ステージ:UnityAsset POLY FantasyTownをAdditiveIKに読込
モデル:VRoid
https://youtu.be/TzlAqf45jIQ









ステージ:UnityAsset TheHuntをAdditiveIKに読込
モデル:VRoid

https://youtu.be/R0MsXt8plYg








ステージ:UnityAsset HQ Retro FarmhouseをAdditiveIKに読込
モデル:VRoid

複数モデルに対してモーキャプリターゲット編集









ステージ:UnityAsset POLY FantasyTownをAdditiveIKに読込
モデル:VRoid
高さフォグとSkyDOF機能をオン(ver.1.0.0.12)












新機能オーバービュー





ver1.0.0.9以降におけるシェーダー


図:シェーダの種類



図:PBR+Std.+Toon共存 その1
(Asset: FantasyTown + JAPANESE CITY)


図:PBR+Std.+Toon共存 その2
(Asset: FantasyTown + JAPANESE CITY)



図:ShaderTypeParamsDlg
[クリックで元サイズ表示]

Auto, PBR, Std, HSV_Toonから表示を選びます
Autoは設定内容をみて自動的に3種共存します
PBR未設定でもすぐに表示できます

1.0.0.9以降において
全てのシェーダはトゥーンベースの色使いになった
Shaderプレートメニューで
HSV_Toonの設定をしてからAuto, Std.、PBRから
シェーダを選択

トゥーンには3段階トゥーンと
グラデーショントゥーンと
パワートゥーンがある


Std.とPBRの違いとしては
PBRは法線マップとメタルマップ対応
両方とも8個までの有色ライトで昭光













ピック&セット

ステージ:UnityAsset JAPANESE CITY
[クリックで元サイズ表示]

Shader、DispGroupプレートメニュー選択時
Shaderメニューではマウス位置のマテリアル名を
DispGroupメニューではメッシュ名を表示
編集したい名前がみつかったら
そこでマウスクリックすると設定画面が出て
編集項目に自動スクロールする


DispGroupプレートメニュは
メッシュにグループ番号を付けて
グループ番号の小さい順に描画する仕組み
グループ番号1は不透明描画
グループ番号2以上は半透明描画

色が抜けていない半透明メッシュに対して
2以上のグループ番号を設定すれば良い

グループ内では
カメラから近い順に描画

グループごとに表示のON,OFFも可能











シャドウ


[クリックで元サイズ表示]
シャドウプレートメニューから設定画面
有効無効、向き、長さ、明るさを
調整するための設定
8スロット設定可能















HDRPブルーム


[クリックで元サイズ表示]
1.0よりも大きい3.0までのライト設定
マテリアルごとに5.0まで掛ける倍率

シェーダにStdを選び
ライトを1.0より大きくすると自動でブルーム













LOD(詳細度切り替え)


(Asset: HQ Retro Farmhouse)
[クリックで元サイズ表示]
モデル詳細度のカメラ距離による切り替え
LODによるシーンの最適化で描画速度高速化
メッシュ名の命名規則有り
2段階LODと3段階LODに対応



















インスタンシング表示

[クリックで元サイズ表示] 剛体表示



[クリックで元サイズ表示] リグ表示




スライダーで明るさと透明度を設定
モデルの服の色に応じて見易く調整





















 リファレンスポーズ (1.0.0.7から)

[クリックで元サイズ表示]

リファレンスポーズ機能がDirectX12に対応
メモリ制約があるので
リファレンス数はカレントを含めて合計4つ.

選択フレーム範囲の
最初と最後と真ん中とカレントフレームを表示
透明度はDispAndLimitsメニューの
スライダーで調整可能.























 Numキーピッキング (1.0.0.8から)

(Asset: TheHunt)
[クリックで元サイズ表示]

Shader、DispGroupプレートメニュー
マウスをかざすとShaderメニューではマテリアル名
DispGroupメニューではメッシュ名を表示.
2キーを押し続けると
カメラから2番目に近いピック結果を表示.
1から9と0キーに対応.0は10番目の結果.

背景
オブジェクトが重なっている場合
ピックの結果が意図と異なる場合があった.
オブジェクト中心とカメラの距離の
近いものから判定するのが原因.
(頂点の位置ではなくオブジェクト中心)
高速化のために見つかり次第処理を終わらせる.
そのための番号キープッシュ方式.
















 裏返り処理の閾値設定 (1.0.0.9から)

[クリックで元サイズ表示]

モーションキャプチャデータとは
計算値ではなく測定値です
測定には精度がつきもので
必ずノイズが含まれています
急に角度が大きくなったり小さくなったりして
裏返ることがあります

AdditiveIKには
裏返り対策が施されています
1.0.0.9からは
裏返り対策のトリガーとなる閾値を設定可能

裏返るのは頭あるいは足首がほとんど
上図のEndJoint閾値を調整することで
大抵の場合解決します

例えばCMUのbvh60_8をリターゲットすると
初期設定では頭が裏返りますが
EndJoint値を68度に設定してから
bvh2fbxbatchとretargetbatchを実行すると
リターゲット結果が正常になります
bvh60_7については更に再生時に制限角度を
設定することにより正常になります

















 ライト極座標GUI (1.0.0.10から)

[クリックで元サイズ表示]

1.0.0.10からは
ライトの向きの設定の仕方が
極座標の角度2つになりました

XZ平面(地面)上の角度と
首を上下に傾けるYの角度の2つです

3次元ベクトルで指定するよりも
直感的に設定が可能














 カメラターゲットGUI (1.0.0.10から)

[クリックで元サイズ表示]

1.0.0.10からは
カメラターゲット(注視点)のGUIが
右ペイン上部に常駐

DispTargetにチェックを入れると
カメラターゲット位置に座標軸が
表示されます
その状態でスライダーをいじると
カメラとターゲット間の距離が変わり
ターゲット位置が動きます

MoveEyePosにチェックを入れて
スライダーをいじると
距離に応じてカメラの方が動きます

MoveEyePosのチェックをオンオフして
スライダーを動かすことで
尺取虫の様にカメラを操作可能

Lock2Jointにチェックを入れると
選択中のジョイント位置が
ターゲットになります















 シャドウキャスターフラグ (1.0.0.11から)

ステージ:UnityAsset HQ Retro Farmhouse
[クリックで元サイズ表示]

1.0.0.11からは
シャドウキャスターフラグのGUIが
Shaderプレートメニューに付きました.

影を表示するためには
シャドウカメラを通常視点の後ろ上方に置きます.
シャドウカメラと表示オブジェクトとの間に
天井や壁があると天井や壁が大きな影として
表示されてしまうので図2の様になりがちです.

天井や壁のシャドウキャスターフラグをオフにして
天井や壁が影を落とさないようにすることで
図1の様に想定通りの影を表示します.













 拡大回転移動別ペースト (1.0.0.12から)

[クリックで元サイズ表示]    

操作対象ボーン設定ダイアログに機能追加
ペーストショートカットボタンを右クリック
PasteScale, PasteRotation, PasteTranslationの
3つのチェックボックスを追加
拡大、回転、移動の中の必要なものだけ
チェックしてペースト
3つの組み合わせも可能














 ジャンプ補間 (1.0.0.12から)

ステージ:UnityAsset Fantasy Town
モデル:VRoid

[クリックで元サイズ表示]
Hipsジャンプ補間ボタンを追加
補間ボタンの左隣にジャンプ補間ボタンを追加
選択フレーム範囲の最初フレームと最後フレームの
Hipsの移動アニメを放物線で補間する
最後のフレームでぴったり着地するように補間
ボタンを押したときに
ジャンプ補間用の重力設定ダイアログを表示

















 常用スライダーの常駐 (1.0.0.12から)

[クリックで元サイズ表示]
アプリ上部に常駐スライダーを追加
EditRate、Speed、TopPosスライダーを常駐
いつでも操作可能に
TopPosスライダーの横幅が長くなったので
ブラシのピーク位置の設定精度改善
(長い分、目盛りが細かくなった)














 被写界震度(DepthOfField) (1.0.0.12から)

ステージ:UnityAsset Fantasy Town
モデル:VRoid

SkyDOFオン


ステージ:UnityAsset Fantasy Town
モデル:VRoid

SkyDOFオフ
[クリックで元サイズ表示]

DOFプレートメニュー新規
ボカシ始め距離、ボカシ完了距離、
SkyDof(天球にもボカシを入れるかどうか)
8スロット分設定可能
















 フォグ (1.0.0.12から)

ステージ:UnityAsset Fantasy Town
モデル:VRoid

カメラ距離フォグ


ステージ:UnityAsset Fantasy Town
モデル:VRoid

高さフォグ

[クリックで元サイズ表示]
Fogプレートメニュー新規
カメラ距離フォグと高さフォグに対応
フォグ色も指定可能 
8スロット分設定可能    















 シェーディングアルファ (1.0.0.12から)

ステージ:UnityAsset TheHunt
[クリックで元サイズ表示]

BaseAのスライダーでマテリアルの透明度を設定可能
HiA,LowAも設定可能
光の当たり方に依存させて透明度を
リアルタイムで徐々に変化させる
明るい部分を徐々に不透明にして
暗い部分を徐々に透明にしたり
その逆も














 アルファテストスライダー (1.0.0.13から)

ステージ:UnityAsset TheHunt
[クリックで元サイズ表示]

陰影トゥーンテクスチャに
アルファも書き出して
ライティングに応じてリアルタイムで
アルファを変化させるのがシェーディングアルファ
今回は更に
指定透明度以下の透明度の描画をスキップする
つまりアルファテスト設定のための
スライダーを追加
アルファテストスライダーにより
シェーディングアルファ設定済オブジェクトを
徐々に出現させたり消したりすることが可能

















 ブラシを簡易選択 (1.0.0.13から)

モデル:VRoid
[クリックで元サイズ表示]

3Dウインドウの背景部分を右クリックで
ブラシ選択メニューが出ます
ブラシにピーク位置は
アプリ上部のスライダーで設定
プレートメニューを切替えること無しに
イージーアクセスでブラシ選択可能
詳細な設定が必要な場合には
BrushParamsプレートメニューで設定
















 ボーン入りメッシュもピック (1.0.0.14から)
モデル:VRoid
[クリックで元サイズ表示]

背景だけにしか使えなかったピック&セットが
ボーン入りメッシュに対応
コンピュートシェーダで座標変換
不具合修正でピック誤動作も減りました

即時実行型コンピュートシェーダは
視錐体カリングにも使用
視野内オブジェクトの選別が適切に.















 シャドウ品質改善 (1.0.0.15から)

モデル:VRoid
[クリックで元サイズ表示]

シャドウのギザギザを解消
分散シャドウマップ(VSM)を導入
奥行情報の差分から求めた昭光確率
による影色
Shadowプレートメニューに
VarianceShadowMapsチェックボックスと
BlurShadowチェックボックスを追加
VSMのオンオフとボカシ処理のオンオフ
が可能














 物理角度制限 (1.0.0.16から)

YouTube動画:https://youtu.be/sCNE9C_zWNA
アセット:PhantasyTown
モデル:VRoid
[クリックで元サイズ表示]

スカート真横は制限せずにスカートとヘアに対して角度制限
スカートが拡がるが中は見えない!!

物理シミュにはbullet physicsを使用
剛体の接続を柔らかくするほどに
角度制限は効かなくなっていく
60fpsを想定したライブラリなので
20fpsで再生すると乱れることも多かった
そこで
bullet physics計算の後処理として
自前の角度制限を追加











 右クリックでピーク位置設定 (1.0.0.17から)

モデル:VRoid
[クリックで元サイズ表示]

変更前は
スライダーで%設定してブラシピーク位置を決めていた
変更後は
タイムラインを右クリックでダイレクトに
ピーク位置を設定

操作フレーム範囲はタイムラインのセルを
囲むように左ドラッグで設定

ブラシの他のパラメータは上部常駐GUIに配置
いつでも操作可能

ブラシの選択は3Dウインドウの背景部分を
右クリックで選択










 マニピュレータ軸とグラフ軸が一致 (1.0.0.17から)

モデル:VRoid
[クリックで元サイズ表示]

VRoidからのfbx、バインドポーズ付きfbx読込時
マニピュレータ軸とオイラーグラフの軸が一致

DispAndLimitsプレートメニューの
AxisKindの初期値を変えたことによる軸の一致











 物理シミュの環境依存緩和 (1.0.0.17から)

モデル:VRoid
[クリックで元サイズ表示]

物理シミュは時間依存定数を使うので
表示速度の速い遅いによって結果が変わる

その違いをある程度吸収するために
DispAndLimitsプレートメニューに
3つのスライダーを追加

個々のオブジェクトの設定を変更しないでも
全オブジェクトに対してスケールすることで
環境依存問題にある程度対応











 物理シミュ回転禁止設定復活 (1.0.0.17から)

モデル:VRoid
[クリックで元サイズ表示]

剛体チェーンの中のある剛体に対して
物理シミュの回転禁止を設定可能

RigidParamsプレートメニューの
ForbidRotチェックボックスに
チェックをいれると回転禁止が機能

回転禁止は
子供ジョイント側に設定すると
子供ジョイントが
親ジョイント中心の回転をしなくなる












ダウンロード


Vector様にて公開開始!
画像&サウンド-->グラフィック関係-->3Dグラフィックス
-->AdditiveIK
2023/12/27夕 ver1.0.0.1
2024/01/10夕 ver1.0.0.2
2024/01/17夕 ver1.0.0.3
2024/01/24夕 ver1.0.0.4
2024/01/31夕 ver1.0.0.5
2024/02/07夕 ver1.0.0.6
       ver1.0.0.7スキップ
2024/02/21夕 ver1.0.0.8
       ver1.0.0.9スキップ
2024/03/06夕 ver1.0.0.10
2024/03/13夕 ver1.0.0.11
2024/03/27夕 ver1.0.0.12
2024/04/03夕 ver1.0.0.13
2024/04/10夕 ver1.0.0.14
2024/04/18夕 ver1.0.0.15
2024/04/24夕 ver1.0.0.16公開開始
2024/05/01夕 ver1.0.0.17予定


Vector様で ダウンロード 
1.0.0.16インストーラ



オープンソース GitHub
githubにてMIT OSS 随時更新







ジャンプ中にくるりと回ります
https://youtu.be/6wveLqMbsYA

念じながら走るのです
https://youtu.be/S-2ycgp_xM4

半回転階段チャレンジ
https://youtu.be/TzlAqf45jIQ

モーキャプ@夕暮れキッチン
https://youtu.be/pMRaTOw5B38

使い方動画
https://youtu.be/oKGY62YosSg

使用例動画
https://youtu.be/R0MsXt8plYg





日記








ver1.0.0.17 アップデートログ

2024/04/25
 AdditiveIK 1.0.0.17
  1.0.0.16からの変更点
   不具合修正
    右クリックによるブラシ選択時にジョイント選択が
    初期化されてしまっていたのを修正
     右クリックによるブラシ選択時にジョイント選択を復元
     左ペインのジョイント階層ツリーからジョイントを選択した場合にも対応

   VRoid読込時マニピュレータとグラフの軸が一致
    プロジェクトファイル(*.cha)ファイルに
    DispAndLimitsレートメニューのBoneAxisを保存
    chaファイルにBoneAxisタグが存在しない場合(古いchaファイルの場合)、
    1つでもVRoidモデルがあればボーン軸種類としてBONEAXIS_BINDPOSEを設定
    モデル読み込み後は、DispAndLimitsプレートメニューの
    AxisKindコンボボックスにてボーン軸の種類を設定可能
    軸の種類BONEAXIS_BINDPOSEについて
     VRoidやバインドポーズとしてボーンの向きが設定されているfbxファイル用
     オイラーグラフの軸とIK回転の軸(マニピュレータ軸)とボーンの軸が一致する
     Rigの軸指定の種類のNODE*とも一致するようになる
    軸の種類BONEAXIS_CURRENTについて
     RokDeBone2出力のfbxやバインドポーズとして
     グローバル軸が設定されているfbxファイル用
     IK操作をボーン軸で行うことが可能
     しかしオイラーグラフの軸とマニピュレータ軸は一致しない
    オイラーグラフの軸の種類は常にBONEAXIS_BINDPOSE(今まで通り)
    (今まではVRoid読み込み時にもBONEAXIS_CURRENTを指定していたので、
    オイラーグラフの軸とマニピュレータの軸が表示上異なっていた)

    注
     軸の種類の違いにより、マニピュレータ軸とグラフの軸が
     一致しないことがありますが、それは表現方法の違いであり
     同一の姿勢を示しています。
     軸の種類の違いとは、どこから角度を測るかという違いであり、
     保持している元データとしては同一です。


   ブラシピーク位置設定方法変更
    今まではTopPosスライダーでブラシの山のピークの位置を決めていた
    これからは、オイラーグラフ上部のタイムラインを
    右クリックすることによりピーク位置を設定
    ピーク位置は選択フレーム範囲内にクランプ

   上部常駐スライダ変更
    TopPosスライダーの代わりに、ブラシミラーUチェックボックス、
    ブラシミラーVチェックボックス、ブラシリピートスライダを配置
    ブラシ選択は3Dウインドウ右クリック、
    その他のブラシ設定項目は上部常駐GUIに配置したので、
    BrushParamsプレートメニューは取り除いた

   4段階LODに対応

   視野内判定高速化
    シェーダ修正

   物理回転バネ定数全体をスケールするスライダーを
   DispAndLimitsプレートメニューに追加
    EditScaleスライダーはアプリ上部の常駐スライダーと冗長なので取り除いて、
    新たにAngleSpringScaleスライダーを追加 

   RigidParamsプレートメニューのForbidRot(回転禁止)設定も
   自前の制限で復活
    剛体は親ジョイントと子供ジョイントをつなぐ線分をベースに
    作成されますが、ForbidRot回転禁止は子供ジョイントに設定します.
    回転禁止にチェックが入っている剛体は、前のフレームの姿勢へと制限

   自前の角度制限が動いたのでBulletPhysics側の角度制限はfree状態に設定

   DispAndLimitsプレートメニューのAngleSpringScaleスライダーの値も
   プロジェクトファイル(*.cha)に保存

   各ブラシの引数チェック部分変更
    ブラシのリピート回数の上限を100に.

   ドキュメント追加
    0_TroubleShooting/なぜ同じ項目についてのスライダーが
    DispAndLimitsプレートメニューにも存在するのか.docx
    (WhyTheDispAndLimitsPlateMenuAlsoHasASliderForTheSameItem)




ver1.0.0.16 アップデートログ

2024/04/18
 AdditiveIK 1.0.0.16
  1.0.0.15からの変更点
   不具合修正
    CameraDist常駐スライダーをホイールで動かした際に
    描画が更新されていなかったのを修正

    Rigの修正
     1009_5モデルにおいて
     applyframeが167となるように複数フレームを選択して
     足の青いリグを回転すると回転軸が設定と異なる不具合があった
     通常のマニピュレータ回転時には子供ジョイントの軸で親ジョイントを回転させる
     それに対してRig回転時には子供ジョイント軸で子供ジョイントを回転させる
     Rig回転のときの回転軸計算に
     通常マニピュレータ回転軸計算結果を使っていたというミス
     修正により複数フレーム選択時のリグ回転も正常になった
     ちなみに、
     Testフォルダのモデルに設定してあるリグは
     動作確認オンリーの目的で設定したものであり、
     実用的設定ではないので各自使いやすいように設定してください
     私はリグをあまり使わずにマニピュレータ(ジョイントを選択して回転)
     でやる派なので、今のところ


   物理角度制限復活
    剛体接続を柔らかくしたので制限角度が効かなくなっていた
    自前で制限処理をすることにより物理角度制限復活
    LimitEulerプレートメニューのダイアログにLimitRateスライダーを追加
    設定した制限角度を100%守って制限すると、
    動きが激しい部分の動きがカクカクパタパタしてしまう
    LimitRateスライダーを適当に設定して制限を緩めることにより
    制限しつつ滑らかな動きへと近づく
    そのような設定をするためには、
    制限角度をオーバーして回転することを考慮して
    制限角度を小さめに設定しておく必要がある
    LimitRateはボーンごとに設定可能で、
    ApplyDeeperボタンで下層ツリーへ一括設定、
    ApplyAllボタンで全ボーンへ一括設定可能

    DispAndLimitsプレートメニューにPhysicalLimitScaleスライダーを追加
     LimitEulerプレートメニューで
     各ボーンに対してlimitrateを設定しておいて
     動作環境の速い遅いへの対応策として
     DispAndLimitsプレートメニューのPhysicalLimitScaleで
     全ボーンのlimitrateに倍率を掛けて調整する


   重力スケールの最大値を100から200へと変更
   回転バネ定数の設定範囲を0から500の範囲へと変更(以前は2から3000)
    バネを柔らかくして重さを軽くして重力で調整してみる試み

   EditRate, MotionSpeed, PhysicalLimitScale, cameraDistを
   プロジェクトファイル(*.cha)保存時に保存

   Testフォルダのモデル更新
    1009_5
     剛体の重さを一番小さく設定 
     ヘアのバネ定数を大きく スカートのバネ定数を小さく
     LimitRate設定
      スカートの真横ボーンには制限角度を設定しないことにより、
      ジャンプでスカートは拡がるが中は見えないように.
      ヘアの制限角度を+-15degree、スカートの制限角度を+-5degree
      スカートだけではなくヘアに対する角度制限にも使えるようになった
      fpsが小さい場合にもLimitRateスライダーで対応できるようだ.
      75fps-->LimitRate85, 20fps-->LimitRate98
    BoySporty_2
     以前と大きくは変わらないようにLimitRateを設定



ver1.0.0.15 アップデートログ

2024/04/12
 AdditiveIK 1.0.0.15 release
  1.0.0.14からの変更点
   不具合修正
    モデルが全体移動している場合に
    シャドウが表示されていなかった不具合を修正
    ChkInViewにおけるシャドウカメラ変換行列が
    モデル全体移動に対応していなかった
   
   DOF表示の高速化
    被写界深度(DOF)をオンにした時の表示速度が
    DOFをオフにしたときの表示速度と同じくらいにまで高速化

   シャドウ品質の改善
    シャドウの品質改善とはシャドウのギザギザ表示を解消すること
    Shadowプレートメニューに
    VarianceShadowMapsチェックボックスと
    BlurShadowチェックボックスを追加
    VarianceShadowMaps(分散シャドウマップ)とは
     シャドウの深度情報の差分から影かどうかの分散(確率用語)を
     計算して影の色を決める方法
    BlurShadowは
     ガウシアンによるボカシを掛ける機能で
     オフにしている場合にも縮小拡大効果によりボカシを適用して品質向上




ver1.0.0.14 アップデートログ

2024/04/07
 AdditiveIK 1.0.0.14
  1.0.0.13からの変更点
   コンピュートシェーダー対応
    CPU処理とGPU処理を同期して使うことが出来るように
    コンピュートシェーダを即時実行するためのクラスを新規

    ピック&セット機能がスキンメッシュ(ボーン入りのメッシュ)
     に対しても機能するように.
     ボーン変形計算とピック計算をコンピュータシェーダで実行
     ビデオメモリ不足がシビアにならない程度に
     (こちらで以前読めていたアセットを読み込むことが出来る程度に)
     コンピュートシェーダ化
     
    視野内判定(ChkInView)の改善
     視錐体による判定(改善前は境界球判定だった)
     コンピュートシェーダによる高速計算

   Pick最大距離設定スライダー
    ProjAndLODプレートメニューにPickDistスライダーを追加
    PickDistRate x ProjectionFarの距離より遠いメッシュに対しては
    Pick処理をスキップ
    PickDist 0.0でPick全スキップ、
    PickDist 1.0で視野内全メッシュに対してPick
    
   マニピュレータの色の濃さを調整
    色が濃すぎてメッシュが隠れてしまっていたのを
    見易くなるように修正

   半透明ブレンドに関わるメッシュソートの改良
    管理クラスをはっきりさせて、まとめる部分はまとめてからソート

   シェーダー内の割り算を出来るだけ掛け算表現で計算するように修正
    多少高速化



ver1.0.0.13 アップデートログ

2024/03/29
 AdditiveIK 1.0.0.13
  1.0.0.12からの変更点
   不具合修正
    DepthOfField(DOF)の修正
     ボケるべき位置にボケない三角形が多数表示される不具合を修正
     SkyDOFの実装方法をSkyデプス方式からクリア方式へ変更
     大きいモデル(ポリゴン)表示時やカメラが遠くに離れた場合に
     不具合が生じていた
     RefPosをオンにした場合にも生じていた
    RefPosの修正
     半透明がブレンドされていなかった不具合修正
     DOFと一緒に使うとボケない三角形が多数表示されていた不具合修正
     スキンメッシュの内部配列のインデックスが
     一部RefPosに対応できていなかった不具合修正
    OWPスライダーの修正
     セパレータ内のスライダーの左ダブルクリックが効かなくなっていたのを修正
      左ダブルクリックでクリック位置へつまみを移動
     セパレータ内の右ダブルクリックが効かなくなっていたのを修正
      右ダブルクリックでスライダーのアンドゥを実行
     スライダードラッグ時につまみの位置が微妙にずれるのを修正
      クリック位置とつまみ位置のずれを保ったままドラッグによりスライドする
      修正により、つまみ中央をドラッグした場合にも
      つまみ位置とマウスと位置がぴったり合うことを確認
    剛体マーク、リグマーク表示の修正
     マルチスレッドのスロット番号合わせとフレーム番号合わせ
     メッシュの姿勢とマークの位置が表示1回分ずれていたのを修正
     プレビュー時、ホイールによるタイムラインフレーム移動時にも
     表示がずれなくなった
   
   アルファテストスライダー追加
    ShaderプレートメニューにAlphaTestスライダーを追加
    透明度がスライダー値より小さい場合に
    ピクセル単位で描画をスキップする(アルファテスト)

   アルファテスト修正
    アルファテスト時にシェーディングアルファ設定にも簡略計算にて対応
    シェーディングアルファで透明度を設定しておいてから
    アルファテストスライダーを操作することにより
    メッシュを明るい部分から徐々に出現させたり、
    暗い部分から徐々に消したりすることが可能
    アルファテストで完全に消えた場合の跡地がDOFでボケるようになった   

   ブラシのスピーディー選択
    3Dウインドウの何も無いところ(背景)を右クリックすると
    ブラシ選択コンテクストメニューが出る
    詳細な設定はBrusheParamsプレートメニューで行うが、
    ブラシの種類をパッと変えたいときに便利

   選択中ブラシ名を表示
    オイラーグラフのオイラー数値表示の並びに、
    選択中のブラシ名も表示

   TestフォルダにBoySporty_2モデルを追加
    新しいVRoidでモデルを出力し直して復活
    顔のシェーディングが直った





ver1.0.0.12 アップデートログ

2024/03/20
 AdditiveIK 1.0.0.12
  1.0.0.11からの変更点
   不具合修正
    マルチスレッド処理修正
     マルチスレッドのスロット合わせし直し
     以前はループの最後と最初の部分で
     部分的に形状が伸びることがあったがその症状は解消した
     レンダリング中に姿勢計算をしても表示が乱れなくなった
    シェーダーコンパイルエラー時にabortするように.
     ユーザーがシェーダーをいじることも想定
     エラーの時にはアプリを終了
     シェーダーにミスがあった場合
     (例えば全角スペース1個入っていた場合)に
     アプリとWindowsOSが固まる不具合を解消

   拡大、回転、移動の必要なものだけペースト
    操作対象ボーン設定ダイアログに機能追加
    ペーストショートカットボタンを右クリックで設定
    PasteScale, PasteRotation, PasteTranslationの
    3つのチェックボックスを追加
    スケール(拡大縮小)、ローテーション(回転)、トランスレーション(移動)
    の中の必要なものだけチェックしてペースト
    SRT3つの組み合わせも可能

   ジャンプ補間ボタン
    Hipsジャンプ補間ボタンを追加
    上段カエルボタンを押したときに、
    補間ボタンの左隣にジャンプ補間ボタンを追加
    選択フレーム範囲の最初フレームと最後フレームの
    Hipsの移動アニメを放物線で補間する
    最後のフレームでぴったり着地するように補間
    ボタンを押したときに、
    ジャンプ補間用の重力設定ダイアログ(再計算ボタン付き)を表示

   いつでも使うスライダーを常駐
    アプリ上部に常駐スライダーを追加
    EditRate、Speed、TopPosスライダーを常駐
    いつでも操作可能に
    TopPosスライダーの横幅が長くなったので
    ブラシのピーク位置の設定精度が上がった
    (長い分、目盛りが細かくなった)
   
   被写界深度(Depth of Field)対応
    DOFプレートメニュー新規
    ボカシ始め距離、ボカシ完了距離、
    SkyDof(天球にもボカシを入れるかどうか)の設定
    8スロット分設定可能

   フォグ対応
    Fogプレートメニュー新規
    カメラ距離フォグと高さフォグに対応
    フォグ色も指定可能 
    8スロット分設定可能    

   Skyプレートメニュー新規
    8スロット分設定可能

   アルファテスト
    ピクセルシェーダ内でテクスチャのアルファが
    0x08より小さい場合に書き込みをスキップ
    書き込みスキップ時はZバッファにも描画されないので
    テクスチャ抜きが綺麗に.
   
   シェーディングアルファ
    BaseAのスライダーでマテリアルの透明度を設定可能
    HiA,LowAも設定可能
    マテリアルごとに
    光の当たり方によってアルファ(透明度)を徐々に
    変化させることが可能

   DispAndLimitsプレートメニューにAlphaBlendingチェックボックス
    アルファテストだけのアルファ抜き表示の時はオフ、
    ブレンドしたい場合にオン
    オンにした場合にはZバッファのクリア1回分処理が増える

   ドキュメント追記
    TroubleShooting/0_シャドウの設定の仕方について.docx



ver1.0.0.11 アップデートログ

2024/03/08
 AdditiveIK 1.0.0.11
  1.0.0.10からの変更点
   不具合修正
    インスタンシング描画修正
     プリミティブ数指定を修正
     直す前は、デバッグビルド実行時に警告が出ることがあったようだ

    Shaderプレートメニュー修正
     見出しボタンを押した後にShaderTypeを変更した場合に
     最後のマテリアルの3文字タイプ表記が変わらない不具合を修正
     (設定はされていた)

    fbxに四角形が含まれていた場合に警告ダイアログを出すように.
     エラーにはならないが4点目の法線を読み込んでいないので警告ダイアログを出した.
     ワーニングは1ノードに付き1回まで.

    起動時のウインドウ大小選択ダイアログでキャンセルしてアプリを終了した場合に
     メモリリークしていたのを修正

    法線マップとメタルマップのサンプラー修正
     複数アセットで確認したが、albedoとnormalとmetalは
     セットで切り替えるようだった
     normalとmetalのサンプラーにもalbedoのサンプラーを使用することにした
     TheHuntStreet1の地面の凸凹が改善した


   マテリアルごとに影を落とさない設定を可能に
    ShaderプレートメニューにShadowCasterチェックボックス追加
    天井や壁や仕切りカーテンなどに対して
    ShadowCasterのチェックをオフにすることで狭い場所にも
    きれいに影が落ちやすくなった

   2番目のトークンで類似チェックオンオフを可能に
    DispGroupプレートメニューのSimilarチェックをアップデート
    メッシュ名を右クリックで出るコンテクストメニューに2nd ON, 2nd OFFを追加
    _で区切られたメッシュ名の2つ目の_の後のトークンを元に処理
    例えば、Model_tree_1というメッシュに対して2nd ONを実行すると
    Model_tree_2, Model_tree_3などがチェックオンになります

   ShaderプレートメニューにLightingチェックボックス追加
    チェックオフ時にはライトの向きを考慮しない白い拡散色とマテリアルテクスチャで表示
  
   DispAndLimitsプレートメニューのEnableLightチェックをオフにした場合は
    シーン全体に対してライトの向きを考慮しない白い拡散色とマテリアルテクスチャで表示

   天球表示をオプションに
    DispAndLimitsプレートメニューにSkyDispチェックボックスを追加

   天球マテリアル設定機能追加
    アプリ上部のメインメニューバーの
    表示(disp)-->天球設定(SkyParams)メニュー選択でダイアログ表示
    設定はアプリ終了時自動保存、アプリ起動時自動読込

   UVの繰り返し回数設定
    ShaderプレートメニューにTilingU, TilingVのスライダーを追加
    スライダー設定をリアルタイムでテクスチャの繰り返し回数として適用
    Albedoテクスチャ, Normalテクスチャ, Metalテクスチャすべてに影響
    fbxファイルのUVScalingに保存して読み込み
    UVScalingはMayaとUnityでは現在は無視されているようにみえる
    fbxの正式なtiling回数の保存読み込みに関しては不明

   CameraDistスライダーの最大値を1000から5000に変更




ver1.0.0.10 アップデートログ

2024/02/27
 AdditiveIK 1.0.0.10
  1.0.0.9からの変更点
   不具合修正
    シャドウカメラの計算を修正
     思った通りになっていなかったのを修正
    ピック&セットの不具合修正
     DispGroupプレートメニューにおいて、
     クリックしてもGUI上で選択メッシュが自動選択されないケースがある不具合修正
     選択メッシュをみつけた場合のbreak抜けにより自動選択されないケースがあった
    OWP_Sliderの修正
     スライダー上のクリック位置からの移動量でスライドする機能の修正
     スライダーがセパレータの右側にある場合に計算が間違っていたのを修正
    Testフォルダのモデル更新
     新しいVRoidのモデルはStdシェーダで表示しても顔の中央に白いラインが出ないので、
     今後は新しいVRoidのモデルを使用する
     2/22のモーキャプ@夕暮れキッチン(https://youtu.be/pMRaTOw5B38)のモデルを新規
     スカートに剛体設定してスカートのシミュをオンに設定
     ジャンプした際にスカートががめくれないようにするには
     こちらではDispAndLimitsメニューのSpeedを0.5に. 
    Rigの軸がドラッグ開始姿勢に依存していた問題解決
     ジョイントドラッグのIKはうまくいっていたがRigで問題が出ていた
     Rigの軸としてNodeX, NodeY, NodeZのどれかを選ぶことで動作が安定
     ただしfbxのジョイントに適切な初期姿勢が設定されていることが前提
     初期姿勢が設定されていない場合にNodeX, NodeY, NodeZを指定すると
     ボーン軸ではなくグローバルXYZの回転になってしまう
     新しいVRoidのモデルではうまくいっているようだ
    DispGroupメニューのメッシュ名右クリックからのSimilarON,OFFの修正
     処理関数を書き直し
     先頭に'_'があってもうまくいくようになった
    DispGroupメニューの項目の選択処理が重すぎたのを修正
     プログラムからの項目選択時にも項目選択リスナーを呼び出していたのを
     呼び出さないように修正
    カメラドリーダイアログの修正
     カメラドリーダイアログを出したときにカメラの位置が変わってしまわないように修正
     (保存したいカメラ画面にしてからダイアログを出す場合に画面が変わると困るから)

   カメラターゲットに関わるGUIを右ペインの上のウインドウに常駐
    Lock2Jointチェックボックス : 選択中のジョイントをカメラの注視点にする
    DispTargetチェックボックス : カメラターゲットの位置にマニピュレータと位置座標表示
    CamDistスライダー : カメラの視点と注視点の距離を設定する
    MoveEyePosチェックボックス : オフの時スライダー操作時に注視点を移動、
    オンの時スライダー操作時にカメラ位置を移動.
    CamDistスライダーで注視点を前後させて、カメラの回転の中心を設定することが可能
    MoveEyPosチェックとスライダーの組み合わせで、
    尺取虫の様にカメラを操作することも可能
    注視点はカメラを回転する場合の回転中心になる

   
   ファイルオープンダイアログを通常のエクスプローラタイプに変更
    エクスプローラタイプに変更するとファイルを選択しやすい
    しかし
    現状のゲームパッド対応コードでは目的のGUIコントロールを取得することが出来なかった
    (ゲームパッドでオープンダイアログのボタンを押すことが出来ない)
    ゲームパッド対応はモーション遷移テストやキャラクターの移動などに
    限定して使用していく予定
    ゲームパッド対応時にもマウスは必要という方針に変更
    どうしてもゲームパッドでファイルを開く必要が生じた場合には、
    ゲームパッドでピック可能なオープンダイアログを作ることになる
    ver1.0.0.10時点では一時的にゲームパッド対応コードをコメントアウトしている

   LightsプレートメニューのGUI改良
    ライトの方向を設定するためのGUIを極座標表現に変更
    角度2つで設定可能なのでベクトル指定よりも直感的に設定することが可能
    内部データと読み書き用ファイルは向きベクトルのまま
    極座標のXZの角度は本来はX軸方向だが、
    アプリ起動時のカメラの向きに合わせてZ軸方向を0度にした
    GUIでの角度の数値の小数第2位以降は誤差ですが、
    表示桁数を減らすと余計に誤差が大きくなるので小数4桁表示しています
   
   マニピュレータ表示修正
    回転モードのときにはリングも表示
    移動モード、拡縮モードの時には軸だけ表示

   DispGroupメニューにClearボタンを追加
    メッシュ名のチェックマークをクリアするボタン

   ドキュメント追加
    0_TroubleShooting/0_スカート物理の設定の仕方.docx
    0_TroubleShooting/0_シャドウの設定の仕方について.docx
    0_TroubleShooting/0_Win32ダイアログの黒い枠.docx

ver1.0.0.9 アップデートログ

2024/02/22
 AdditiveIK 1.0.0.9
  1.0.0.8からの変更点
   不具合修正
    ノーマルマップを小さく表示するとモアレが出る不具合修正
    ノーマルマップだけMipMapを0に固定していたのが原因
   AdditiveIKの方向性としてトゥーンベースに
    全てのシェーダ(PBR, Std. Toon)において
    拡散色のシェーディング時にHSV_Toonを参照するように.
    黒くなるシェーディングではなく
    色相を保ちながらまたは色相を変化させながら
    HSVのVが小さくなるシェーディングが可能.
    ベースとなるToon設定としてグラデーションとパワートゥーンを追加.
    顔の陰が綺麗に出るようにNormalY0チェックボックスを追加.
    SpecularCoefスライダでスペキュラーの倍率をマテリアルごとに設定可能に.
   Q2Eul_Thresholdプレートメニューを追加
    Retargetメニューの並びに配置.
    リターゲット時、fbx入出力時と
    姿勢をオイラー角に変換する計算時に使用する閾値の調整が可能.
   Rigidプレートメニューの各項目の右にToDeeperボタンを追加
    選択剛体の全ての子供の剛体に対してカレント値をコピペ.
    例えば手の甲に物理パラメータ設定をして
    ToDeeperボタンを押すと子供の指剛体全部にコピペされる.
   ウインドウ小モードにおける各種ダイアログの大きさ調整.
    見切れすれすれのものが多数あったので対応.
   法線マップとメタルマップのサンプラーのフィルターをMIP_POINTに変更.
    ぼけ過ぎないように.
   UV0とUV1の切り替えテストのためのUVSet決め打ちコードが
    残っていたのを修正. 
    fbxの元のものを読まないと正しく直らないことも有り.
   ScreenShotフォルダの中身を新しいSSに更新.
   TestフォルダのモデルのShader設定を更新. 
    体はStd. 顔だけToonLit2でY0フラグオン. 
    顔のセンターの法線の具合がStd.で光るので対策.
   ドキュメント追加
    0_TroubleShooting/0_シェーダの設定の仕方.docx
    0_TroubleShooting/0_裏返り修正の閾値設定について.docx


ver1.0.0.8 アップデートログ

2024/02/17
 AdditiveIK 1.0.0.8 release
  1.0.0.7からの変更点
   能動的デストラクトとメモリリーク解消
    Direct3Dオブジェクトをメンバに持つ自動変数、static変数、global変数の
    解放を能動的に行った
    アプリ終了時に自動開放を待たずに能動的にデストラクトすることにより
    リークしていたメモリを把握出来て修正することが出来た
    ダンプにおいてDebugDevice以外のRefcountが0になった
    (IntRefには何か書いてあるが問題ないらしい)
    メモリリークは解決したようだ
   TOONシェーダ対応(HSV_Toon)
    NOLIGHTシェーダをTOONシェーダに変更
    Shaderプレートメニューでマテリアル名のボタンを押してToonを選択すると機能
    TOON用のライトとしてはLightプレートメニューのライトの向きを使用
    マテリアルの拡散色から自動的にTOONテクスチャを作成し
    diffuseMapとしてシェーダで使用
    設定画面
     Shaderプレートメニューで設定
     面の向きとToon用ライトの向きが同じ向きを向いているほど
     HiAddr,LowAddrのスライダーは右側にします
     HiAddrよりも向きが同じ方向の場合にはハイライト色、
     LowAddrよりも向きが違う場合には陰色、
     どちらでもない場合にはベース色を表示
     トゥーンの色の設定はHSVで行います
     HSVのHは色相で0から360の数値をとります. 
     Sは彩度で0から1、Vは輝度で0から1.
     Base色はHSVの数値そのものを指定.
     AddH, AddS, AddVはベース色のHSVに加える分
     (引くときはマイナスの数値を指定)の数値を指定.
     各設定項目にはGUIスライダー有り
     プロジェクト保存時に*.stfファイルにテキスト保存、プロジェクト読時に自動読込
   PBR, StdのdiffuseMap参照の際にもHSV_Toonのテクスチャを参照
   PBRの法線修正
    法線マップが無い場合には頂点法線を使用するように.
    法線マップが無いメッシュにPBRシェーダを選んでもそれなりに表示されるように.
   NumKeyピッキング
    ShaderプレートメニューとDispGroupプレートメニュー時のピック処理修正
    オブジェクトの中心がカメラから一番近いオブジェクトをピックしていました.
    オブジェクトの形状によっては意図したオブジェクトがピック出来ないことがありました.
    1-9の番号を押しながらピックすることで
    カメラから番号番目に近いオブジェクトをピックするようにしました.
    処理の高速化のために距離の順番はカメラとオブジェクト中心との距離、
    見つかった時点ですぐに結果を返す仕様.
    現在は非スキンメッシュだけがピック対象(これも高速化のため).
   1オブジェクトだけのテスト表示機能
  DispGroupプレートメニューのTestボタンが機能していなかったのを修正
   Rigスプライトの画像ファイル更新
    見やすく
   ZPreCullingをデフォルトでオフ
    ZPreによる効果よりも不具合の方が多くなってきたため.
   RefPosの選択ジョイント軌跡表示修正
    カレントフレームの選択ジョイント位置も軌跡に含めるように.
   TestフォルダのモデルのShader設定を修正
  

######################
### HSV_Toon設定時の注意 ####
######################
   HSV_ToonにはRGBとHSVの変換計算が関係しています
   Windowsに付いているペイントというソフトで色作成ボタンを押して
   色の種類をRGBからHSVに変えてから色の位置をいろいろクリックすると分かるのですが。
   HSVのSが0の場合にはHをどんなに変えても色は白です.
   fbxの拡散色として真っ白が設定されている場合、Sが0になっています.
   その状態から色を変えたい場合には、まずSとVを変えてからHを変えてください.
   

ver1.0.0.7 アップデートログ

2024/02/11
 AdditiveIK 1.0.0.7
  1.0.0.6からの変更点
   不具合修正
    LimitEulウインドウでCurrentBoneに対するFromCurrentMotionボタンを実行すると
     他のボーンの制限角度が0リセットされて動かなくなる不具合修正
     カレントボーンだけを初期化してからカレントボーンだけに値をセットするように.
     AllBoneボタンの処理はそのまま.
    Brushesプレートメニューでアンドゥリドゥ時にウインドウが更新されない不具合を修正
    BrushMethodのコンボボックスを変更してもアンドゥ用の保存がされていなかったのを修正
    右ペインウインドウを開いたままリターゲットバッチを実行すると
     他のウインドウを表示した時に裏に残ったままになる不具合を修正
     リターゲットバッチ実行前に右ペインウインドウを閉じるように.
    IKモードスプライト表示状態の初期値修正
     回転モードスプライトを初期状態でONに.
     (初期状態で回転モードになっていたが表示色がオフ色になっていた.)
    アプリの終了処理を修正   


   クリック(ピック)&セット 
    DispGroupプレートメニュー選択時
    マウス位置のメッシュ名をToolTip表示し
    クリックしたモデルとメッシュを選択してGUIに反映
    ただし背景だけ(スキンメッシュは未対応)

    Shaderプレートメニュー選択時
    マウス位置のマテリアル名をToolTip表示し
    クリックしたモデルとマテリアルを選択してGUIに反映
    ただし背景だけ(スキンメッシュは未対応)


   RefPos機能をDirectX12に対応させて復活
    CameraAndIKプレートメニューのRefPosオンオフに対応.
    スキンメッシュ(ボーンが入っているメッシュ)のみ対応.
    複数残像を表示する機能ですがメッシュメモリは使いまわし
    必要なメモリを残像4個分アロケートします.
    選択フレーム範囲を2分割して3個の残像フレームと1個のカレントフレームを表示します.
    選択中のジョイントの軌跡を赤いソリッドコーンでインスタンシング表示.
    動きが大きいほどコーンの大きさは大きい.
    プレビューにも対応.
    DispAndLimitsプレートメニューのRefPosAlphaで残像の透明度調整
    DispAndLimitsプレートメニューのZCmpAlwaysチェックボックスで
    カレントフレームのZバッファ方式を切り替え



ver1.0.0.6 アップデートログ

2024/02/01
 AdditiveIK 1.0.0.6
  1.0.0.5からの変更点
   不具合修正
    カメラアニメ選択後にカメラの無いモデルを選択してプレビューすると
    カメラアニメが再生されない不具合修正
    最後に選択したカメラアニメが有効.
    カメラの無いモデルのモーション編集中にもカメラアニメが動くように.


   ShaderプレートメニューのEmissionチェックボックスの隣にEmissiveScaleスライダーを追加
   Emissionに対して0%から100%まで倍率を指定
   fbxに既に設定してあるマテリアルのemissiveに対して作用.

   DispAndLimitsプレートメニューのEditRateの値の範囲を0倍から50倍までに.
   (変更前は0から1)
   CameraAndIKプレートメニューの移動モード時にもEditRateを考慮
   (回転モードは以前から対応しているが9.9度以上のステップにはならないリミッター有)
   広いステージをスプライトドラッグで移動する場合にも速やかに移動可能に.

   Shiftキーを押しながらスケールドラッグでXYZ全軸に対してスケール処理

   ToolButtonのモーションの補間機能がスケールに対応していなかったのを修正
   スケール対応
   対応前は例えば全体を5倍したモデルのフレーム範囲を補間した場合に
   補間区間のモデル倍率が1倍になってしまっていた.
   対応後は5倍されたまま姿勢が補間される.

   カメラアニメ計算時の時間を丸めないdoubleに.
   カメラに合わせてモデルのモーションを付ける際に
   モデルだけ補間されてカメラが補間されない場合に、
   モデルが画面上を行ったり戻ったりするようにみえる不具合解消のため.


ver1.0.0.5 アップデートログ

2024/01/27
 AdditiveIK 1.0.0.5
  1.0.0.4からの変更点
   不具合修正
    既知の問題005の解決
     1メッシュに複数マテリアルが設定してあるfbxの書き出しに関する不具合修正.
     修正前の症状としては
     マテリアル番号オブジェクトが2つ出来て1つ目が未設定になり
     Unityでは読めるがMayaでは表示が指定通りでは無かった.
     修正後は
     UnityでもMaya2024でも指定通りの表示になった.
     マテリアル番号オブジェクトが2つあるfbxを読み込んだ場合には
     書き出し時に2つ目を書き出すようにした.
     古いAdditiveIKで保存したfbxはver1.0.0.5で読み込んで保存し直すことで
     Maya2024でも正常に読み込めます.

    既知の問題006の解決
     症状としては
     AdditiveIKで出力したfbxをMaya2024.2で読み込むとバインドポーズに関する警告が出て
     モーションが大きく変質する不具合.
     Maya2023.3では無警告で正常に読み込み正常に再生できる.
     解決方法としては
     古いAdditiveIKで保存したfbxはver1.0.0.5で読み込んで保存し直すことで
     Maya2024でも正常に読み込めます.

    Testフォルダのモデルを1.0.0.5で読み込んで保存し直し

    Hand_Closeリグで手を握った状態から開こうとするとうまくいかない不具合修正
     設定ファイル*.rigを更新
     親指の回転軸をNodeYに変更(変更前はCurrentY)

ver1.0.0.4 アップデートログ

2024/01/21
 AdditiveIK 1.0.0.4
  1.0.0.3からの変更点
   不具合修正
    BrushParamsプレートメニューでTopPosスライダー操作直後のIK中に、
    3dwndのポーズの表示が変化しないことがある不具合を修正

   DispGroupの挙動を修正
    グループごとに不透明はカメラから近い順、半透明はカメラから遠い順に
    ソートしてから描画
    Treeのグループ番号を大きい値に設定するだけで
    ステージのTreeの影付き透過表示がうまくいくようになった

    メッシュ名右クリックのSimilarチェック時に
    メッシュ名先頭にPrefabがあった場合には2番目の'_'までをパターンとする

   Shadowプレートメニューのbias値の最大値を0.03に変更(変更前は0.01)

   対称コピーに関する修正
    実際に有効な使用方法としてはRootBone:SymDirAndSymPosAndSymScaleだけ
    とも言えるので他のメニューはグレーアウト
    部分的にペーストしたい場合には
    上段カエルショートカットボタンの中のペーストボタンを"右"クリックして
    対象を絞って対称ペーストする

   IK操作中は30fps以上のマウス移動に対する処理をしないように修正
    IKの後処理が重くなり過ぎないようにするため。
    表示のfpsは今回の修正によっては制限を受けない

   Rigクリックだけで右ペインにクリックしたRigの設定画面を出すように.
    設定中のRigと操作中のRigを一致させることにより、誤保存を回避、操作も効率的に。

   Test/3_Winter2_1モデルのRig設定を修正
    このモデルはTestフォルダの中の他のVRoidよりも新しいVRoidで出力したモデル
    新しいVRoidにはローカル軸が保存されるようになったようだ
    それを踏まえて、新しいVRoidのリグの設定時には
    軸の種類としてNodeX,NodeY,NodeZを選ぶと良い
    特に足の部分のリグにはNodeX,NodeY,NodeZを選ばないとうまくいかないことが多い


  備考
   ノーマルマップテクスチャの表示について
   テクスチャにはMipMapの処理を入れてある
   MipMapが本当に機能しているかどうかについてはまだ調べ切っていない
   PBR表示の際のノーマルマップテクスチャについては遠くのテクスチャに
   モアレが出ることがある
   PBRをオフにすると通常のテクスチャに対してはモアレは出ない
   ノーマルマップを施しているメッシュについてはLOD(詳細度切替機能)を使って
   遠くのオブジェクトに対してはノーマルマップ無しのモデルに置き換える
   というのが良いと思っている

ver1.0.0.3 アップデートログ

2024/01/13
 AdditiveIK 1.0.0.3
  1.0.0.2からの変更点
   不具合修正
    1メッシュに複数マテリアルがある場合に面のマテリアル番号設定に問題があったのを修正
    LaterTransparent設定ウインドウに
    Albedoテクスチャ名がエントリーされていなかった不具合修正

     AlbedoでもNormalでもMetalでもないテクスチャ名だけが
     エントリーされていた不具合だった

     (修正前はVRoidではうまくいっていた)
    BrushParamsプレートメニューのTopPosのテキスト表示更新に関わる不具合を修正
     フレーム選択変更時にTopPosのGUI表示が更新されていなかった
    右ペインのウインドウのスクロールバードラッグのキャプチャとリリースに関して修正
     スクロールバードラッグ中に画面外でマウスを離した場合に
     挙動がおかしくなる不具合が直った

    モデルを追加読み込みするとモーションスピードが
    スライダーの値と異なってしまう不具合を修正

     DispAndLimitsプレートメニューのSpeedスライダーの設定どおりになった

   2つまでのマルチUVに対応
    Albedo, Normal, Metal丸ごと一緒にUVSet0とUVSet1を切り替えるように.
    DispAndLimitsプレートメニューに UVSetコンボボックスを追加
   インスタンシング表示
    リグと剛体をインスタンシング表示(1モデルに対する1回の描画で複数個表示)
    フォントとボーンマークは1.0.0.1からインスタンシング表示
   ボーンマークの明るさ、リグ(Rig)の透明度、剛体(Rigid)の透明度を設定可能に.
    DispAndLimitsプレートメニューのスライダーで設定
   Rigの設定(ジョイント右クリック->Rig名->Settingメニューで出る)の回転軸の追加
    CurrentX, CurrentY, CurrentZ,
    ParentX, ParentY, ParentZ,
    GlobalX, GlobalY, GLobalZ,
    NodeX, NodeY, NodeZ
    上記9種類に増やした
    足の付け根UpperLegの前後回転軸はParentYとした
    Testフォルダのrigファイルを更新
    古い設定はCurrent*として扱う   
   マニピュレータの計算の修正
    Hipsの特別扱いを止めて Hips自身の回転を考慮するようにした
    Rigの足の付け根(UpperLeg)の回転が 体全体の回転後も設定どおりに曲がるようになった
   テクスチャアドレッシングモードの読み込みと表示への適用と保存
    サンプラーステートにも適用
   テクスチャ命名規則を少し修正(_Baseが加わった)
    Albedoまたはalbedoまたは_Baseが名前にテクスチャをAlbedoMapとする
    Normalまたはnormalが名前につくテクスチャをNormalMapとする
    Metalまたはmetalが名前につくテクスチャをMetalMapとする
   VRoidに対する剛体作成の修正
    VRoidの足の横に平行して作成されるCoatSkirt用のボーンに対しては
    自動で剛体を作成 "しない" ように修正

   ジョイントマークを修正
    選択時は赤、非選択時は黄色に. 明るさ調整はスライダーで.
   モーションスピードの初期値を1.0に変更
    変更前は3.0

   外部ライブラリのバージョンアップ(差し替え)
    DirectXTK12をJun2023からDec2023に差し替え
    DirectXTexをDec2023に差し替え

   モデル更新
    Test/3_Winter2_1のモーションを修正
     全フレームのHipsのスケールを初期化
     スケール値に不具合を引き起こす値が入っていたようで
     Mayaで服のテクスチャが表示されなかったり IK時に軸がブレたりした
     スケール初期化で直った

ver1.0.0.2 アップデートログ



2024/01/04
 AdditiveIK 1.0.0.2
  1.0.0.1からの変更点
   不具合修正
    ボタンを押してもShader設定ダイアログが出ないことがある不具合修正
    Rigの設定が意図せず重複して片方を選べなくなる不具合修正
    シャドウの向きを修正
    マニピュレータの軸(計算と表示共に)がparent側に1階層分ずれていたのを修正
     体全体を90度回転した場合に足の付け根のRigの軸が
     設定と異なる現象を追いかけていたら発覚
     IK操作、Rig操作とRigの設定に影響
     軸の種類はDispAndLimitプレートメニューのAxisKindコンボボックスで
     Current, Parent, Global, Nodematから選択可能.
     昔の振る舞い再現はAxisKindでParentを選択すれば可能(Rigの設定が昔のままの場合).
     IK操作の軸が操作中にブレないことを再確認
   LOD機能追加 ProjAndLODプレートメニュー追加
   MipMap対応
    テクスチャ読み込み時に全レベルMipMapを作成して転送
    サンプリングステートでMipを有効に
   VRoid特有のジョイント名がある場合には
   シェーダー設定がAUTOのときにNOLIGHTを適用してトゥーン風に表示
   ブラシ設定のRepeatsのスライダーの最大値を100に.(変える前は10)
   起動時の初期値を変更
    HighRpmを最初から有効に.
    4Kモード時には ZprepassCullingを最初から有効に.
   ツールショートカットボタンのModelWorldMat設定ウインドウにカメラ位置、カメラ注視点にモデルを置くボタンを追加
   シャドウのbiasスライダーの最小値を0に.(変更前は0.001)
   Testフォルダにモデル追加 
    Test/3_Winter2_1
   トラブルシューティング追加
    0_TroubleShooting/LODの設定について.docx
    0_TroubleShooting/シェーダーの設定について.docx
    0_TroubleShooting/シャドウの設定について.docx
    0_TroubleShooting/画面に暗いノイズが表示される場合.docx
    0_TroubleShooting/ギザギザ画質を改善したい場合.docx
    0_TroubleShooting/リターゲット後の姿勢が部分的に180度異なる場合.docx






使い方


入力用のfbxの準備の仕方
 UnityAssetをUnityでfbxエクスポートする場合
 全てのマテリアルのシェーダーをStandardにするとfbxにテクスチャ名が出力される
 それ用のEditorスクリプトをみつけてきて使っています
メニュー
 2段構成プレートメニュー
 1段目は常時固定メニュー. 2段目はカエルボタンクリックで変化.
 メニューに対するGUIは右ペインウインドウに表示.
IK編集
 編集したいフレーム(時間横軸)範囲をロングタイムラインの四角マークをマウスで囲むようにドラッグして選択
 Brushプレートメニューで編集ウェイト曲線のパラメータを設定
 Brush設定によるウェイトカーブはタイムライン上に白い線で表示
 ジョイントマークをマウスドラッグしてIK
 元の動きを潰さずにドラッグした分だけの姿勢をウェイトを掛けて足す.
 IK階層数を大きくしてもIKStop設定ジョイントでドラッグ効果は止まる.
 IKStopはジョイント右クリックでオンオフ.
アンドゥリドゥ
 モーション編集とブラシ設定とフレーム選択に関して処理の巻き戻しと再実行が可能
 アンドゥ及びリドゥボタンはCameraAndIKプレートメニューで表示
 画面左上にR(数字)、W(数字)の表示がある 読込バッファ番号と書き込みバッファ番号を示す
 R位置番号はアンドゥするたびに1つ減る
 W位置番号は常にバッファの最後の番号
 R番号W番号は アンドゥリドゥによって どの状態に戻ったのかを確認するためのもの
高回転モードと計算スレッド数
 姿勢計算はマルチスレッド化されていて描画と同時進行で計算
 DispAndLimitsプレートメニューのHighRpmチェックは姿勢計算のスレッド回転を速くする
 HighRpmはプレビュー時(プレイヤーボタンのプレイを押したとき)に機能する
 HighRpmオン時にはプレビュー時にCPU稼働率が高くなり描画が速くなる
 DispAndLimitsプレートメニューのUpdateThreadsスライダーで計算スレッド数を設定
 UpdateThreadsは1モデルに対してのスレッド数
 読み込みモデル数とコンピュータのCPUコア数によって速く描画できるスレッド数は異なる
角度制限
 読み込み済のモーションの動く範囲を可動範囲としてワンボタン設定可能
 LimitEulerプレートメニューの
 FromCurrentMotionボタンとFromAllRetargetedMotionでワンボタン設定
 角度制限はCameraAndIKプレートメニューのLimitEulボタンでオンオフする
 IK時に設定した制限角度で止まる
 CameraAndIKプレートメニューのScrapingボタンオンの時には
 1つでも可動軸があるとその軸に関して動く
 指などの制限が厳しい設定下で動かしたい場合にScrapingを使用
位置コンストレイント
 ジョイント右クリックでコンストレイントジョインを指定
 位置コンストレイントはIK時またはConstExecuteボタン押下時に働く
 CameraAndIKプレートメニューのConstRefreshを押したときの位置にジョイントをコンスト
 LimitEulをオンにして使うことを想定(無理な方向へ曲がらないように)
カスタムRig
 操作用メッシュを表示したいジョイントを右クリックしてCreateNewRigで作成設定
 マウスのX方向Y方向それぞれのドラッグに対してXYZの度の軸を回転するかを指定
 回転には符号付きの倍率を設定
 RigによるIKは5階層まで伝達可能だがRigからRigも呼ぶことが出来るので5階層以上も可能
 Rig操作のオンオフはCameraAndIKプレートメニューのRigボタンで行う
コピーペースト
 ソフトを終了しても残るコピー履歴機能により手間を削減
 コピーの際にメモを記述可能で履歴画面に表示される
 コピー履歴表示のソートカットボタンは上段カエルボタンを押して表示
 最新を選択のチェックを外すと過去の履歴を選ぶことが出来るようになる
SymCopy
 対称コピー
 選択フレーム範囲のモーションに対して対称コピーを行う ペーストボタンで貼り付け
 ショートカットボタンは上段カエルボタンで表示
 ボタンを押して出てくるメニューでSymDirAndSymPosAndSymScale選択推奨
補間
 補間(Interpolation)ショートカットボタンは上段カエルボタンで表示
 補間計算は選択フレーム範囲の最初と最後のフレームに対して行う
 補間計算時にはBrushプレートメニューで選択したウェイト曲線を使用
 通常の補間をしたい場合にはZBrushにUpCos選択 TopPosを100にして補間ボタン押下
Smooth平滑化
 平滑化ボタンはCameraAndIKプレートメニューにある
 ボタンを右クリックで設定してから実行、左クリックは前回の設定で実行
 ノイズの除去に効果がある
 補間とは違って姿勢を考慮せずにオイラー角を直接計算するのでHipsに使うと体が傾くことがある
物理シミュレーション
 bulletPhysicsによる物理シミュレーション
 RigidParamsプレートメニューで設定
 Validにチェックを入れてToAllボタンで全身に剛体が入る
 髪の毛ジョイントはneckジョイント選択後ToolWindowのjointマークスキップresetを押すと表示
 シミュレーションしたいボーン(剛体)に対してRigidBodySimulationチェックボックスにチェック
 プレイヤーボタンのグレーの再生ボタンで物理シミュ開始
 BulletPhysicsプレートメニューのCalcCountスライダーで1フレーム当たりの物理計算回数を設定
 CalcCountは通常1.  大きいCalcCount値で安定することもあるが環境依存で大きくすることにより暴れることもある
カメラ履歴
 アセットの編集場所へすばやくカメラを移動可能
 上段カエルボタンでカメラ履歴ボタンを表示
 CameraAndIKプレートメニューのカメラボタンドラッグでカメラ設定後
 履歴ウインドウのGetボタンで値として取得 Saveでメモ付き保存
 ラジオボタン選択で履歴の場所にカメラ移動
表示
 DispAndLimitプレートメニューのShaderTypeでAuto, PBR, STD, NOLIGHTを切り替え可能に.
 法線マップを設定していないモデルに対してPBRを選択すると 法線が0となり黒い表示になることに注意
 ShaderTypeでAUTOを選んだ場合のシェーダー設定は以下
  スキンメッシュについては [Albedo無しまたはNormal有またはMetal有]->PBR, 
  [Albedoだけ有またはテクスチャ1つも無し]->NOLIGHT
  非スキンメッシュについては [Albedo無しまたはNormal有またはMetal有]->PBR, 
  [Albedoだけ有またはテクスチャ1つも無し]->STD
 スキンメッシュと非スキンメッシュそれぞれのShaderTypeに対して 不透明、半透明、半透明常時上書きの設定があり自動設定
 DispGroupプレートメニューでメッシュごとにグループ指定
  設定画面としてはモデルパネルで選択したモデル単位
  複数モデルを横断してグループ番号の小さい順に描画
  グループ番号1以外は強制的に半透明として描画
  メッシュ右クリックから類似する名前のメッシュの一括処理が可能
 LaterTransparentプレートメニューでメッシュ内の透過テクスチャ描画順を指定
 Shaderプレートメニュー
  マテリアル名ボタン押下で設定、見出しボタン押下で選択モデルの全マテリアルに対して設定
  シェーダータイプとしてAuto, PBR, Std., NoLightの4種類から選択
  PBRは法線テクスチャまたはメタルスムーステクスチャのどちらかが設定されている場合を想定
  Autoを選ぶと設定具合をみて自動的にマテリアルごとにPBR, Std.,NoLightを振り分け
 Shadowプレートメニュー
  デプスシャドウです セルフシャドウも表示されます
  影の向きはLightプレートメニューで設定したライトの番号で指定(1から8までのボタン)
  シャドウ用のカメラの位置から上記ライトの向きに影は落ちます
  シャドウライト位置と対象物間に遮るオブジェクトがある場合plus up設定でライトを持ち上げる
  影の明るさは0.0で真っ黒、1.0でdiffuse色
  シャドウカメラの位置設定にはカメラのターゲット位置が関係する
  ジョイントを選択後にDispAndLimitsメニューのLockCameraToSelectedJointチェックで選択したジョイントの位置をカメラターゲット位置にすることが可能
  カメラのターゲット位置によっても影の落ち方は変わる
 HDRP
  Lightプレートメニューで設定可能なライトの強さは1.0よりも大きい3.0.
  Shaderプレートメニューで設定可能なマテリアルごとのライト倍率最大値は5.0.
  SahderでStd.を選んで ライトを1.0より大きくすると 自動的にBloomが掛かる.
 bvh2Fbxバッチ
  bvhファイルをfbxファイルに変換.
  扱うことが出来るbvhのタイプは限定的(回転順序には対応.軸の違いには未対応).
  CMU(カーネギーメロン大学)のMotionBuilderFriendlyタイプのサンプルでテスト.
 retargetバッチ
  指定フォルダ内のfbxを選択中のモデルにリターゲット
  モーションのボーン名とモデルのボーン名の対応表*.rtg(テキストファイル)が必要
  Test/RetargetSettingFileExampleフォルダに*.rtgの例を同梱
  Testフォルダの*.rtgのファイル名は Model名_モーション種類.rtg
  指定フォルダにretarget.rtgという名前で*.rtgファイルを置く必要有





既知の問題と対策



問題001から003はver1.0.0.2にて解決

#######
# 問題004 
未解決だが対応策有
#######
ジョイントの方向(いわゆる初期姿勢)として X180, Y90, Z0が設定されているfbxの書き出しが変質する不具合がある。
書き出し時だけ問題が出る。読込とリターゲットはうまくいく。
X180, Y90, Z0の初期姿勢が設定されているモーションに対しては
読み込み後に普通の軸のモデルにリターゲットしてから保存してください。


#######
# 問題005 
ver1.0.0.5に向けた修正(github)にて解決済 テスト後にリリースへ
#######
1メッシュに複数マテリアルが設定してあるモデルの場合
AdditiveIKで読み込んでから保存すると
Unityではきちんと1メッシュに対して複数マテリアルが読み込まれるが
Mayaではメッシュに1つのマテリアルしかアタッチされていないことがある
という問題が起きています(Mayaでもマテリアル自体は読み込まれています)
解決に時間が掛かりそうなのと他の不具合修正分を早く出したいので
問題005は未解決ですが 1.0.0.4を出します
ver1.0.0.5に向けた修正で解決.
古いAddtiveIKで保存したfbxはver1.0.0.5で読込保存し直すことで
Maya2024で正常に読み込めます.


#######
# 問題006 
ver1.0.0.5に向けた修正(github)にて解決済 テスト後にリリースへ
#######
AdditiveIKで出力したfbxをMaya2024.2で読み込むと
バインドポーズに関する警告が出てモーションが大きく変質する不具合.
Maya2023.3では無警告で正常に読み込み正常に再生できる.
ver1.0.0.5に向けた修正で解決.
古いAddtiveIKで保存したfbxはver1.0.0.5で読込保存し直すことで
Maya2024で正常に読み込めます.


########
# 備考001
########
大きいサイズのfbxを読み込んだ際に
DescriptorHeapの作成に失敗とダイアログが出てアプリが落ちる場合は
プログラムのミスではなく、ビデオメモリが足りないからです.
その場合はAdditiveIKに読み込む前にfbxの内容を減らすなどしてください.
作者もビデオメモリ不足には悩まされており
次にビデオカードを購入するときには
8GBではなく16GBのものにしたいと思っています(遠い目).


#########
## 備考002
#########
右ペインのWin32ダイアログに黒い枠表示が付いてしまう件
 ウインドウの背景色は本来はプログラムごとにいじるものではないらしい
 WindowsのユーザがWindowsの設定画面を使ってテーマと
 背景色を設定するのが本来のやり方とのこと
 設定の仕方としてはWindows11においては以下のようだった
  設定-->アクセシビリティ-->コントラストテーマ-->夜空-->適用する
 上記設定をするとWindows11全体としてウインドウの背景色が黒になる
 ショートカットでテーマのオンオフも可能
  左Alt + 左Shift + PrintScreenでテーマをオンオフ
 
 図:コントラストテーマとして夜空を設定して起動したAdditiveIK






ナビゲーション