この記事は、AEC and Related Tech Advent Calendar 2020 22日目の記事です。
https://adventar.org/calendars/5473
今年は、VRChat上で開催された3Dアバター・3Dモデルの展示会であるVirtualMarket4,、VirtualMarket5へ出展させていただきました。
VirtualMarket4 Default cube – DC-03 – Magenta-04
VirtualMarket5 Default cube – DC-03 – Red-01
どちらも最終的にはUnity上へモデルデータを持っていきVRChat用にセットアップするのですが、私達のブースの建物モデルは主にRhinocerosでモデリングしたものを使用しています。
Rhino建築モデルを何も考えずUnityへ入れると、パフォーマンス的に厳しいものになりやすく、VirtualMarketに入稿するためのモデルルール(オブジェクト数・ポリゴン数・マテリアル数など)にも引っかかるため、追加の作業を行い、Unityに適するデータにしていきます。
VirtualMarketへ入稿するためのモデルデータのセットアップとして記事は進めていきますが、基本的な考え方は、Unity一般、UnrealEngineなど他ゲームエンジンにも通じるものだと思います。
以下作業の流れです。
Rhinocerosのみだと上手く行かない部分があったので、RhinocerosとUnityの間にBlenderを挟んでいます。
1. Rhinoceros
モデリング → モデルのメッシュ化
2. Blender
モデルデータ整理
3. Unity
モデルをUnityで動かすためのセットアップ
1. Rhinoceros
モデリング
注意点をひとつだけメモ。厚みのない、一枚のサーフェスには表裏があります。
Unity標準マテリアルでは、表面しか描画されず裏面が表示されないので、ここでサーフェスの向きを確認しておくとよいです。
Dirコマンドでサーフェスの表・裏の確認、反転ができます。
壁などは、厚みのあるボリュームとしてモデリングすると安全かもしれません。
メッシュ化
NURBSモデルから、Unityが標準で扱えるメッシュモデルへ変換します。
メッシュ化する際のオプションによってモデルのポリゴン数、ファイル容量が大きく変わります。見た目がそこまで変化しない範囲で、できるだけ小さなポリゴン数を目指してパラメータを調整します。
対象のモデルを選択後、Mesh from surfaceコマンドです。
ここで設定してあげてもよいのですが、今回のモデルではこのスライダーを調整しても大して違いが生じなかったため、
Detailed Controlでのメッシュ化を行いました。
結論から言うと、今回のATAKAMOショップモデルでは、以下の3つのパラメータを調整することで、大きくポリゴン数を削っています。
・Mnimum edge length
ポリゴンを構成するエッジの最小長さです。モデルによるのでしょうが、今回は調整しながら100~入れてました。ここの数値を調整することでだいぶポリゴン数は減りました。
・Simple planes
単純な平面サーフェスのポリゴン数が減ります。
・Jagged seems
モデルによってここにチェックを入れると大幅にポリゴン数を減らすことができました。ただ、ポリゴンとポリゴンの境界がぴったり合わなくなることが起きやすくなるようなので、様子をみながら使用しましょう。