チュートリアル🔗
最低要件
バージョン: Unity 2022.3 以降
パイプライン: BRP/URP/HDRP
パッケージ: Unity Mathematics 1.2.1 以降
(VRChatモード) パッケージ: VRChat SDK
(VRChatモード) パッケージ: NDMF (Non-Destructive Modular Framework) 1.7.0 以降
動作確認済みの環境🔗
同一のOS・HW構成であってもディスプレイ構成・グラフィックスドライババージョン・Unity環境設定等の環境要因で特定の不具合や動作不良を引き起こす可能性があります。
また、VRCSDKバージョン・NDMFバージョンの相違によってNDMFモードの動作に問題が発生する場合があります。
| PC1 | PC2 | |
|---|---|---|
| UnityVersion | 2022.3.22f1 6000.0.30f1/42f1/62f1 |
2022.3.22f1(Apple silicon) 6000.0.62f1(Apple silicon) |
| OS | Windows11 24H2 | macOS Sequoia 15.6 |
| CPU | AMD Ryzen9 9950X3D | Apple M4 |
| GPU | GPU: NVIDIA RTX 5090 iGPU: Radeon Graphics |
M4 iGPU |
インストール🔗
ダウンロード・インストール・使用時に問題が発生した方へ
ダウンロードでトロイの木馬判定される事象が確認されております。
また、ツール使用時に一部環境でのみ発生する問題が確認されております。
恐れ入りますが問題が発生したらトラブルシューティングをご確認ください。
-
EreMorph
配布サイトから EreMorph_v.x.x.x.zip をダウンロードします。解凍し内部の EreMorph_v.x.x.x.unitypackage を開いてUnityプロジェクトにインポートします。
公式以外から入手したファイルを使用しないでください
リンク先以外では本ツールは配布していません。 上記以外で配布されている物は、許可なく第三者の手によって二次配布されているものです。 上記以外のリンクから入手したUnityPackageには悪意あるスクリプトが挿入されている危険性があります。
-
パッケージ: Unity Mathematics (外部リンク)
VRChat SDKをインストールしている場合、一緒にインストールされているため問題ない想定です
本ツールではSkinnedMeshの変換にUnity Mathematicsを使用しています。
本パッケージがインストールされていない場合、SkinnedMeshはレストポーズ以外では思ったように動かせません。もしプロジェクトにUnity Mathematicsがインストールされていない場合、自動インストールダイアログが表示されます。 (1)
-
(VRChatモード) パッケージ: VRChat SDK
VRChat SDKがインストールされている場合、本ツールをVRChatモードで動かすことが可能です。 VRChatモードでは本コンポーネントを付けたままでもアップロード可能になりますが、意図しないメッシュとなる恐れがあるため可能な限り以下NDMFをインストールすることを推奨いたします。
-
(VRChatモード) パッケージ: NDMF (Non-Destructive Modular Framework) (外部リンク)
ModularAvatar や lilycalinventory を使っている人は既にインストールされています。
VRChatアバター用の非破壊エディタープラグインを構築するためのフレームワークです。 本パッケージがインストールされていると、NDMFモードを指定し、アバターアップロード時の動作を変更できます。
使い方🔗
-
ツールの割当
Mesh Renderer / Skinned Mesh Renderer のあるオブジェクトに Add Component から EreMorph 若しくは EreMorph (VRChat)を追加します。
-
EreMorph
ランタイムモード: Unity です。
VRCSDKが無いプロジェクトでは強制的に本コンポーネントが割り当てられます。基本的にメッシュを出力して使用することを想定しておりますが、Playモードでもコンポーネントが維持されるため、Playモードで修正したり写真撮影等にも使用できます。
-
EreMorph (VRChat)
ランタイムモード: VRChat です。
Playモードでは本コンポーネントが削除されます。これによりコンポーネントがある状態でもVRChatへアップロード出来ます。
NDMFモードを変更することで自動でメッシュエクスポート→割当が行われます。
Information
コンポーネントの種類は割当後もランタイムモードを変更することでデータを維持したまま切り替え可能です。
-
-
モーフユニットの追加 / モーフデータアセットの割当
EreMorphではモーフユニット(変形情報)をデータアセットとして Assets/EreMorph_Assets に保管します。
モーフユニットを追加すると自動的に新規作成・割当されます。
新規作成時、初期プリセット追加が有効の場合は特定のグループ・ユニットが追加されグループがPrebakeに指定されます。
初期プリセットの内容
-
PreBakeGroup(PreBakeUnit)
自動で ベースメッシュにベイク(Prebake) に指定されています。
Prebakeに指定されたグループ内部のモーフユニットはシェイプキーとして書き込まれず、その時のウェイトで素体として書き込まれます。
よって、貫通修正や形状変更等「ベースの形を変更する」場合はこの内部のモーフユニットを変更します。
-
BlendShapeUnit
通常のモーフユニットです。シェイプキーとして書き込まれます。
過去に作成したアセットを使うことでモーフユニットデータを流用・共有できます。
対象メッシュと互換性のあるMorphDataアセット を開くと、コンポーネント割当時のMeshプロパティと同じ対象メッシュを持つデータアセット一覧を表示できます。
-
-
(Option)PreBakeユニットの設定

