2017-11-17

terrain bake textures

例えば、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) の二つが必要。

  1. シーンファイル terrain_texexport.hip を読み込む。
      /obj/heightfield1/heightfield_quickshade1 に表示フラグがオンになっているはず。
  2. heightfield_quickshade1 の出力から Null ノードを作成。名前を OUT とし、あとから参照し易くする。

    表示フラグ (青) も、OUT に移す。
  3. 一つ上 (/obj) に戻り、Geometry ノード (geo1) を作成し、UVOBJECT と名称変更。
  4. UVOBJECT の中に入り、そこにある file1 を削除、Object Merge ノードを一つ作成。
    • Object 1 に /obj/heightfield1/OUT を指定。
        Object Merge を使うことで、あるノードネットワークにあるノードを別のネットワークで参照することができる。相対パスでも良い。
  5. object_merge1 の出力から Convert HeightField ノード (convertheightfield1) を作成。
    • Convert to を Polygon
    • Density は 1 だが、0.5 とすれば半分の解像度になる。

      上図は 1.0 のまま。
  6. convertheightfield1 の出力から Attribute Promote ノードを作成。
    • Original Name を uv
    • Original Class は Point のまま
    • New Class を Vertex に
    • 表示フラグ (青) を、convertheightfield1 に移す。
これで Bake の準備は完了。

2. Bake Texture

  1. /out に行き、Bake Texture ノード (baketexture1) を作成。
  2. UV Object 1 に /obj/UVOBJECT
  3. High Res Object 1 に /obj/heightfield1
  4. Images タブの Main で、以下をオンにする。
    • Tangent-Space Normal (Nt)
    • Displacement (Ds)
    • Occlusion (Oc)
    • Shading Normal (N)
    • Surface Unlit Diffuse Color (diffcolor)
  5. Baking タブの Disable Lighting/Emission をオフにする。
  6. Unwrapping タブの Unwrap Method を Trace Closest Surface にする。
  7. Render to MPlay をクリックしてレンダリングを開始。
    • Color
    • Tangent Normal
    • Occlusion
    • Displacement
    • Color Diffuse
    • Shading Normal
    • となる。

まとめ

HeightField オブジェクトを元に Bake Texture する時には

  • UV Object には (現状)、UV が Vertex Attribute として必要。
  • Unwrap Method を Trace Closest Surface にすることできれいな結果を得ることが出来る。
シーンファイル h16_terrain_baketexture.zip (213KB)
  • terrain_texexport.hip: 開始ファイル
  • terrain_texexport_done.hip: 終了ファイル

0 件のコメント:

コメントを投稿