2011年12月31日土曜日

メモ:Basics : Volumes II (ビデオチュートリアル)by Peter Quint

Basics : Volumes II by Peter Quint


Houdiniのボリュームへの入門、第二部ではVolume Ramp(SOP)をボリュームの値を調整するために使います。
また同様にVOPコードを使うためにVolume VOPを使います。



--------------
<<Volume Ramp(SOP)>>
1)volumeramp(SOP)を作成
2)isoSurface(SOP)を作成
Implicit Function:  ($Y+1)*0.5
Build Volume: On

$Y値に伴う値の変化 
0 > (0+1)*0.5 = 0.5
1 > (1+1)*0.5 = 1.0
2 > (2+1)*0.5 = 1.5
3 > (3+1)*0.5 = 2.0
4 > (4+1)*0.5 = 2.5
5 > (5+1)*0.5 = 3.0
6 > (6+1)*0.5 = 3.5
7 > (7+1)*0.5 = 4.0
8 > (8+1)*0.5 = 4.5
9 > (9+1)*0.5 = 5.0
10 > (10+1)*0.5 = 5.5

これは下から上に向けての濃度グラデーションで表現される。

3)iso1(SOP)出力を、volumeramp1の入力へ接続
※iso1からのフローは1つのVolumeしなかいことに注意。

4)volumeramp1(SOP)
NewName:Cd
Scalar Ramp:適当に二つの山谷を作る。
(谷となったところは透明に山の所は濃くなる)
Use Color Ramp: オン

「User Color Ramp」をオンにしたことでここからのVolumeは3つになる。
Red、 Green、 Blueのカラーの3つのボリュームになる。
入力されるボリュームはカラースプライン(Color Ramp)にフィードされ、色情報が付加されて出力される。

--- カラーを確認するにはレンダリングする必要がある。
5)カメラとディレクショナルライトを作成して設定。
6)Material Paletteで「Basic Smoke」マテリアルを作成
7)/objレベルでgeo1を選択
Materialタブ
Material > Chooser > basicsmoke
8)Create Render Node >Mantra
レンダリングしてみる。

Color Rampの左側の色が下部に右側の色が上部に適用されることがわかる。


<<Volume VOP(SOP)>>
1)isoSurface(SOP)を作成
Implicit Function:  ($Y+1)*0.5
Build Volume: On

2)isosurface(SOP)のアウトプットに、volumeVOP(SOP)作成
※エラーが起きる。
Warning: Cannnot find primitive attribute 'name' , binding volume as 'density'.
これはisoSurfaceはデフォルトではname(名前)を持っていないからである。

3)isosurface(SOP)とvolumevop(SOP)の間にname(SOP)を作成
作成した時点でエラーは消える。
Group: 0 (現在入力されるプリミティブは1つで番号は「0」である)
プリミティブ番号「0」に以下のNameをつける)


もう一つの方法は、
4)volumevop(SOP)
Volume Bindingsタブ
Autobind by Name オフにする。
Number of Bindings: +ボタンをおして1にする。
primitiveはひとつなので、「0」を入力。
Name : density

これでプリミティブはDensityにバインドされる。
このDensityをベースに計算が行われ、ボリュームに対してフィードバックされる。
※Autobind by Nameはオンに戻して次へ進む

5)volumevop(SOP)にダイブする。
parameterノード作成
ノード名:myvol_in
parameter Name: myvol
Invisible: オン

6)myvlo_inノードをデュプリケート
ノード名:myvol_out
デフォルトでは同じパラメータ名(ここではmyvol)は一つのノード内では使えないので、myvol_outのパラメータはグレイアウトしている。

Use This Node to Set Parameter Attributes : オンにする。
Export: Never > Alwaysに変更

7)Turbulent Noiseノード作成
volumevopglobal1のポジション(p)を turbnoise1(Position)に接続

8)multiplyノード作成
turbnoise1のノイズ(Noise)をMultiply1の入力(inpupt1)に接続

9)myvol_inのmyvolをmultiply1のinput2へ接続

10)multiply1の出力(product)をmyvol_outのinputへ接続

11)volumevopglobal1のdensityとvolumevopoutput1のdensityの接続を解除

12)ノードの接続をVEXコードで確認
turbnoise1ノードを右クリックして「View VEX Code...」を選択

View Code画面で
// Code produced by : multipoly1
myvol = noise * myvol;
となっている。



--------------
※ Volume マテリアルのボクセルについては
SideEffectsのMantra Master Classでカバーされている。


(注)このメモはビデオチュートリアルを見ての私的なメモで、完全な記録ではありません。
各自の利用は自己判断でお願いします。
抜け落ち、間違いの指摘は歓迎です。

0 件のコメント:

コメントを投稿