PreBakeに設定したモーフユニット・グループはシェイプキーとして書き込まれず、ベース素体の変更として書き込まれます。
PreBakeに設定したモーフユニットを編集して貫通修正や形状変更を行い、それ以外のモーフユニットでシェイプキーを作成します。
PreBakeに設定したユニットはオプションで他のモーフユニット編集中にウェイトを保持し続けます。これにより形状変更後の形から各モーフユニットでシェイプキーの動きを作る流れが出来上がります。
-
モーフユニットの編集

任意のモーフユニットの編集ボタンを押下すると、編集モードに入ります。
Tipsが有効であれば、編集ウィンドウに簡単な操作方法が表示されます。
編集ウィンドウはオプションからシーンビュー上とウィンドウ表示で切り替えできます。
-
(Option)グループモードの変更 / ビルド・エクスポート設定の変更

グループ内のモーフユニットを一つのシェイプキーにマージする場合はマージモードを変更します。
マージモードの詳細

NDMFビルド/メッシュ書き出し設定 の設定を変更し、シェイプキーを上書きしたりシェイプキーのウェイト値を適用することが可能です。
-
(Option)シェイプキーアニメーションの設定
NDMFを用いてアバタービルドを行う場合、他のツールを用いてアニメーション作成・FX登録を自動化するのが望ましいです。
→ 一例インポート/BlendShape同期タブのBlendShape一覧を同期を押下すると、一時的にEditメッシュに空のシェイプキーが追加されます。
-
アバターアップロード / メッシュエクスポート

最終的にこの画像のようにPrebakeで元の形を修正し、それ以外でシェイプキーを作ります。
なお基本的にシェイプキーとして書き込まれるモーフユニットは、書き込まれる時ウェイトが0になります。
正しくはSkinnedMeshRendererのBlendShapeWeightを参照するため、過去にそのIndexのウェイトが変更されている場合0じゃない場合もある
そのため、 メッシュ書き出し時にウェイトが変わるため今と見た目が変わるモーフユニット・グループ は警告マーク「⚠️」が表示されます。
ベイクするモーフユニットとして指定されているか、ウェイトが0であるか、シェイプキーにウェイトを適用するオプションが有効であれば表示されなくなります。
意図しない変形を防ぐため、この表示は無い状態でアップロードすることが望ましいです。
編集モードの操作🔗
編集モードでは
クリック で単一の頂点を選択し
ドラッグアンドドロップ で矩形選択することが出来ます。
Ctrl を押しながらで選択・非選択の切り替え、
Shift を押しながらで追加選択が行えます。
複数頂点を選択している際には
Pivot/Center 切り替え(ショートカット: Z)
で移動原点を最後に選択した頂点と中心で変更できます。
移動 (ショートカット: W)
回転 (ショートカット: E)
スケール (ショートカット: R)
のツールを変更可能です。
上記ショートカットは普通のUnityでも使えるよ
右クリックでコンテキストメニューを表示可能です。 選択頂点・選択頂点から半径内のウェイトがある頂点・すべての頂点 を 編集開始時の位置・メッシュの初期位置に戻すことが出来ます。
ハンドルを持った状態で マウスホイールを動かす と 影響フィールドの半径を調整できます。
表面距離モード のとき、ハンドルを持った状態で Alt(optionキー)を押しながらマウスホイールを動かす と 接続しきい値 ε (m) を微調整できます。
ハンドルの移動、半径の調整、しきい値の調整 これらは全てShiftを押しながらだと更に細かく動かせます。
ドラッグを維持オプションを有効化していると、頂点移動後に各編集設定を変更してリアルタイムに計算モードやシンメトリを反映させることが出来ます。
ドラッグを維持オプションを有効化中は、選択頂点の変更やツール変更で位置を確定できます。
頂点ウェイトを超えた編集について
本ツールで頂点を動かしても、その頂点に紐づいた頂点ウェイトはそのままです。
そのためウェイトのあるボーンを超えた編集は、想定した動きとならない場合があります。
「元のウェイトが乗ってるボーンから別のボーンに全て移動させたい」場合であれば頂点ウェイトリマッピングで修正できるためお試しください。
衣服によってはRotationConstraintで制御していたりするので気をつけてください。
NDMFビルドでシェイプキーを動かすには🔗
将来的にはモーフユニット個別にコントロールタイプ等を指定し内部で完結させたいですが、現状でも他ツールと併用して自動化出来ます。
例として lilycalinventory の LI SmoothChanger を用いた設定方法をここに記します。
することは単純で
LI SmoothChanger をアバター内の好きなオブジェクトに追加し、「BlendShapeの切り替え」をメッシュを指定せずに設定する。
メッシュを指定してしまうとメッシュのシェイプキーしか設定できませんが、空であればテキスト指定が行えます。
2.0.0以降
EreMorph 2.0.0以降では一時的にシェイプキー一覧を更新するボタンがあるため、これを用いればメッシュ指定後も指定可能です。
設定後に
- メッシュを指定 => そのメッシュの一致するシェイプキー
- メッシュは空のまま => アバター全体で一致するシェイプキー
が動きます。

注意事項🔗
本ツールの根本としてコンポーネントを割り当てると「MeshFilter/SkinnedMeshRendererのMeshプロパティを複製した編集用のメッシュに置き換える」という動作があります。
そのため同様にMeshプロパティを変更するツールや、Meshを編集するツール、そういった動作をするNDMFプレビューを行うと正常に動作しなくなる可能性があります。
そのようなツールと併用する場合、NDMFプレビュー動作のあるものは動作を切り、無いものはメッシュをエクスポートして本ツールの影響を除外してから他のツールを使用してください。

