EreMorphの仕組み🔗
基本動作🔗
EreMorph は以下図のような構成になっております。
基本の流れ🔗
EreMorphコンポーネントは、割り当てられた時そのオブジェクトにある Mesh Filter / SkinnedMesh Renderer の SharedMesh を 対象メッシュ として保管します。
モーフデータアセット(ScriptableObject)が割り当てられていない時に、モーフユニットを新規追加すると自動で以下パスにモーフデータアセットを作成します。
モーフデータアセットには 対象メッシュ モーフユニット・グループの情報 最後に保存したパス 等が保管されます。
- Assets/EreMorph_Assets/[シーン名]/[オブジェクトのあるHierarchyパス]/メッシュ名.asset
モーフデータアセットが存在するEreMorphは、エディタ起動・プレイモード・シーンビルド時に自動で 対象メッシュ から編集用メッシュを作成してSharedMeshに割り当て、モーフユニットの変形を適用します。
なお、エクスポートして割り当てたメッシュが自動で編集用メッシュに上書きされてしまわないよう、以下の条件でのみ割当が行われます。
- SharedMesh がモーフデータアセットの 対象メッシュ と同一の時
Prefabについて🔗
EreMorphコンポーネントがPrefabに保管される時、編集用メッシュである場合は一時的に 対象メッシュ に切り戻して保管します。
編集用メッシュは保存されない設定であるため、もしPrefabに保存している間にEreMorphがアンインストールされると、次Prefabを開いた時にメッシュが失われるためです。
プレイモード・シーンビルドについて🔗
EreMorphはNDMFがプロジェクトに存在する場合はNDMFのビルドフェーズに乗せます。
本ツールはTransformingフェーズでModularAvatarより前に動作するようにしています。
NDMFがプロジェクトにない場合、独自のビルドプロセッサにより自動ビルドを行います。
詳細は VRChatワールド・ゲームビルドの動作 をご確認ください。
注意事項🔗
前述した通り、本ツールでは「Mesh Filter / SkinnedMesh Renderer の SharedMesh 」を変更します。 つまり、同様に SharedMesh を変更したり、 SharedMesh のメッシュを編集するような拡張機能とは相性が悪い可能性があります。
その場合、事前にメッシュをエクスポートしてから他の拡張機能を使うことをお勧めします。