normal maps in COP

ここでは Houdini の合成モジュールである COP (Compositing Operators) だけで法線マップを作成する方法を紹介する。

使用したバージョン: Houdini 15.5.626
シーンファイルへのリンクは一番下にあり。

1. COPノード作成と作業解像度

  1. Houdini を起動。Composite View タブをクリックする。
      ネットワークエディタに /img/comp1 というノードが自動的に作成され、現在のコンテクストがそこに移る。
  2. TAB->Matte->Shape を実行。
      shape1 ノードがノードネットワークに出来、Composite View には白い正三角形が表示される。
  3. shape1 のパラメータ Shape Type を Star に変更する。
      Composite View の形状が星形に変わる。また、ビューの左上を見ると解像度が 640x480 となっているのがわかる。
  4. Edit->Compositing Settings... 実行、開いたパネルの Image の Resolution を 1024 x 1024 に変更。

      Pixel Format でビット深度を変更することも可能。
  5. Accept ボタンを押して変更を確定、パネルを閉じる。
      これで作業解像度が 640x480 から 1024x1024 になった。
  6. shape1 の Transform タブで Scale を 0.5 に 0.5 に変更。星を少し小さめに。

2. 複数ノード表示

  1. Shape ノードをもう一つ作成。shape1 ノードをコピペしても、メニューから作成しても構わない。
      shape2 ノードが出来た。
  2. shape2 の Shape Type を Ring に変更。
      Composite View 上で Shift+H を押せばビューに作業画像が収まる。
  3. shap2 を選択したまま、パラメータビューで Transform タブに行き、Scale を 0.6 x 0.6 ぐらいに変更。
  4. 上の画像のように shape2 が表示されている状態で、Shift キーを押しながら、shape1 の表示フラグ (ノードの右端の青い帯) をクリックする。
      Composite View には、shape2 と shape1 の両方が表示された。

      SOP と異なり、COP 内では複数のノードに表示フラグを設定可能。

3. 最初の合成

  1. TAB->Comps->Composite を実行。
      composite1 ノードが出来た。Operation パラメータで現在の合成方法は Over であることがわかる。プルダウンから Under, Add, Multiply, Diff など、他の演算方法を選択することも可能。
  2. shape1 を composite1 の左側に、shape2 を右側に接続する。

  3. ネットワークビューで shape2 ノードを選択、SHIFT キーを押しながら、composite1 と shape2 の両方が Composite View に表示されるようにする。
  4. パラメータビューで shape2 の Inner Radius の値を大きくする。

      上の図で Inner Radius の値は 0.854。

4. 法線マップへの変更

  1. composite1 の出力から TAB->Utility->Gradient を実行。
      gradient1 が出来る。
  2. gradient1 の Output を Normal Map に変更。
      下右側のように法線マップらしい画像になる。

      上記画像では gradient1 の Scale の値を 6 ぐらいにしている。
  3. 新たに TAB->Effects->Noise を実行。作成された noise1 の Noise Type を Random (white) にする。
  4. 新たに Composite をもう一つ作成、できた composite2 の 左の入力に composite1 を、右の入力に noise1 を設定。composite2 の 出力を graident1 の入力に差し替える。
  5. ここまで行なった合成操作をファイルとして手っ取り早く出力するのであれば、graident1 の上で RMB->Save Image... を実行。ファイル名を out.png などとする。
      パラメータにアニメーションをつけて連番出力や後ほどバッチで出力したいのであれば、ROP File Output ドライバを接続してファイル出力を行う。

5. ジオメトリへのアサイン

  1. Scene View (3D ビューポート) に戻り、Create シェルフで Grid をクリックして実行。
      /obj/grid_object1 が出来る。
  2. Material Palette で Principled Shader を選択、そのまま LMB (左マウスボタン) でビューポート内の grid_object1 にドラッグ&ドロップ。
      principledshader が作成され、/obj/grid_object1 にアサインされた。
  3. principledshader のパラメータビューで Bump & Normals タブに行き、Enable をオン。
  4. Texture Path に先ほど書き出した画像ファイルを指定。

      上記の $HIP はシーンファイルのあるディレクトリ。
  5. しかし ビューポートではテクスチャが反映されていない。

      何故かと言えば、このジオメトリには UV がないから。そこで UV を定義する必要がある。
  6. Scene View (3D ビューポート) に戻り、Create シェルフで Grid をクリックして実行。
      /obj/grid_object1 が出来る。
  7. /obj/grid_object1 の中に行き、grid1 の出力から TAB->UV Texture を SHIFT+Enterで実行。
      自動的に表示フラグが作成された uvtexture1 に移る。

      ビューポートにはアサインしたテクスチャが表示されているのが確認できる。

まとめ

  1. COP は Composite Operators (合成操作) の略。
  2. COP 内の Gradient ノードで Output モードを Normal Map とすることで画像を法線マップに変換可能。
  3. Composite ノードを使うと、ノードの Operation モードで様々な合成操作から選択することが出来る。
    または、TAB->Comps 以下から個別の Over ノードなどを選択することも可能。この場合、演算方法を変更するには、ノードをつなぎ直さなければならない。

    入力の左右の入れ替えは SHIFT+R で可能。
  4. 解像度の設定は Edit->Compositing Settings... で行なう。Edit Preferences->Compositing ではない。解像度の設定は、シーン単位で保存される。
  5. COP 内では、SOP と異なり、複数のノードに表示フラグを設定することが可能。二つのノードに表示フラグを設定すれば、Composite View には二つのビューが表示される。3つの場合は3つ。
  6. Font ノードを使えば日本語テキストを画像にすることも可能。フォントの選択はシステムにインストールされたフォントによる。
  7. 関連項目

シーンファイル:

0 件のコメント:

コメントを投稿