続 CubismParameterStore の使い方

いつも弊社製品をご愛顧のほど誠にありがとうございます。

お問い合わせ頂いたポーズ処理の件につきまして、調査が完了しましたのでご連絡差し上げます。

先に結論から申し上げますと、今回本スレッドで @KT 様にご提示いただいた修正内容で問題ございません。
その際、以前のスレッド でご提案させていただいた修正内容が不要となります。ご案内に不備があり混乱をお招きし、大変ご迷惑をおかけいたしました。

以下挙動調査の詳細となります。

症状が異なる原因について

_parameterStore が null であるかどうかで挙動が変化いたします。

_parameterStore位置修正前

CubismModel.Revive関数内の CubismModel.CanRevive が一度も有効にならないため、どの状態でも_parameterStore は null のままで main.Start関数は終了します。

_parameterStore位置修正後

いかなる条件であっても CubismModel.Revive関数が呼ばれた段階で _parameterStoreGetComponent関数で更新します。
この結果、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 の条件式に入りません。

以上ご確認いただけますと幸いでございます。