2022-09-15

Material HDA

マテリアルを HDA 化したときの注意点について説明する。

使用したビルド:

  • Houdini 19.5.368 (Py3.9) H19.0 でも Py 3.7 でも Py2.7 でも同じはず。

1. 元シーンの作成

  1. /obj 以下で Rubber Toy (何でも良い) を作成。できた testgeometry_rubbertoy1 の中に入る。
  2. testgeometry_rubbertoy1 の 出力に Attribute Delete (attribdelete1) を追加
    • Primitive Attributes のフィールドに右側の三角から shop_materialpath を指定。
    • 表示フラグを attribdelete1 に設定する。
    これで、Rubber Toy からマテリアルの指定が外れる。
  3. /mat に行き、 Principled Shader (何でも良い) を作成。 principledshader1 ができる。
  4. principledshader1 が選択された状態で、 Shift+C を押してコンテナ (subnet1) に格納。
  5. subnet1 を例えば mat_test_material など後で自分にわかり易い名前に変更する。
  6. ここでシーンファイルを一度保存しておく。
      そうすると、以下の手順で失敗しても戻って来やすい。
  7. mat_test_material 上で右マウスボタン (RMB) -> Digital Asset -> Create New... を実行。HDA ファイル命名方法が気にならなければそのまま Create を押す。
      変えたければ設定を変更して Create。
  8. 次に現れる Edit Operator Type Properties で /mat/mat_test_material/principledshader1 の Base Color パラメータを Exisiting Parameters にドラッグ&ドロップ。
  9. Accept を押してウィンドウを閉じる。
      勿論、他のパラメータも露出したければ、そうしても良い。
これで、シェーダが HDA 化された。

2. HDA 化されたマテリアルが Operator Chooser に出ない

/obj で testgeometry_rubbertoy1 を選択、その Render タブに行き、Material パラメータの右端にある '+' っぽいボタンを押して Operator Chooser ウィンドウを表示し、/mat を以下を見てもそこにあるはずの HDA 化されたマテリアルが表示されない。

  1. Operator Chooser に 表示されるためには HDA の Material フラグがオンになっていないといけない。
  2. これをオンにすれば、Operator Chooser に現れるようになる。

3. 作成した HDA マテリアルでは自動的にマテリアルフラグがオンにならない

作成した HDA は /mat または個別の Material Network 内で TAB->Digital Assets -> Mat Test Material で呼び出すことができるが、作っただけはマテリアルフラグがオンにならず、一々自分でオンにしなければならない。これを回避する方法を以下に紹介。

  1. HDA ノード上で RMB->Type Properties... を実行、 Edit Operator Type Properties ウィンドウを開き、 Scripts タブに行く。
  2. Event Handler のプルダウンを Custom Script から On Created に変更。
  3. 右側のスクリプトフィールドに
    kwargs['node'].setMaterialFlag(True)
    と入力。
  4. Accept を押してウィンドウを閉じる。
これで次回 TAB メニューから呼び出した際には、自動的にフラグがつくようになる。

0 件のコメント:

コメントを投稿