質問は基本的に1スレッドにつき1つの内容でお願いします。

お問い合わせの際は下記の情報を明記をお願いいたします。

▼ソフトウェアに関するご質問の場合

・【問題が発生したソフトウェア名とバージョン】(例:Cubism Editor 3.1.02、Euclid Editor 1.2.0 など)
・【ご利用のPC環境】例:Windows10、macOS HighSierra など
・【機種名】:MacBookPro 2017 など
・【グラフィックボード】例:GeForce GTX 950M など
・【メモリ】例:8GB
・【原画(イラスト)を制作したソフトウェア】例:Photoshop , CLIP STUDIO , SAI など
・【問い合わせ内容がわかるスクリーンショットまたは動画】例:パーツの表示状態など、お問い合わせ内容がわかる画像をご用意ください

---------------------------

▼SDKに関するご質問の場合

・現象の再現を行い検証させていただきますので、再現する最小のプロジェクトのご提供か、再現するまでの手順
・使用したSDKのバージョン

追従と物理演算の設定

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

  • 03/29編集されました
    @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;
            }
コメントするにはサインインまたは登録して下さい。