★お知らせ(2023/12/27)
いつもLive2D公式コミュニティをご利用いただき誠にありがとうございます。
本コミュニティは2023年12月27日 11:00をもって閉鎖いたしました。
今後の運営はすべて新Live2D公式クリエイターズフォーラムに移行します。
閉鎖に伴い、以下機能は利用不可となります。
・アカウントの新規作成
・トピック投稿、返信
たくさんのご利用誠にありがとうございました。

新Live2D公式クリエイターズフォーラムは以下バナーよりご利用いただけます。
Live2D公式クリエイターズフォーラム

なお、本コミュニティに投稿されたトピックはすべて残りますが、今後削除する可能性がございますので予めご了承ください。
閉鎖に関するお問い合わせにつきましてはLive2D公式クリエイターズフォーラムへご連絡ください。

追従と物理演算の設定

live2d viewer上で表示している追従と物理演算をunity上でも同じことを実行したいのですが、
公式サイトにあるように
画像・.moc3・.model3.json・.physics3.jsonをプロジェクト内に読み込みモデルも表示するところまではでき、
cubism look controllerなどを使用して追従自体はできるのですが物理演算を行う方法がよくわからず質問させていただきました。
(今はパーツを1つずつにcubism look parameterをアタッチしている為他に良い方法があるならそれも教えていただきたいです。)

cubism3のリファレンスにはここら辺の使用方法が詳しく書かれておらず詰まっているので何卒お願いしたいです。

コメント

  • @morita さん

    モデルを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の設定ではいけないということでしょうか?

  • 編集済: 3月 2019
    @morita さん

    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;
            }
コメントするにはサインインまたは登録して下さい。