追従と物理演算の設定
live2d viewer上で表示している追従と物理演算をunity上でも同じことを実行したいのですが、
公式サイトにあるように
画像・.moc3・.model3.json・.physics3.jsonをプロジェクト内に読み込みモデルも表示するところまではでき、
cubism look controllerなどを使用して追従自体はできるのですが物理演算を行う方法がよくわからず質問させていただきました。
(今はパーツを1つずつにcubism look parameterをアタッチしている為他に良い方法があるならそれも教えていただきたいです。)
cubism3のリファレンスにはここら辺の使用方法が詳しく書かれておらず詰まっているので何卒お願いしたいです。
公式サイトにあるように
画像・.moc3・.model3.json・.physics3.jsonをプロジェクト内に読み込みモデルも表示するところまではでき、
cubism look controllerなどを使用して追従自体はできるのですが物理演算を行う方法がよくわからず質問させていただきました。
(今はパーツを1つずつにcubism look parameterをアタッチしている為他に良い方法があるならそれも教えていただきたいです。)
cubism3のリファレンスにはここら辺の使用方法が詳しく書かれておらず詰まっているので何卒お願いしたいです。
0
コメント
モデルをCubism 3 SDK for Unityを用いてプロジェクトにインポートしたとき、.model3.jsonに.physics3.jsonの参照が記述されている場合、生成されるPrefabには自動で物理演算が設定されます。
もしPrefabに物理演算が設定されていない場合、model3.jsonにphysics3.jsonの参照が記述されているかをご確認ください。
また、各コンポーネントが実行される順序はUnityが制御しております。
その順序によっては、視線追従と物理演算が両立しないこともございます。
こちらは、Player SettingsでScript Execution Order Settingsを設定したり、AttributeのDefaultExecutionOrderを利用するなど、ユーザ側で各コンポーネントの実行順を制御していただくことで回避することが可能です。
@y_a_s_(Dev Staff)
ご返信ありがとうございます。
無事追従と物理演算ができました。
ですがviewer上ではできていたz軸の追従なのですがunity上では再生時にlook parameterに設定した値分最初から傾いてしまうのですが
look parameterの設定ではいけないということでしょうか?
CubismLookParameter.AxisにZが設定された場合、パラメータにはLookAtに入力した座標のZを用いて計算された値が設定されます。
Unity版のSDKでは3次元空間から追従する座標を指定することができるためZ軸の値を利用していますが、Cubism 3 Viewer for OWやUnity以外のSDKでは入力がスクリーン上のマウスカーソルの座標のみのため、入力された座標のXとYから算出した値を用いています。
Unity版のSDKで同様の動作にする場合、CubismLookParameter.TickAndEvaluate()を以下のように修正してください。
internal float TickAndEvaluate(Vector3 targetOffset) { var result = (Axis == CubismLookAxis.X) ? targetOffset.x : targetOffset.y; if (Axis == CubismLookAxis.Z) { result = targetOffset.x * targetOffset.y * (-1.0f); } return result * Factor; }