bdunderscore / modular-avatar

Other
523 stars 66 forks source link

Merge ArmatureのPosition Sync(位置追従)はGameObjectが非アクティブだと作用しない #500

Closed Sayamame-beans closed 8 months ago

Sayamame-beans commented 1 year ago

MA Merge ArmatureのPosition Sync(位置追従)は当該GameObjectが非アクティブだと作用しないようです。 これは幾つかの場面で問題を引き起こします。

再現手順(一例)

  1. アバターを用意する
  2. アバタールート直下に衣装prefabを置き、Setup Outfitする (この時、衣装prefabはactive)
  3. 衣装prefabをinactiveにする
  4. アバターのボーンを動かす(Hipsが分かりやすい)
  5. 衣装prefabをactiveにする

想定される挙動

衣装prefabがinactiveでもアバターボーンの変化に追従する。

実際の挙動

衣装prefabがinactiveな間に起きた変更は反映されない。

その他の例

補足

衣装のHumanoid Boneに後置詞が付いていた場合、Setup Outfitはこれを検知しないようです。 この場合、後から手動で後置詞をMerge Armatureに設定することになりますが、この状態では(設定を終えた後も)位置追従が機能しません。後置詞設定後にMerge Armatureコンポーネントや衣装prefabを一度inactiveにし、再度activeにすることで機能するようになることから、後置詞の変更が(コンポーネントが再読み込みされるまで?)位置追従機能に反映されなかったものと考えられます。

環境

VRChat SDK - Avatars: 3.4.0 Modular Avatar: 1.8.1 NDMF: 1.2.2

bdunderscore commented 1 year ago

負荷対策でアバターが非アクティブだと動かないようになっているので、まずは最適化が必要そうですね