いつも弊社製品をご愛顧のほど誠にありがとうございます。
お問い合わせ頂いたポーズ処理の件につきまして、調査が完了しましたのでご連絡差し上げます。
先に結論から申し上げますと、今回本スレッドで @KT 様にご提示いただいた修正内容で問題ございません。
その際、以前のスレッド でご提案させていただいた修正内容が不要となります。ご案内に不備があり混乱をお招きし、大変ご迷惑をおかけいたしました。
以下挙動調査の詳細となります。
症状が異なる原因について
_parameterStore
が null であるかどうかで挙動が変化いたします。
_parameterStore位置修正前
CubismModel.Revive
関数内の CubismModel.CanRevive
が一度も有効にならないため、どの状態でも_parameterStore
は null のままで main.Start
関数は終了します。
_parameterStore位置修正後
いかなる条件であっても CubismModel.Revive
関数が呼ばれた段階で _parameterStore
をGetComponent
関数で更新します。
この結果、main.Start
関数内の、CubismModel3Json.ToModel
関数やCubismModel.ForceUpdateNow
関数でCubismModel.Revive
関数が呼ばれると、_parameterStore
に参照が入り、nullではなくなります。
この違いによる影響
main.Start
関数内でCubismPoseController.Refresh
関数を呼んだ際に CubismPoseController.defaultPoseIndex
で設定されているインデックス以外は0.0に設定されます。
ただし、_parameterStore
が設定されていると CubismParameterStore.Update
関数で毎フレーム保存済みの値が適用され、この時点での各パーツの不透明度がポーズ適用前の値であるため全て1.0となります。
CubismParameterStore.SaveParameter
関数で最新の値へ更新するのはCubismParameterStore.Refresh
関数のため、常に毎フレーム1.0がパーツの不透明度に反映されている状態。
対応について
CubismPoseMotionImporter.InitializePosePart
関数の移植は問題ございません。また_parameterStore
位置修正は不要となります。
なお、CubismModel3Json.ToModel
関数は内部でCubismModel.InstantiateFrom
関数を経由してCubismModel.Reset
関数を呼んでいるため、その場でCubismModel.TaskableModel
が生成されてその後は CubismModel.IsRevived
が有効となり、CubismModel.CanRevive
の条件式に入りません。
以上ご確認いただけますと幸いでございます。