はじめまして。株式会社HYPER CUBEの前田と申します。 私は現在、自社サービス「トモニ」という高齢者向け対話アプリのUnity開発をしている傍ら、趣味でBlenderをいじっております。 弊社でも今後のサービス展開を見据え、UnityとBlenderの連携について知見をためる必要があると感じ、このお題を選ばせていただきました。
本記事では筆者が躓いた点や実際の動作(アニメーションや複数のシェーダー)を紹介するため、詳しい導入方法はこちらをご参照ください。 本来であればGeometry Nodesや物理演算等も試したいところですが、時間が限られているのでまた次回に。
環境
- Windows 11 Pro
- Blender 3.2.1
- Unity 2021.3.2f1
- MeshSync 0.17.1-preview
- MeshSync DCC Plugins 0.17.0-preview
MeshSyncとは?
MeshSyncDCCPlugins と連携し、 MeshSync は DCC ツールでのモデルの編集をリアルタイムに Unity に反映するためのパッケージです。 ゲーム上でどう見えるかをその場で確認しながらモデリングすることを可能にします。 (引用:公式ドキュメント)
本記事においてDCCツールはBlenderを用いますが、他にも3DSMaxやMayaとも連携できるそうです。
なぜリアルタイム反映が必要か
簡潔に述べると、「Blenderでの見た目とUnityでの見た目が異なる」からです。 詳しくはこちらの記事で紹介されていますが、牛丼でも吉野家と松屋で味が違うように、BlenderとUnityでシェーダーが異なるので見た目も変わるよね、ってことらしいです。
例えばワールド作成をする際、Blenderで何十時間も作りこんだモデルをいざUnityへ持っていったら想定していた見た目と全然違う。。なんてことになります(筆者経験談) そんなことにならないためにも、Blenderで編集しつつ、最終アウトプットであるUnity側でも随時確認する必要があるわけです。
Unityの設定で躓いた部分
Package ManagerからMeshSync、MeshSync DCC Pluginsを追加する際、それぞれのバージョンが合わずにインストールされました(0.17.0-previewと0.13.1-preview)。 おそらく、Add package from git URL…で指定したURLが原因だと思われますが、ここが合わないとエラーになるので留意してください。(公式:インストールについて) ちなみに筆者はそれぞれ0.17.1-previewと0.17.0-previewで動作したので、パッチバージョンが異なっても大丈夫なようです。
Blenderの設定で躓いた部分
AutoSyncした際に、どのUnityプロジェクトとsyncしているか指定されていない旨のエラーが発生しました。 Preferences > Add-ons > Import-Export:Unity Mesh Sync内のProject SettingsにてSyncしたいUnity ProjectのPathを正しく指定すれば解決します(確か初期設定ではc:のみの指定でした)。
実際に動かしてみた
以下、それぞれBlenderのMaterialPreviewとUnityのSimulatorで確認した様子になります。
マテリアルなしのモデル (左:Blender MaterialPreview、右:Unity Simulator)

マテリアル(BaseColorのみ)を付与したモデル (左:Blender MaterialPreview、右:Unity Simulator)

Principled BSDFの中でも、BaseColorのみの変更ならBlender-Unity間でマテリアルが引き継がれているように見えます。
アニメーションを追加したモデル (左:Blender MaterialPreview、右:Unity Simulator)
Blender側でアニメーションを追加したものが上の動画になります。 シェーダーはPrincipled BSDFのBase Colorを追加したのみで、アニメーションも問題なくUnityに引き継がれています。
Emissionを追加したモデル (左:Blender MaterialPreview、右:Unity Simulator)

Principled BSDFでEmissionの値を変えると、BaseColorのみの変更とは少し明るく光を放っている印象ですが、黄色い球の光がボックスに反映されていないようです。
Transmissionを追加したモデル (左:Blender MaterialPreview、右:Unity Simulator)

TransmissionはIORと組み合わせてガラスの質感を表すものになります。 Blenderではビー玉のようにBoxの枠が透け、なおかつ屈折していますが、Unityでは反映されていません。 そのため別途Unityでマテリアル作成する必要がありそうです。
GlassBSDFを追加したモデル (左:Blender MaterialPreview、右:Unity Simulator)

GlassBSDFを適用するとTransmission同様、BlenderではBoxの枠がビー玉のように透けて屈折しているのに対し、Unityでは反映されておりません。
まとめ
MeshSyncはまだプレビュー版ですが、BlenderとUnityでコンテンツ制作する身としては確認のために逐一エクスポートする手間が省け、色・形・アニメーションがリアルタイムに確認できる、非常に有効なプラグインだと思います。 特に弊社のように、アバターをはじめとする3D開発をする場合はツールが多岐にわたるため、エンジニア・デザイナーの連携を補強するプラグイン等々を取り入れていくことも重要な課題かもしれませんね、