27 KiB
Other Languages
MeshSync DCC Plugins
DCC ツール上のモデルの編集をリアルタイムに Unity に反映させるためのパッケージ:
MeshSync と連携するための DCC プラグインのソースをこのリポジトリで提供します。
MeshSync と MeshSyncDCCPlugin が連携することで、ゲーム上でどう見えるかをその場で確認しながらモデリングすることができます。
フィーチャー
Maya | 3ds Max | MotionBuilder | Blender | Modo | Metasequoia | |
---|---|---|---|---|---|---|
ポリゴンメッシュの同期 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
カメラの同期 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
ライトの同期 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
両面 (Double-sided) メッシュ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
負のスケール | 🔺 | 🔺 | 🔺 | 🔺 | 🔺 | |
マルチ UV | ✔️ | ✔️ | ||||
Scene Cache を出力 | ✔️ | ✔️ | ✔️ | ✔️ | ||
ポリゴン以外の形状データ |
注意
- 負のスケール:一部の DCC ツールにサポートされています.
XYZ 全てが負の場合は正しく同期できますが、X だけ、Y だけ負のような場合も Unity 側では XYZ 全てが負として扱われてしまいます。 DCC ツールによっては、この場合でもメッシュを同期できる Bake Transform オプションがありますが、このオプションを使うと、 デフォーマの情報が失われます。
サポートされている DCC ツール
Windows | Mac | Linux | |
---|---|---|---|
Maya 2018 | ✔️ | ✔️ | ✔️ |
Maya 2019 | ✔️ | ✔️ | ✔️ |
Maya 2020 | ✔️ | ✔️ | ✔️ |
Maya 2022 | ✔️ | ✔️ | ✔️ |
Maya LT 2019 + | ✔️ | ❌ | |
3ds Max 2018 | ✔️ | ❌ | ❌ |
3ds Max 2019 | ✔️ | ❌ | ❌ |
3ds Max 2020 | ✔️ | ❌ | ❌ |
3ds Max 2021 | ✔️ | ❌ | ❌ |
MotionBuilder 2017 | ✔️ | ❌ | ✔️ |
MotionBuilder 2018 | ✔️ | ❌ | ✔️ |
MotionBuilder 2019 | ✔️ | ❌ | ✔️ |
MotionBuilder 2020 | ✔️ | ❌ | ✔️ |
Blender 2.83 | ✅ | ✅ | ✅ |
Blender 2.90 | ✅ | ✅ | ✅ |
Blender 2.91 | ✅ | ✅ | ✅ |
Blender 2.92 | ✅ | ✅ | ✅ |
Blender 2.93 | ✅ | ✅ | ✅ |
Blender 3.0 | ✅ | ✅ | ✅ |
Blender 3.1 | ✅ | ✅ | ✅ |
Modo 12 | ✔️ | ✔️ | ✔️ |
Modo 13 | ✔️ | ✔️ | ✔️ |
Metasequoia 4.x | ✔️ | ✔️ |
メモ:
- ✔️ : 対応済み
- ❌ : 対応することが不可能 (その OS で、DCC ツールが動作しないなど)
- empty : これから対応する可能性がある
DCC プラグインのインストール方法
MeshSync の環境設定で、
いくつかのDCCツールに簡単にインストールできます。
または、手動インストールもできます。
Building
- DCC プラグインをビルド (現在英語のみ)
License
現在整理中
このドキュメントは現在整理中です。 ご参考までに、前のバージョンのドキュメントは下記においてあります。
使い方
Maya
Maya 2016, 2016.5, 2017, 2018, 2019 + Windows, Mac, Linux (CentOS 7) で動作を確認しています。
- インストール:
- Windows: %MAYA_APP_DIR% が設定されている場合はそこに、ない場合は %USERPROFILE%\Documents\maya (←を Explorer のアドレスバーへコピペで直行) に modules ディレクトリをそのままコピー。
- 2016 以前の場合はバージョン名のディレクトリへコピーします。(%MAYA_APP_DIR%\2016 など)
- Mac: /Users/Shared/Autodesk/modules/maya に UnityMeshSync ディレクトリと .mod ファイルをコピー。
- Linux: ~/maya/(Maya のバージョン) に modules ディレクトリをそのままコピー。
- Windows: %MAYA_APP_DIR% が設定されている場合はそこに、ない場合は %USERPROFILE%\Documents\maya (←を Explorer のアドレスバーへコピペで直行) に modules ディレクトリをそのままコピー。
- Maya を起動し、Windows -> Settings/Preferences -> Plug-in Manager を開き、MeshSyncClient の Loaded にチェックを入れてプラグインを有効化します。
- UnityMeshSync シェルフが追加されているので、それの歯車アイコンで設定メニューを開きます。
- "Auto Sync" がチェックされている間は編集が自動的に Unity 側に反映されます。Auyo Sync が無効でも "Manual Sync" ボタンを押すことで手動で反映できます。
- Animations の Sync を押すと、開始フレームから終了フレームまで時間を進めつつアニメーションをベイクして Unity に送ります。
- "Export Cache" で全フレームのデータをファイルにエクスポートできます。エクスポートしたファイルは Unity で再生できます。より詳しくは Scene Cache を参照ください。
- 歯車アイコン以外のボタンはそれぞれ手動同期、アニメーション同期相当のボタンになっています。
- ポリゴンメッシュはスキニング/ボーン (SkinCluster) と BlendShape もそのまま Unity へ持ってこれるようになっています。
- これら以外のデフォーマも適用を試みますが、前後に SkinCluster があった場合などに正しく適用されない可能性があります。
- "Bake Deformers" をチェックすると、デフォーマを全て適用した結果を同期します。Maya 側と Unity 側で Mesh の内容がほぼ一致するようになりますが、代償として Skinning や Blendshape の情報が失われます。
- "Bake Transform" をチェックすると、位置/回転/スケールを Mesh の頂点に適用し、Unity 側の Transform は初期値になります。pivot が絡む複雑な Transform は Unity では再現できないことがありますが、そのような場合でもこのオプションを使うと Mesh の見た目は一致するようになります。このオプションは "Bake Deformers" が有効なときのみ有効です。
- インスタンシングは対応していますが、スキニングされたメッシュのインスタンスは現在未対応です (Unity 側では全て元インスタンスと同じ位置になっていまいます)。
- MEL にもコマンドが登録されており、全ての機能に MEL 経由でアクセスできるようになっています。こちらの詳細はソースコードを参照ください。
Maya LT
現在 Windows のみ対応で、Maya LT 2019 + Windows で動作を確認しています。Maya LT は本来外部プラグインをサポートしないため、問題が起きる可能性が高いことに留意ください。Maya LT 側のマイナーバージョンアップでも互換性が失われる可能性が考えられます。
パッケージは別になっているものの、インストールや使い方は 非 LT の Maya と同じです。
3ds Max
3ds Max 2016, 2017, 2018, 2019, 2020 + Windows で動作を確認しています。
- インストール:
- MeshSyncClient3dsMax.dlu をプラグイン用パスとして登録されているディレクトリにコピー
- プラグイン用パスは max 内の Customize -> Configure User and System Paths -> 3rd Party Plug-Ins の Add で追加できます
- デフォルトで用意されているパス (C:\Program Files\Autodesk\3ds Max 2019\Plugins など) でもおそらく機能しますが、デフォルトとそれ以外で別のパスを用意しておくことをおすすめします
- MeshSyncClient3dsMax.dlu をプラグイン用パスとして登録されているディレクトリにコピー
- インストール後、メインメニューバーに "UnityMeshSync" が追加されているので、それの "Window" から設定ウィンドウを開けます。
- メニューバーを編集する場合、Action に "UnityMeshSync" カテゴリが追加されているので、そちらから MeshSync の機能にアクセスできます
- "Auto Sync" がチェックされている間は編集が自動的に Unity 側に反映されます。Auyo Sync が無効でも "Manual Sync" ボタンを押すことで手動で反映できます。
- Animations の Sync を押すと、開始フレームから終了フレームまで時間を進めつつアニメーションをベイクして Unity に送ります。
- "Export Cache" で全フレームのデータをファイルにエクスポートできます。エクスポートしたファイルは Unity で再生できます。より詳しくは Scene Cache を参照ください。
- モディファイアは大体対応していますが、対応できないケースもあります。以下のルールに従います。
- Morph も Skin もない場合、全てのモディファイアを適用した状態で同期します。
- Morph か Skin がある場合、その一つ前までのモディファイアを適用した状態で同期します。
- Morph / Skin が複数ある場合、一番下のものが基準として選ばれます。
- Morh と Skin は Unity 側にそのまま Blendshape / Skin として同期します。
- Unity 側では常に Blendshape -> Skin の順番で適用されるため、Max 側で順番が逆だと意図しない結果になる可能性があります。
- "Bake Modifiers" をチェックすると、モディファイアを適用した結果を送ります。Max 側と Unity 側で Mesh の内容がほぼ一致するようになりますが、代償として Skinning や Blendshape の情報が失われます。
- "Bake Transform" をチェックすると、位置/回転/スケールを Mesh の頂点に適用し、Unity 側の Transform は初期値になります。pivot が絡む複雑な Transform は Unity では再現できないことがありますが、そのような場合でもこのオプションを使うと Mesh の見た目は一致するようになります。このオプションは "Bake Modifiers" が有効なときのみ有効です。
- "Use Render Meshes" をチェックすると、レンダリング用の Mesh からデータを抽出します。例えば Turbo Smooth は viewport 用とレンダリング用で別の Iteration を指定できますが、レンダリング用の設定が Unity 側に反映されるようになります。また、Fluid などのレンダリング時にしか現れない Mesh や、Space Warps なども正しく反映されるようになります。
- "Ignore Non-Rebderable" をチェックすると、renderable ではない Mesh を無視します。例えばボーンの viewport の表示の四角錐のような形状などが renderable ではない Mesh に該当します。
- Max script にもコマンドが追加されており、全ての機能に Max script 経由でアクセスできるようになっています。こちらの詳細はソースコードを参照ください
MotionBuilder
MotionBuilder 2016, 2017, 2018, 2019 + Windows, Linux (CentOS 7) で動作を確認しています
- インストール:
- MeshSyncClientMotionBuilder.dll をプラグイン用パスとして登録されているディレクトリにコピー
- プラグイン用パスは MotionBuilder 内の Settings -> Preferences -> SDK メニューから追加できます
- MeshSyncClientMotionBuilder.dll をプラグイン用パスとして登録されているディレクトリにコピー
- インストール後、Asset Browser 内の Templates -> Devices に UnityMeshSync というオブジェクトが追加されているので、それをシーンに追加します
- Navigator 内の Devices -> UnityMeshSync を選択することで各種設定や機能にアクセスできます
- "Auto Sync" がチェックされている間は編集が自動的に Unity 側に反映されます。Auyo Sync が無効でも "Manual Sync" ボタンを押すことで手動で反映できます
- Animations の Sync を押すと、開始フレームから終了フレームまで時間を進めつつアニメーションをベイクして Unity に送ります。
- ポリゴンメッシュはスキニング/ボーンと BlendShape もそのまま Unity へ持ってこれるようになっています。
Blender
Blender 2.79b, 2.80 + Windows, Mac, Linux (CentOS 7) で動作を確認しています。開発版の Blender はサポート外で、ほぼ動作しません。
実装の都合上、Blender のバージョンが上がると互換性が失われる可能性が高い ことにご注意ください。Blender version issue で最新の状況や hot fix を提供予定です。
- インストール:
- Blender 側で File -> User Preferences -> Add-ons (2.80 以降では Edit -> User Preferences) を開き、画面下部の "Install Add-on from file" を押し、プラグインの zip ファイルを指定します。
- 古いバージョンをインストール済みの場合、事前に削除しておく必要があります。Add-ons メニューから "Import-Export: Unity Mesh Sync" を選択して Remove した後、blender を再起動 してから上記手順を踏んでください。
- "Import-Export: Unity Mesh Sync" が追加されるので、チェックを入れて有効化します。
- MeshSync パネルが追加されるので、そちらから設定や手動の同期を行います。
- 2.8 系ではパネルの場所がややわかりにくい場所になっています。右スクリーンショットを参照ください。
- "Auto Sync" がチェックされている間は編集が自動的に Unity 側に反映されます。Auyo Sync が無効でも "Manual Sync" ボタンを押すことで手動で反映できます。
- Animations の Sync を押すと、開始フレームから終了フレームまで時間を進めつつアニメーションをベイクして Unity に送ります。
- "Export Cache" で全フレームのデータをファイルにエクスポートできます。エクスポートしたファイルは Unity で再生できます。より詳しくは Scene Cache を参照ください。
- ポリゴンメッシュはスキニング/ボーン (Armature) と BlendShape もそのまま Unity へ持ってこれるようになっています。Mirror デフォーマも対応しています。これら以外のモディファイアは無視されます。
- "Bake Modifiers" をチェックすると、モディファイアを全て適用した結果を同期します。Blender 側と Unity 側で Mesh の内容がほぼ一致するようになりますが、代償として Skinning や Blendshape の情報が失われます。
- "Bake Transform" をチェックすると、位置/回転/スケールを Mesh の頂点に適用し、Unity 側の Transform は初期値になります。pivot が絡む複雑な Transform は Unity では再現できないことがありますが、そのような場合でもこのオプションを使うと Mesh の見た目は一致するようになります。このオプションは "Bake Modifiers" が有効なときのみ有効です。
- "Curves as Mesh" をチェックすると、Curve や Text などポリゴンに変換可能なオブジェクトを変換して同期します。
Modo
Modo 12, 13 + Windows, Mac, Linux (CentOS 7) で動作を確認しています。
- インストール:
- Modo 内の System -> Add Plug-in で MeshSyncClientModo.fx を指定
- 古いバージョンをインストール済みの場合、古いプラグインをロードしていない状態で再度上記手順を踏む必要があります。プラグインがロードされるタイミングは主に下記 view (Application -> Custom View -> UnityMeshSync) を表示したタイミングなので、view を出していない状態で一度 modo を終了、再度起動、プラグインをインストール、とすると確実です。
- インストール後は新たな View が追加されており、ここから各種設定や機能にアクセスできます (Application -> Custom View -> UnityMeshSync)
- "Auto Sync" がチェックされている間は編集が自動的に Unity 側に反映されます。Auyo Sync が無効でも "Manual Sync" ボタンを押すことで手動で反映できます
- Animations の Sync を押すと、開始フレームから終了フレームまで時間を進めつつアニメーションをベイクして Unity に送ります。
- Mesh Instance や Replicator も部分的にサポートしています。
- ポリゴンメッシュはスキニング / Joint と Morph も Unity へ持ってこれるようになっていますが、デフォーマの扱いには注意が必要です。
- MeshSync が解釈できるデフォーマは Joint + Weight Map 方式のスキニング、および Morph のみです。それ以外のデフォーマは無視されます。
- "Bake Deformers" をチェックすると、デフォーマを全て適用した結果を送ります。複雑なデフォーマ構成であっても Unity 側の Mesh の内容がほぼ一致するようになりますが、代償としてスキニングや Morph/Blendshape の情報が失われます。
- "Bake Transform" をチェックすると、位置/回転/スケールを Mesh の頂点に適用し、Unity 側の Transform は初期値になります。pivot が絡む複雑な Transform は Unity では再現できないことがありますが、そのような場合でもこのオプションを使うと Mesh の見た目は一致するようになります。このオプションは "Bake Deformers" が有効なときのみ有効です。
- Mesh Instance や Replicator のスキニングは正しく Unity 側に反映できません。"Bake Deformers" を使う必要があります。
- コマンドからも MeshSync の機能にアクセスできます。unity.meshsync.settings で設定の変更、unity.meshsync.export でエクスポートできます
- "Export Cache" で全フレームのデータをファイルにエクスポートできます。エクスポートしたファイルは Unity で再生できます。より詳しくは Scene Cache を参照ください。
Modo は 13 以降 Modo Bridge for Unity という機能が搭載されており、Unity に直接 Mesh や Material を送ることができるようになっています。MeshSync と機能的に近い部分もありますが、以下のような違いがあります。(2019/04 現在)
- Modo Bridge は Modo <-> Unity の双方向の同期をサポートします。MeshSync は Modo -> Unity の一方向のみをサポートします。
- MeshSync は Replicator、Mesh の Skinning/Morph、アニメーションを同期できます。Mood Bridge は現状これらはサポートしていません。
- MeshSync は できるだけ FBX 経由で Unity にデータを持っていった時と近い結果になるように努めています。一方、Modo Bridge では座標系が異なる (Z 方向が反転する)、Mesh のインデックスが展開されている (1000 triangles のモデルは 3000 頂点になっている) などの顕著な違いが出ます。
メタセコイア
Windows 版 3 系と 4 系 (32bit & 64bit)、Mac 版 (4 系のみ) に対応しています。3 系はたぶん全てのバージョンに対応していますが、4 系は 4.6.4 以上である必要があります。(このバージョン以上でないとボーンの出力がサポートできないため) また、4.7 系以降用は dll が別になっています。これは 4.7 でボーンの仕様が変わり、プラグインの互換性が失われたためです。4.7 ではモーフの出力にも対応しています。
- インストール:
- メタセコイア側で Help -> About Plug-ins を開き、ダイアログ左下の "Install" からプラグインファイルを指定します。ちなみにプラグインのタイプは Station です。
- 古いバージョンをインストール済みの場合、事前に手動で削除しておく必要があります。メタセコイアを起動していない状態で該当ファイルを削除、または直接新しい dll で置き換えてください。
- インストール後 パネル -> Unity Mesh Sync が追加されるのでこれを開き、"Auto Sync" をチェックします。
- "Auto Sync" がチェックされている間は編集が自動的に Unity 側に反映されます。Auyo Sync が無効でも "Manual Sync" ボタンを押すことで手動で反映できます。
- "Sync Camera" をチェックすると、パースペクティブビューのカメラを同期します。"Camera Path" が Unity 側のカメラのパスになります。
- "Import Unity Scene" を押すと現在 Unity で開かれているシーンをインポートすることができます。インポートしたシーンの編集もリアルタイムに反映可能です。
- ミラーリング、スムーシングは Unity にも反映されます。
- ただし、ミラーリングの "左右を接続した鏡面" は非サポートです。
- メタセコイアで非表示のオブジェクトは Unity でも非表示になります。非表示のオブジェクトはメッシュの内容は送られないので、シーン内にオブジェクトが増えて同期が重くなってきた場合適切に非表示にすることで同期も速くなるはずです。
- マテリアルは Unity には反映されませんが、マテリアル ID に応じて適切にサブメッシュに分割されます。
- サブディビジョンやメタボールはフリーズするまで Unity には反映されません。
- メタセコイア 4 系でサポートされた法線の編集は "Sync Normals" にチェックを入れることで反映できます。
- メタセコイア 4 系でサポートされたボーンは "Sync Bones" にチェックを入れることで反映できます。 "Sync Poses" にチェックを入れると "スキニング" で設定したポーズも反映します。
関連
- NormalPainter: Unity 上で法線を編集できるようにするツール
- BlendShapeBuilder: Unity 上で BlendShape を構築できるようにするツール