Houdini – Group

オペレータのGroupパラメータ(ターゲットを直接指定)

Houdiniでは、何かしらの処理を行う際、処理を行うノードの中で処理対象を明示的に指定する事ができる。これにより、後から処理対象を変更することが容易になっている。

例えば、Polygonオブジェクトのいくつかの面を選んでからPoly Extrudeなどの処理を実行すると、Poly ExtrudeのGroupパラメータに、処理対象となるPrimitive番号がリストアップされ、そこで挙げられた番号のPrimitiveに処理が行われていることがわかる。

20140518_01_2

20140518_01_0

20140518_01_1

3つのPrimitive選択後に、シェルフからPolyExtrudeを実行した後のPoly Extrudeノード。
Groupパラメータに3つのPrimitive IDが記入されていることがわかる。ここに、新しい番号を記入すると、そのアイテムにも同様の処理が行われる。

ビューポート内でTABキーを押し、直接オペレータを作成した場合も同様に、ターゲットのIDがGroupパラメータへ自動的に記入される。

Network View内でTABキーからオペレータを作成する場合は、Groupパラメータへは自動的に記入されない。

IDを直接指定する場合、上流にトポロジを変更するノードが追加されて各IDが変化した時、予想外のターゲットに処理が行われることになるので注意。

IDの直接指定は極力使うべきではない。

最後のノードで別のターゲットに対し続けざまに処理を行う

例えばPoly Extrudeを行ったあと、別のPrimitiveを選択し、Enterキーを押すと、選択したPrimitiveに対し、Poly Extrudeノードが追加で作成される。

Primitive選択後に Qキーを押しても同様

処理対象の再選択

選択状態を間違えて新しいオペレータを作ってしまった場合は、まず、オペレータを選択後に画面左の選択ボタン右クリックし、Reselect For Current Toolを選択。

20140518_01_3

20140518_01_4

こうすると、一時的にオペレータが無効になり、処理ターゲットを選択するモードに移る。

その後、任意の対象を選び直し、Enterキーを押すことで選び直した対象がGroupパラメータに改めて指定される。

Group SOP

Groupノードは、これまで見てきたような、何らかの処理の対象となるIDリストに対し、任意の名前をつけて、管理を助けるために使う。

それ以外にも、任意のバウンディングボックス内に含まれるIDリストや、任意軸に対して一定角度内の法線を持つPrimitiveリストを自動的に検出してグループに取り込むなど、多様な自動グループ作成が行えるので、非常に便利。

Group SOPに格納されたアイテムに処理をするには、以降のオペレータでGroupパラメータに使用したいグループ名を入力する。

Houdini – PBRの基本

Phisically Based Renderingの準備

・Mantraノードを作成

Properties -> Renderタブ -> Redering Engine パラメータを PBR系のものに指定。

ただのPBRはレイトレースを使用するPBR。
Samplingの値など、Micro PolygonのPBRとは、値の扱い方が変わるので注意。

・カメラを作成

レンダリングのため、カメラを作成する。

・ライトを作成

PBRシェーダ

見たところ、Material Paletteに標準で登録されているマテリアルは、ほとんどがMaterial Shader Builderにより作られている。
また、マテリアル内部ではSurface Modelを使用していることが多いので、だいたいPBRにそのまま使用できるようだ。

試しにGlassなどを球体にアサインしてレンダリングすると、それだけでもそこそこにリアルだったりする。

20140518_02_0

部分レンダー

Render Viewで、部分的にレンダリングしたい範囲をShift+ドラッグ

Inspect individual pixel values

Render View内でIキーを押すと、ピクセル解析ツールの有効をオン・オフできる。

20140518_02_1

ValPixel values in 0-1 form.

Raw

Raw pixel values, as they are stored (0-255 for 8 bit values, 0-65535 for 16 bit values, and so on).

HSL

Hue, saturation, and luminance of the pixel.

Pix

Pixel coordinates of the mouse pointer.

uv

UV (0-1) coordinates of the mouse pointer.

LUT

Only displayed if the Inspect LUT option on the Correction tab of the display options window is on. Shows a reverse mapping of the value through the LUT. This is useful for Cineon LUTs, to see the original Cineon numbers.

SpecularとRefrection

見たところ、Houdiniの物理ベースシェーダのパラメータは、ゲーム業界で読んでいるパラメータとは違う名前を使用している場合があるようだ。

・RefrectionとSpeculer

Refrectは反射全般をくくる言葉。この中に、表面の滑らかさや反射率などを決めるSpecularパラメータを含んでいる。

・Specular Intensity

素材そのものの反射の強さ。
メタル系の素材は非常に高く、それ以外は非常に低い値。

・Specular Angle

材質表面の粗さ。
表面が滑らかであるほど低く、ザラザラしているほど高い。

・Specular Anisotropy

異方性反射の方向。
Specular Angleによってぼやける反射光が跳ね返りやすい方向を決める。

PBRでは、これらの質感の特性を現実世界の物体に合わせ、正確な特性値(反射の強さやもともとオブジェクトが持っている色(アルベドカラー、表面の目に見えないレベルの細かな凹凸など)を使用し、現実世界のものの見え方をシミュレートする。

そのためには、シェーダーだけでなく、ライト(カラーや強さを表すルーメン)やカメラの絞り、露光など、レンダリングに関わる全ての要素をPBR向けに最適な設定で使用する必要がある。

明るすぎるピクセルの補正

レンダリングすると集光現象などの結果、非常に高い輝度値を持つピクセルが生成されることがある。

20140518_02_3

これを補正するためには、Color Limitパラメータを使用して各ピクセル内の値の上限値を決める。

20140518_02_2

※やり方が悪いのか、効果が出ない・・・バージョン違いによる差が本当に厄介。チュートリアルで示されたオプションが無かったり、手動で追加しなければいけないはずなのにすでに追加されていたりする。

ノード名もかなり変わっているし、結構辛い。

Houdini – Particle Smoke

Particle制御

・Velocity、Accelerationノードなど

sourceノードの下流にVelocityやAccelerationノードを接続すると、その値が有効になる。
これは、上流でPointノードなどを使用して指定した速度などを上書きする。

・Propertyノード

上記ノードと同じように、Particleのスケール変更や質量を変更するには、Propertyノードを使用する。

Houdini – VEX フロー制御

比較演算子

Compareノードを使用する
input1とinput2をどう比較するか内部で指定。結果はbool値で出力される。

if

If Then Blockノード

内部に、Subnet Inputノードがあり、このノードにIf Then Blockのconditionパラメータに入力された値が渡される。

計算の結果は、Subnet Outputノードの _condition または、任意の値をnextに任意の数の値をコネクトし条件ごとの出力を行うことができる。

20140518_03_0

上図の例では、If Then Blockに入力された値が6より小さい場合は Color(0,0,0) を出力。6以上の場合はColor(1,1,1)を出力する。

Whileループなども、同様に使用できるようだ。