例えば、Houdini の HeightField ツールを用いてこのような地形を作ったとする。
通常、HeightField の情報を出力するには、HeightField Output ノードを使うが、このノードを使うと、HeightField のフィールドとして定義された height, mask, debris などは出力できるが、ここで行っている HeightField Quick Shade ノードを出すことはできない。
ここでは HeightField QuickShade によるシェーディング結果をカラーテクスチャとして出力する方法を紹介する。
使用したビルド: 16.0.777、16.5.293 どちらでも操作は同じ。
シーンファイルへのリンクは一番下にあり。
1. ターゲットメッシュの作成
テクスチャを出力するには Bake Texture ノードを使う。これには、Scene レベルで元になるジオメトリ (High Res Object) と ターゲットとなるメッシュジオメトリ (UV Mesh Geometry) の二つが必要。
- シーンファイル terrain_texexport.hip を読み込む。
-
/obj/heightfield1/heightfield_quickshade1 に表示フラグがオンになっているはず。
- heightfield_quickshade1 の出力から Null ノードを作成。名前を OUT とし、あとから参照し易くする。
表示フラグ (青) も、OUT に移す。 - 一つ上 (/obj) に戻り、Geometry ノード (geo1) を作成し、UVOBJECT と名称変更。
- UVOBJECT の中に入り、そこにある file1 を削除、Object Merge ノードを一つ作成。
- Object 1 に /obj/heightfield1/OUT を指定。
- Object Merge を使うことで、あるノードネットワークにあるノードを別のネットワークで参照することができる。相対パスでも良い。
- Object 1 に /obj/heightfield1/OUT を指定。
- object_merge1 の出力から Convert HeightField ノード (convertheightfield1) を作成。
- convertheightfield1 の出力から Attribute Promote ノードを作成。
- Original Name を uv
- Original Class は Point のまま
- New Class を Vertex に
- 表示フラグ (青) を、convertheightfield1 に移す。
2. Bake Texture
- /out に行き、Bake Texture ノード (baketexture1) を作成。
- UV Object 1 に /obj/UVOBJECT
- High Res Object 1 に /obj/heightfield1
- Images タブの Main で、以下をオンにする。
- Tangent-Space Normal (Nt)
- Displacement (Ds)
- Occlusion (Oc)
- Shading Normal (N)
- Surface Unlit Diffuse Color (diffcolor)
- Baking タブの Disable Lighting/Emission をオフにする。
- Unwrapping タブの Unwrap Method を Trace Closest Surface にする。
- Render to MPlay をクリックしてレンダリングを開始。
まとめ
HeightField オブジェクトを元に Bake Texture する時には
UV Object には (現状)、UV が Vertex Attribute として必要。Houdini 16.5.321 以降不要。- Unwrap Method を Trace Closest Surface にすることできれいな結果を得ることが出来る。
- terrain_texexport.hip: 開始ファイル
- terrain_texexport_done.hip: 終了ファイル
最終更新: 2017-12-19
このコメントは投稿者によって削除されました。
返信削除