Blender での使い方
プラグインをインストールすると、上記のように同期のコントロールが MeshSync パネルに表示されます。ほとんどのオプションの用途はその名前と同じです。
オプション | 説明 |
---|---|
Bake Modifiers | Blender と Unity の間での見た目を一致するために、すべてのモディファイアを適用した後に結果を同期するオプション。 詳細については、Unity で同期可能なプロパティを参照してください。 |
ボタン | 説明 |
---|---|
Auto Sync | メッシュの変更を Unity に自動的に反映するトグル。 |
Manual Sync | Auto Sync が非アクティブの場合、Manual Sync ボタンでメッシュの変更を反映する。 |
Animation → Sync | 最初のフレームから最後のフレームまでタイマーを進めることでアニメーションをベイクし、Unity に送信する。 |
Export Cache | .sc ファイルにエクスポートする。 MeshSync の SceneCache 機能を参照してください。 |
Material sync mode | マテリアルの扱い方。詳細は Material sync mode を参照してください。 |
Baking | ベイク・マテリアルのコピーを作成するためのオプション。詳細については、ベイク・マテリアルを参照してください。 |
Paths | 説明 |
---|---|
Unity Editors | Unity エディターのインストールフォルダーへのパス。 このパスは、Unity Hub の設定で確認できます。 |
Unity で同期可能なプロパティ
プラグインは、次のプロパティを Unity に直接送信します:
- ポリゴン メッシュのスキニング・ボーン (アーマチュア)
- ブレンドシェイプ
- ミラー デフォーマ
他のプロパティでは、Blender と Unity の間での見た目を一致するために Bake Modifiers を有効にする必要があります。 ただし、ベイクの結果として Unity でメッシュのプロパティが失われます。
双方向同期
プラグインのパネルで Auto-Sync をオンにすることで、Unity でのプロパティの変更を Blender に適用できます。
この機能は、Unity 内から Blender のプロシージャル生成パラメーターを変更するためのもので、Blender 3.0 以降が必要です。
Unity で編集可能なプロパティ
MeshSync は、Blender からのオブジェクトのカスタムプロパティとジオメトリノードの入力のを、Unity での MeshSyncServer のゲームオブジェクトと同期します。
必要に応じて、これらのプロパティを保存、表示、および編集するために MeshSyncServerLiveEditProperties コンポーネントが自動的に作成されます。
サポートされているプロパティのタイプは:
- 整数
- Float
- 整数の配列
- Float の配列
- 文字列 (読み取り専用)
Unity から DCC ツールへのメッシュの編集と同期
Unity で MeshSyncServer ゲームオブジェクト の Use Pro Builder オプションを有効にすると、メッシュを編集して Blender に送ることもできます。
これにより、Unity からジオメトリノードメッシュの入力をすぐに変更できます。
このオプションは、Unity プロジェクトに ProBuilder パッケージをインストールした場合にのみ表示されます。
Unity でのメッシュの表現方法により、Blender にメッシュを送り返すときにメッシュが三角形分割され、頂点グループやシェイプキーなどの一部のメッシュデータが失われます。
プラグインで Bake Modifiers オプションが有効になっている場合、Unity から Blender に送り返されるメッシュには、事前にモディファイアが適用され、Blender で削除されます。
Material sync mode
Unity での MeshSyncServer は常に、アクティブのレンダーパイプラインのデフォルトシェーダーを使ってマテリアルを作成します。
Blender からマテリアルをエクスポートするには、複数のオプションがあります:
Mode | 説明 |
---|---|
None | マテリアルの名前だけが Unity にエクスポートされ、デフォルトのマテリアルが作成されます。 そこでカスタムのマテリアルを使う為に、MeshSyncServer のマッピングでマテリアルをオーバーライドできます。 |
Basic | マテリアルは、限定的に Unity に同期されます。 詳細は ## Basic の Material sync mode](#basic-の-material-sync-mode)を参照してください。 |
Basic の Material sync mode
MeshSync はアクティブのマテリアル出力ノードを探し、それに繋がった BSDF をエクスポートします。
アクティブの BSDF に割り当てられた色とテクスチャがエクスポートされます。
滑らかさとメタリックは、アクティブのレンダーパイプラインに応じて、Unity が必要とするマップにベイクされます。
MeshSync は、ビルトインのレンダーパイプライン、URP および HDRP をサポートしています。
エクスポートされたすべてのテクスチャとベイク・マップは、MeshSyncServer の Asset Dir に設定されたパスに保存されます。
サポートされているノードとその扱い方のリストは下記となります。
ノード | エクスポート |
---|---|
マテリアル出力 | 繋がった BSDF とディスプレイスメントがエクスポートされます。 |
BSDF ノード* | Color、Roughness、Metallic、Normal、Emission、Emission Strength のソケットがエクスポートされます。入力シェーダーノード (Mix シェーダーなど) を持つ BSDF ノードは完全にはサポートされておらず、その代わり最初に繋がった BSDF がエクスポートされます。 |
法線マップ | 法線の値がエクスポートされます。 法線マップは接線空間にある必要があります。 |
Image Texture | 画像はエクスポートされますが、テクスチャ座標はエクスポートされません。 Unity は UV0 を使用します。 |
ディスプレイスメント | 高さとスケールがエクスポートされます。 |
ベイク・マテリアル
Basic の Material sync mode はテクスチャまたは定数値である bsdf 入力のみをサポートします。 MeshSync には、プロシージャルマテリアルの同期を可能にするために、各オブジェクトのベイク・マテリアルのコピーを作成する機能があります。
オプション | 説明 |
---|---|
Objects to bake | シーン内のすべてのオブジェクト、または選択されたオブジェクトのみ(非表示のオブジェクトを含む)をベイクします。 |
Material channels to bake | ベイクするチャンネルを選択します。 |
Generate UVs | Off: オブジェクトに UV を使用します。 If needed: オブジェクトに使用可能な UV がない場合、UV を生成します。 Always: 既存の UV がある場合でも、常にベイク用の UV を生成します。 注意: これらの設定は、既存の UV を変更する可能性があります。 |
Apply modifiers | オブジェクトにすべてのモディファイアを適用し、ベイク用の UV 座標を正確にします。 注意:これは可逆的ではありません。このオプションを使用する前に、ファイルをバックアップしてください。 |
Deduplicate | オブジェクトのデータとモディファイヤが同じ場合、オブジェクト間でメッシュを共有します。すべてのモディファイヤで機能するとは限りません。 |
Realize instances | ジオメトリノードのインスタンスを実現して、ベイクに含めます。 |
Run modal | Blender がフリーズしないように定期的に Blender の UI を再描画します。 |
Bake to individual materials | ベイクを実行します。 |
Restore original materials | ベイクされたマテリアルのコピーを削除し、シーン内のすべてのオブジェクトに元のマテリアルを割り当てます。 |
Baked texture path | ベイクしたテクスチャを保存するためのフォルダ。 |
#
テクスチャの Dimension のオプション | 説明 |
---|---|
Pixels | ピクセル単位のベイクされたテクスチャのサイズ。 Baked texture size: ピクセル単位のベイクされたテクスチャのサイズ。 |
Texel density | テクセルの密度に基づいてテクスチャの Dimension を設定します。 Texels / World Unit:Blender のワールド空間のポリゴンの領域に対して、ベイクされたテクスチャが持つべきピクセルの数。UV マップ内の各ポリゴンの面積とワールド空間の面積の平均で計算されます。 Max texture size:高いテクセルの密度に対してのテクスチャの Dimension が大きくなりすぎないように制限をかけます。 Power of 2:テクスチャのサイズを次の 2 の累乗に増やします (最大テクスチャ サイズ設定の制限内)。 |
MeshSync は Material Output ノードに接続された BSDF ノードを検出し、BSDF の入力をベイクしようとします。BSDF が接続されていない場合、MeshSync は Material Output に入るベイク可能なデータをベイクします(色、法線、ラフネスのみがサポートされています)。 他のシェーダーノードを入力として受け取るシェーダーノード(Mix と Add Shader)はベイクされず、代わりに Fallback モードを使われます。
オブジェクトに UV がない場合、MeshSync は Blender の Smart UV Project のオペレーターで UV を生成します。
Blender のコンソールには、ベイク中の進行状況が表示されます。エスケープでベイクをキャンセルできます。キャンセルは即時ではなく、Run modal の場合にのみ機能します。
ベイク・マテリアルの例
このアプローチを使用して、次のプロシージャルマテリアルのノードグラフ:
がテクスチャにベイクされ、このマテリアルのノードグラフになりました。
次に、Unity にこれを同期してレンダリングすることができます。
ベイク・マテリアルのトラブルシューティング
問題 | 考えられる原因 |
---|---|
ベイクされたマップは黒 | 色々な原因が考えられます。オブジェクトの UV はアンラップされていますか? ベイクは有効な UV がなければ正しく機能しません。メタリックのマテリアルは正しくベイクされない場合があります。 |
ベイクされたマップが元のマテリアルと一致しない | マテリアルのノードグラフは Material Output ノードへの入力として BSDF を使用せず、Fallback のベイクモードを使用する必要がありました。 |
ジオメトリノードのインスタンスがない | マテリアルをベイクするには、すべてのモディファイアを適用する必要があります。ジオメトリノードのモディファイヤが適用されると、インスタンスが失われます。これを修正するには、Realize Instances ノードでインスタンスを実際のジオメトリにします。 |
アルファチャンネルがベイクされていません | アルファのベイクは現在サポートされていません。 |