3DCoat 2021の習作として、乗合馬車(Omnibus)をモデリングしました。
Modeling機能に慣れる意味もあったため、いくつかどの部分でこの機能を使ったということを列挙していきます。
最終レンダリングは、NVIDIA社のOmniverse Createで行っています。
以下はOmniverseでのリアルタイムです。
作業の流れ(ワークフロー)
3DCoatでモデリングとテクスチャ作成を行い、fbx形式で形状をエクスポートします。
Omniverse上でfbxファイルをusd形式に変換し、シーンに取り込みました。
完全にモデリングが終わってからOmniverseに渡すのではなく、大雑把に形になってからの中盤でほぼ並列で作業しました。
Omniverse上では、fbxファイルをusd形式に変換する機能があります。
Omniverseはusdでシーンのすべての情報を管理することになります。
ただし、fbxから変換したusdファイルにはマテリアルの割り当てはされますが、マテリアルのパラメータやテクスチャ類は割り当てられていません。
(それ以前に、fbxフォーマット自体がPBRマテリアルに対応していません)
そのため、マテリアルについてはOmniverse側で再設定する必要があります。
Omniverseはすべてリアルタイムでレンダリングが行われ、光源の配置(HDRIを使ったIBL含む)やカメラの指定、Postprocessingの後処理も行います。
Omniverse上ではそれほど作業は発生しません。
読み込んだ形状を並べ、マテリアルを割り当てて絵として調整するだけです。
3DCoat側の作業、Omniverse側の作業をもう少し掘り下げていきます。
3DCoat側の作業
3DCoatで行ったモデリングは「馬車」と「馬」に分かれています。
それぞれ別々にモデリングしており、3DCoat内で合わせたシーンを作るということはしていません。
「馬車」はモデリングルームでMeshとしてモデリングを行い、リトポルームでUV割り当て、ペイントルームでテクスチャの作成、という作業の流れになります。
「馬」はスカルプトルームでスカルプトとしてモデリングを行い、リトポルームでリトポ&UV割り当て、ペイントルームでテクスチャの作成、
という流れでまずは馬だけをモデリングしました。
その後、馬をベースとしてモデリングルームで馬具をモデリング、リトポルームで馬具のUV割り当て、ペイントルームで馬具のテクスチャの作成、という作業を行いました。
なお、それぞれのルームでの作業が完結してから次の作業へといったことはなかなか難しく(後からやっぱりここを修正したい、って発生しますよね)、
戻って再調整、というのを何回か繰り返しています。
馬の場合、スカルプトしたときよりも若干太くしたほうがよいというのにリトポ作業中に気づき、スカルプトの再調整をしてリトポにフィードバックする、ということを行いました。
後、目の位置の微調整も頻繁に行っています。
馬車の場合は、馬車の本体の厚みが足りなかったためペイント作業後にモデリングまで戻って厚みを調整、再度ペイントルームに渡すテクスチャをベイク、ということを行いました。
3DCoatの最終作業として、fbx形式でfbxファイルと各種テクスチャ(PBRマテリアルのAlbedo/Roughness/Metallic(Metallness)/Normal/AOなど)を出力します。
Omniverse側の作業
Omniverse側の作業は以下のようになります。
3DCoatから出力したfbxファイルは、Omniverseの「Convert to USD」を使ってusdファイルに変換できます。
生成されたUSDファイルをあらかじめ作成した舞台のシーンにインポートします。
舞台となるシーンは、背景であるHDRIをDome Lightに割り当てました。
このHDRI素材はOmniverse Create(2021.3.2)でいくつか選択できるようになっています。
Skiesタブで指定の背景をダブルクリックすると、自動的にDome Lightが配置されてHDRIがマッピングされます。
また、地面に影を落としたいためPlaneを配置してテクスチャを割り当てました。
できるだけ背景に近い色合いになるように調整しています。この作業はマテリアルで行います。
木や草は、Omniverse Createでアセットとしてインポートできます。
できるだけ背景のHDRIに近いアセットを選び、地面の接地感を醸し出せるようにしました。
舞台ができてから、そのシーンにfbxからコンバートしたusdの「馬車」と「馬」をインポートして配置しました。
USDの特徴として「オリジナルのusdファイルを参照(Reference)する形でジオメトリやマテリアルを置き換える/継承する」ことができます。
fbxからusdにコンバートしたときに、ジオメトリのfbxファイルとテクスチャファイルは分かれています。
これをメインシーンの舞台では参照することにより、
オリジナルの形状やテクスチャをその都度更新するだけで、メインシーンには作業中の形状も反映できることになります。
上書きでマテリアル設定が消えることもありません。
この流れにするため、3DCoat側の形状で「Mesh名」と「マテリアル名(UVSet名)」さえ固定で与えておけば、
後は作業しながらOmniverse側を更新して途中経過を確認する、ということが容易になります。
この部分はUSDの特徴を利用した作法と言えるかもしれません。
マテリアルはOmniPBRを割り当てています。
窓ガラスだけOmniverse側でPlaneのメッシュを配置してOmniGlassを与えました。
最後に、Post Processingの調整を行いました。
モデリング対象
大きく、「馬」と「馬車」の2つを別々にモデリングしました。
馬はスカルプトを行った後リトポしています。
馬具については、リトポ後の馬に対してモデリングルームで追加していきました。
馬車はすべてモデリングルームでモデリングを行いました。
3DCoat 2021で新規追加されたモデリングの機能をふんだんに使いました。
次回、3DCoatのモデリングに焦点を絞り、いくつか機能を説明しつつどのように作業を行ったかというのを追いかけていく予定です。