シェーダはSHOPコンテキスト内で操作する
シェーダの作成
・Material Palette
左側のプリセットを右側のブロックにドラッグして簡単作成
・Network View
TABキーからシェーダーノード名を指定。
Houdiniのバージョンアップに伴い、デフォルトのシェーダ名が変更されているケースが散見される。
最も基本的なシェーダは Material Shader Builder で良さそう。
VOPの基本
シェーダアイコンをダブルクリックするとシェーダーを定義しているノードネットワークに入れる。
VOPノード
VOP内のノード表示はこんな感じ
ノードの左右端にはノードのコネクト用プラグが並ぶ。
・パラメータ名
フルネームが表示したければPreferenceのNetwork Editorオプションから設定
・Nodeコネクション
プラグクリックでコネクタを伸ばし始め、コネクト先プラグをクリックで接続
肩は色分けされているので、ひと目で分かる。
違う型のAttributeを接続する場合は間に「Float To Vector」などの変換ノードを挟む。
基本的な使い方
各種ノードを作成し、それぞれの出力をAdd VOPなどのオペレーターを使用して計算し、最終的にoutputノードへ接続して結果を出力する。
ノードの自動作成
各種入力プラグを中ボタンでクリックすると、よく使うノード(場合によっては小さなノードネットワーク)を自動作成できるようだ。
特徴的なのはPromote Parameterで、Parameterノードが接続されたパラメータは、親のShaderノード内にExposeされ、VOPネットワークに入らなくても触れるようになる。
各種ノード
・Parameter
外から値を入力する窓口となるノード。
Parameterノードを作ると、親ノードの中にParameterノードと同じ設定のパラメータが作成される。
親ノード側のパラメータを操作することで、VEX内のノードに与えるパラメータを直接操作できるようになる。
ExportをAlwaysに設定すると、他のコンテキストからこのパラメータを参照できるようになる。
また、こうすることで、VEXネットワーク内で入力パラメータも持つようになる。
・Constant
定数ノード。Typeを指定して様々な型の定数を出力できる。
任意のプラグを中クリックし、ポップアップメニューからConstantを選択することで、そのプラグに接続された状態でConstantノードが作成できる。
・Add/Sub/Multiply/Divideなど
一般的な計算ノード
型の違うパラメータ同士を計算する際は、入力の順番に気をつける必要がある。
multiply1はvector型を先に受け取ったので、出力もVector型(ベクトル積)
multiply2はfloat型を先に受け取ったので、出力はfloat型(スカラー積)
※実際に値を表示する方法がわからないのでどのような計算結果が返るかは現時点では不明
・Random
名前の通りの動作。
入出力のタイプをノード内で決定できる。
※VOPノードはこのように、ノード内で入出力タイプを切り替えられる場合が多いようだ。
・Lighting Model
シェーダへのライトの影響タイプを定義するノード。Lanbertian/Blinn/Phongなど、古典的なLighting Modelを選択できる。
Lighting ModelパラメータでVEX Specularを選択することで、独自の光沢を作成することができる。
VEXのデータ型
Constantで作れるデータ型は以下のような感じ
3Floats/Vector/Colorや、int/toggleなどのように、似ているデータ型が複数存在する。
カッコの中に型名が記載されているので、この型が合っているプラグ同士であれば接続できる。