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