#EVT3D用の会場モデルを準備する
これは、3ds Max + V-Rayの会場モデルを、ベイク済みでライティングされた軽量な.glbとしてEVT3Dのライブラリに取り込むための制作パイプラインです。取り込んだ会場は、プロジェクトに配置してその中でデザインできます。
厳密な手順書ではありません。順序や作業の細かさは、モデルの大きさとシーンの複雑さによって変わります。以下の流れは、そのとおりに従う台本ではなく、状況に合わせて使うチェックリストとして扱ってください。
#カラーマネジメント
ほかの作業に入る前に、レンダラーのカラーワークフローを次のモードに設定します。
- Mode — Gamma Workflow
- Gamma — 2.2
ここを間違えると、すべてのベイクが暗すぎるか、白っぽく色あせた仕上がりになります。プロジェクトの最初に一度設定し、最終ベイクのたびに正しいままか確認してください。
#モデリング
たいていは、会場の既存のCADやフォトグラメトリーのデータから始めることになります。UV展開を始める前に、ジオメトリそのものを一通り見直します。
-
必要に応じて既存のモデルを更新またはモデリングし直します。トポロジーがきれいならUVもきれいになり、UVがきれいならベイクもきれいになります。
-
すでに作成済みの会場キットがあれば読み込みます。探すべき定番は、ドア、壁付けのブラケット照明、ダウンライト、シャンデリアです。
-
まとめてベイクや書き出しができるよう、メッシュを面の種類ごとにレイヤーに整理します。
- Ceiling
- Floor
- Wall
- Props
レイヤーの分け方は会場の大きさによって変わります。小さな宴会場ならCeilingとWallsを1つのレイヤーにまとめてもかまいませんし、コンベンションセンターなら床をゾーンごとに分けることもあります。
-
4_VraySettings(シーンテンプレートにある標準のカメラ用ブックマークレイヤー)の中にV-Ray Cameraを配置して構図を決めます。このビューは、パイプライン全体を通してマテリアルのテストやライトの調整に繰り返し使います。
ヒント — V-Ray Lightsはコピーではなくインスタンスとして複製してください。一日の終わりにすべてのシャンデリアを6インチ上げたくなったとき、そうしておいてよかったと思うはずです。
#UVの設定
このパイプラインの成否はUVで決まります。チャンネルは2つ、この順番です。
- Channel 1 — マテリアルのテクスチャ(日常的に使うもの)
- Channel 2 — ライトのベイク(この作業の目的そのもの)
Channel 2は必ず明示的に作成してください。作成しないとベイクは何も言わずにChannel 1を使ってしまい、ライティングがひどい見た目になっている理由を1時間かけて探すことになります。
#手順
- 作業用のモデルを、専用のUVレイヤーに複製します。作業は必ず複製の方で行います。放っておくと、ベイクで元のモデルが壊れてしまいます。
- 会場内で同じモデルが繰り返し使われている場合(同じ壁パネル、繰り返される椅子の背など)は、1つだけをUV展開してから複製します。1つずつ展開するのは何時間もの無駄です。
- レイヤーのグループ(Ceiling、Floor、Walls、Props)ごとにUVを展開します。同じUV空間を共有するよう、展開する前にレイヤー内のメッシュをグループにまとめておきます。
- UVを0〜1の空間にパックします。
- Normalizeを有効にします
- Padding —
0.003
- 同じUV空間を共有するオブジェクトを、1つのメッシュに結合します。これにより、1枚のベイクテクスチャで複数のジオメトリをカバーできます。
- ベイクを始める前に、結合したメッシュをバックアップとしてもう一度複製します。ベイクは派手に失敗することも、気づかないうちに失敗することもあります。バックアップがあれば戻れます。
ヒント — 壁では、UVのシームを90°の角(ドアの押し出し部分や隅など)に沿って置きます。曲面に沿ったシームはベイクで帯が目立ちますが、鋭いエッジに沿ったシームは目立ちません。
#マテリアル
ここでは順番が重要です。
- ベイクの前にV-Ray Materialsを使います。 ベイクではV-Rayのライティングの反応を読み取るので、ベイクの時点ではマテリアルがV-Rayネイティブである必要があります。
- メッシュを結合したら、glTF Materialsに切り替えます。 EVT3Dが理解できるのはこちらです。ジオメトリはそのままで、マテリアルの割り当てだけが変わります。
逆の順番(先にglTF、次にベイク)で作業すると、のっぺりとした環境光だけの結果になります。やめてください。
#ベイク
Bakeを押す前に、正しく設定しておくべき項目が2つあります。
- ベイク中、ビューポートはカメラにロックしてはいけません。カメラにロックされたビューポートはベイクの投影をゆがめ、あとからでは原因の特定が非常に難しくなります。
- ベイクの前に、各オブジェクトにProjection Modifierを追加します。
Pushの値を0.5に設定します。これでプロジェクターに十分なオフセットができ、エッジを取りこぼさずに表面のディテールを拾えます。
#ベイクの設定
Rendering → Bake to Textureを開きます。次のBake Elementsを追加します。
- VrayDenoiserMap — メインの出力です。たいていはこの要素だけで足ります。
- NormalMap — ディフューズのパスだけでは表現しきれない表面の凹凸がある場合に追加します。
- ReflectionMap — 反射するマテリアル(ガラス、磨いた石、金属)がある場合に追加します。
- VrayAOMap — 任意です。接地影を加えたい場合に使います。
ベイク自体には次の設定を使います。
- Projected From — Projection
- UV Channel —
2 - Image Size — テストのベイクでは
512×512、最終版では4096×4096 - Padding —
2 - File Type —
JPG
Rendered Frame Windowを開き、Bakeをクリックします。時間がかかります。張り付いて見守るのではなく、その時間を見込んで予定を組んでください。
ベイクが終わったら:
- ベイクしたテクスチャに、わかりやすい名前を付けます。
wall_north_bake.jpgなら問題ありませんが、Bake_RenderElement_VrayDenoiser_001.jpgはいけません。 - 最終用にベイクしたメッシュを複製します。元のメッシュは、戻れる場所としてUVレイヤーに残しておきます。
#ベイクのあと
ここで、モデルがglTFのアセットになります。
-
ベイクした各オブジェクトにglTF Materialを作成します。
-
新しいマテリアルを、対応するメッシュに割り当てます。
-
各メッシュにUnwrap UVWを適用し、チャンネルを付け替えます。
- Channel 2に切り替えて → Abandon
- Channel 1に切り替えて → Move
これで、(Channel 2にある)ベイクがChannel 1にまとめられます。実行時にglTFが読み込むのはChannel 1だけです。この手順のあとは、ベイクしたライティングがすべて、1つのマテリアル設定の下で表示されます。
#書き出し
File → ExportでglTFとして書き出します。重要な設定は1つだけです。
- Binary (.glb) format — 有効にします。
EVT3Dが取り込めるのは.glbだけです。.gltfとテクスチャのフォルダは、アップロードの段階で拒否されます。
#引き渡し
書き出したら:
- ファイルサイズをざっと確認します。ベイク済みの会場は20〜80 MBに収まるはずです。100 MBを超えている場合は、2Kで足りるテクスチャが4Kになっている可能性が高いので、戻ってベイクし直してください。
- 通常のライブラリの流れでアップロードします。アップロードの仕組みはプロップのアップロードをご覧ください。同じアップローダーで会場も扱えます。
- アップロードしたら、EVT3Dで会場を開き、実行時のカメラでベイクしたライティングが正しく見えることを確認します。何かおかしい場合、原因はほぼ必ずUVチャンネルの付け替えにあります。ベイク後の
Channel 2 → Abandon, Channel 1 → Moveの手順を確認し直してください。
著者 — Yiel Delos Reyes。このワークフローはYielによるものです。質問や改善の提案は本人までお寄せください。