ノーマルマップの作成 (2)
低解像度ジオメトリと高解像度ジオメトリを用意し、高解像度ジオメトリのディテールを低解像度ジオメトリのノーマル情報として転写する方法を紹介。
使用バージョン: Houdini FX 14.0.310
シーンファイルへのリンクは一番下にあり。
I. 元形状
こちらのシーンファイルを開き、低解像度ジオメトリ (ポリゴン平面) と高解像度ジオメトリを用意。
このシーンには
- pyramids: 高解像度ジオメトリ
- grid_object1: 低解像度ジオメトリ
- cam1: カメラ
- distantlight1: ディレクショナルライト
II. マテリアルの作成およびアサイン
低解像度ジオメトリに法線情報を受け取るマテリアルを作成しアサインする。
- Material Palette へ行き、左側のマテリアルリストから Mantra Surface ノードを右側の /shop エリアにドラッグ&ドロップする。
- /shop エリアの mantrasurface をビューポート内の grid_object1 上にドラッグ&ドロップする。
- Jump to Operator (矢印) をクリックし、mantrasurface のパラメータを表示。
- Settings タブに行き、Normal Map Export 以下の Source をGeomtry Difference にする。
Material が /shop/mantrasurface となっているはず。
高解像度ジオメトリに対してはマテリアルの設定は不要。
III. ノーマルマップ出力ノードの作成
ノーマルマップの出力には Mantra ノードを使う。
- /out 以下に Mantra ノードを作成。Render->Create Render Node->Mantra とするか、TAB -> Render -> Mantra などとする。
- Override Camera Resolution をオンにし、Resolution Scale を User Specified Resolution に、Resolution にテクスチャ解像度を設定する (例 512x512など)。
- Images タブ以下 Extra Image Planes タブに行き、Extra Image Planes の数を 0 から 1 に、追加されたイメージプレーンの VEX Variable を export_normals にする。
- Rendering タブに行き、Rendering Engine を Micropolygon Rendering にする (必須)。
- 同 Rendering タブ以下の Render タブの UV Render Object を Operator Chooser を開いて、/obj/grid_object1 に設定。
- Render View で Output Driver を mantra1 に設定、レンダリングを実行。
- Render ボタン真下の太いところをクリックすると View Bar が表示される。C から先ほど定義した export_normals に変更。
- 一度のレンダリングにかかる時間は、Windows Experience Index が 6.6 の PC (Dell M4700 Windows 7) で、3 秒弱。ただ見たところ、精度はあまり良くない。
- 精度を向上するには、Dicing タブの Shading Quality Multiplier を 1 (デフォルト) から、4 などにあげる。
注意: ノーマルマップの生成には Micropolygon Rendering を使用する。Ray Tracing、PBR などは使用できない。RenderView で確認をする場合、Preview はオフにする。Preview がオンだと Render Engine の設定に関わらず Ray Tracing レンダリングが実行される。
IV. ファイルの書き出し
Render View から簡単にノーマル情報だけを書き出すにはこちらの方法を取る。
まとめ
- 高解像度ジオメトリから低解像度ジオメトリに法線情報を写すには、低解像度ジオメトリのマテリアルのNormal Map Export 以下の Source をGeomtry Difference にする。
- テクスチャ UV の設定は Vertices (面単位頂点) で行う。Points (共有頂点)ではうまく行かない。
- 法線情報は export_normals VEX Variable (パス) を使って書き出す。
- カメラからではなく UV 空間にレンダリングするには UV Render Object にオブジェクトを指定する。
- ノーマルマップ生成の Rendering Engine は Micropolygon Rendering 。
注意点まとめ
- mantra: Unable to find UV object '/obj/grid_object1'
というエラーが出る、またはレンダリング画像が真っ黒。- UV Project の Group Type を確認。必ず Vertices であること。
- Rendering Engine の設定が Micropolygon Rendering にもかかわらず、
mantra: UV rendering unsupported with ray tracing.
というエラーが出る。- Render View を使用している場合、Preview の設定を確認。オンの場合、オフにする。
- Preview がオンだと Render Engine の設定に関わらず Ray Tracing レンダリングが実行される。
シーンファイル:
- transftermap.zip (119KB)
0 件のコメント:
コメントを投稿