2010年8月5日木曜日

Houdiniの混乱する点

1) 見えないデータの流れがある。
フローなので、すべてアイコンがつながっている順番に処理されていくと思っていたら、エクスプレッションなどで見えないつながりが出て、ループしていたり、パラメータ設定で、他のコンテナ内のノードから情報を得る設定があったりする。



2) ノードの名前から機能が連想しにくい。
ノード名から連想する機能と実際の機能が完全に一致しているわけではない。
たとえば「Add」は名前からすると何かを追加すると推測できるが、実際にはポイントを作る。またはポリゴンを作成したり、ポリゴンからポイントだけを抽出する機能をもっている。

ヘルプの説明からすると、インプットに対してポイントまたはポリゴンを追加するというところからこの名称がつけられ、後の機能はそこから派生しているのだろう。


※勉強中は、これらの点に気をつけたほうがよいと思う。

2011年1月29日追記:
ノードのインプットとエクスプレッションの違い。
どちらも他のノードから情報を持ってくる方法である。
ノードのインプット:受け身。上流から流れ込んでくる。
エクスプレッション:能動的。他の場所にある情報を自らとりに行くイメージ

「Stamp」エクスプレッション関数 (Help)

Stamp」エクスプレッション関数
使い方:
stamp(scope, token, value)

通常は下流にあるCopyノードのスタンピング変数を探して使用する。
これは、浮動小数点値を得る関数なので、string値にはstampsを使用すること。

● scope: 値を獲得する元となるノードへのパス
● token: 値を獲得するための変数名
● value: もしtokenを設定しなければ、デフォルト値が使われる。

スタンピングの操作には以下の物が含まれる:
Cache, Copy, Lsystem surface nodes, Copy channle node.

例:
stamp("../copy1", "sides", 5)
stamp("..", "fuzzy", 0.5)

SOPs: Houdiniの基本 (本:Houdini on the Spot より)

SOPs: Houdiniの基本
サーフェイス・オペレータ(SOPs)を使ったモデリングでは、あなたはモデルを作るのではなく、モデルを作るためのプロセスを構築するのである
それはモデルをプロシージャルなものにし、そして変更可能なモデルを作ると言うことを意味する。
それらは、ディレクターが円の代わりに三角形を求めるために変更されるかもしれないし、動きや変形を組み込むため(例えば、身をよじるヘビや、飛ぶカエルなど)に変更が必要かもしれない。
この方法で作業する時は、いくつかの操作を特定の方法で組み合わせるためにたくさんの小技を知る必要がある
これらの形式は、素早くモデルを構築し変更するために便利な近道である。

2010年8月3日火曜日

ネットワークを再構成して表示

Lキー (ネットワークペイン内で)

例えば、シェルフ・ボタンをクリックしてノードが追加されたときなど、ネットワークペイン内でノードアイコンが重なって見えづらくなることがある。

そういうときに、Lキーを押すと全てののどが再整理されて、見やすくなる。

デュプリケート、ミラー、コンバイン


オブジェクトのデュプリケート
1)オブジェクトを選択
2)Modifyタブ > Duplicate
もしくはネットワーク内でコピー&ペースト


オブジェクトのミラー

1)オブジェクトを選択(複数可)
2)Modifyタブ > Mirror
3)View上部でMirror Planeなどを設定し、Enter
オブジェクトの複製がobjレベルで作成される。


オブジェクトのコンバイン(複数のオブジェクトを一つにまとめる)
1)複数オブジェクトを選択
2)Modifyタブ > Cobine
objレベルで、オブジェクトが一つのノードにまとめられる
3)必要に応じて名称を変更

Sweep SOP

Sweep SOP
プリミティブをバックボーンカーブに沿って断面にスウィープして、リボンやチューブ形状を作成する。


断面のプリミティブは、バックボーンカーブの各ポイントに垂直に配置される。
もし、リファレンス・ポイントが与えられれば、各プリミティブは、対応するリファレンスポイントの方向に面する。
●バックボーン・カーブはオープンでもクローズでも良いが、最低二つの点が必要。

●もし、バックボーンインプットが、一つ以上のプリミティブを持つなら、SweepはそれぞれのクロスセクションをSweepする。

●もしクロス・セクションのインプットが複数のプリミティブを持っているなら、Cycle Typeパラメターを使ってコントロールできる。

●Sweepは、クロスセクションのオリジンをデフォルトで、使用する。
User vertexやConnection vertexパラメターを使うことで、バックボーンにアタッチするクロスセクションのポイントを特定できる。

●ほとんどの場合、XYプレーン上にクロスセクションのプリミティブを作成しなくてはならない。
Sweepは、自動的にそれらの方向をバックボーンにそろえる。

●バックボーンのカーブがポイント・コントロールもしくは、テクスチャー・コーディネートを持っているなら、それらは保持されクロスセクション・プリミティブへ適用される。


Inputs
インプット:
Cross-section :バックボーン・カーブに沿ってスウィープするジオメトリ
Backbone path :Cross-sectionシェイプに沿ってスウィープするカーブ
Reference Points :もしこのインプットが接続されれば、各プリミティブはこのジオメトリの対応するリファレンスポイントへ向く。

Local variables
PT : 現在のバーティックス (Point)
NPT :ポイントの総数 Number of Point
PATH :パスプリミティブの数
PCT :バックボーン・パスに沿う割合(Percent)

Point SOP:

Point SOP
ポイントをマニュアル操作で追加もしくは編集する。

Houdini内では、各ジオメトリ・プリミティブは、ポイントのリスト(0から始まる)を持っている。
各ポイントはXYZの位置、色、アルファ、テクスチャUV,ウエイトそしてノーマル方向などのアトリビュートを持っている。

(ポリゴン、NURBS、Primitiveはポイントリスト内のそれらのポジションによって参照されるポイントであるバーテックスのリストを一つ持っている。これらのポイントは、複数のポリゴン/NURBS/プリミティブによって共有される)

Point SOPは、ポイント自信の位置を含むのアトリビュートの編集を可能にする。
例えば、オブジェクト・バウンディングボックスの中心からの距離を変更できる。
($BBX, $BBY,$BBZのローカル変数を使う)。
ポイントの色($CR,$CG,$CB)、ポイントのノーマル($NX,$NY,$NZ)を変更する。

これはとても一般的でパワフルなオペレータです。
ほとんど無限の目的に使用できます。
(ポイントの位置を変えることで)サーフェイスのデフォーム、(ポイントカラーを変えることで)おもしろいカラーエフェクト、(ポイント・ノーマルを変えることで)パーティクルのエミットの初期軌道(Initial Trajectories)を変えることができます。

このオペレータ内で使用するエクスプレッションは、各ポイントを評価することを考慮するのは重要です。
ローカル変数$PTは、現在処理されているポイントのポイント番号(ID)を持っています。

Tips:
●ポイントを編集するためにエクスプレッションを書くなら、「point」と「pointavg」関数が便利です。
●ビュー内で、ポイントのID(point numbers)を見るには、ビューの右サイドにあるディスプレイツールバーで「point numbers」をオンにします。
●ノーマルを裏返すには、Add normalsをオンにし、-$NX, -$NY, -$NZと入力します。
●このオペレータはポイントのアトリビュートを編集するので、Primitive SOPはプリミティブ全体のアトリビュートを編集します。
●PointSOPのローカル変数は、ポイントに対応しています。
detail、primitive、vetexなどの変数を使うために、プレフィックス“det”, “prim”, “vtx” を使うことができます。
例: $primTX, $primTY, $primTZとすれば、最初のプリミティブに属するポイントの「barycenter」です。


Parameters
Match By Attribute:
二つのインプットがある時の標準的な振る舞いは、ポイントIDに従いマッチさせます。
しかしながら、もしそれらのインプットがパーティクルシステムなら、パーティクルは、パーティクルが生まれたか削除されたかにかかわらず、同じパーティクルを求めるためおそらく正しくマッチしないでしょう。
「Match By Attribute」は、$TX2に2つ目のインプットのポイントを参照させます。それは、現在評価されているアトリビュートにマッチするアトリビュートです。
もし、2つ目のインプットで一つ以上のパーティクルがマッチする場合は、より大きなポイントIDのポイントが使われます。

Attribute To Match:
マッチングのためにアトリビュートを使う。
このアトリビュートはPoint SOPの両方のインプットに表示されなくてはならない。
平均はそれらを整数として扱うことで、決定されます。

Note:
できるだけデフォルト値を使うようにしましょう。
New と Addは新しい値をアサインさせてくれ、Noは全ての値を取り除きます。

Standardタブ
Position :XYZポジション
Weight :ポイントのスプライン・ウエイト
Color :ディフューズ・カラー(RGB)
Alpha :トランスペアレンシ値
Normal :ノーマル・ベクター
Texture :テクスチャー座標

Particleタブ
Mass :ポイントのMass
Drag :ドラッグの計数(率:Coefficient)
Tension :接続されたエッジのスプリング張力
Spring K :ポイント毎のスプリング定数
Velocity :速度ベクトル
Up Vector :アップ・ベクター・アトリビュート
Scale :Particleサイズを乗算する。
Instance: パーティクルにジオメトリをインスタンスする。

Forceタブ
Radius :エフェクトの半径
Force Scale :フォースの合計を乗算する。
Radial Force :アトラクターに向かう力
Normal Force:ノーマル方向に沿った力
Edge Froce :エッジ方向に沿った力
Dir.Force :任意の方向をもった力

Customタブ:
Number of Attribute: +ボタンをクリックしてアトリビュートを追加する。
-ボタンをクリックしてアトリビュートを取り除く。
Clearボタンをクリックして全てのアトリビュートを取り除く

Apply Attribute #: このアトリビュートが有効化されているかどうか。
アトリビュートの変更をコントロールする。
しかしながら、アトリビュートが存在しないなら、作られることはない。

Name#:アトリビュート名 例:Cd

Scalar Value :スカラー値
String Value :文字列値



Local variables:
PT :ポイント数(ID)
NPT :ポイントの総数
CEX, CEY, CEZ :入力ジオメトリの重心(Centroid)
TX, TY, TZ :ポイントの位置
WEIGHT :スプライン・ポイントのウエイト
BBX, BBY, BBZ :バウンディングボックス内でのポイントの位置。範囲は(0-1)
NX, NY, NZ :ノーマルの方向
MAPU, MAPV, MAPW :ポイントのテクスチャー座標
CR, CG, CB :ポイントのディフューズ・カラー
CA :ポイントのアルファ値
MASS, DRAG :ポイントのマスとドラッグ
TENSION, SPRINGK :エッジのスプリング張力とポイントの弾力性
AGE :パーティクルの寿命時間(秒)
LIFE :パーティクルの寿命÷予測寿命(0~1)
DIST :Rayオペレーションからの、交差するまでの距離
VX, VY, VZ :ポイントの速度値
UPX, UPY, UPZ :ポイントのアップ・ベクター値
ID : パーティクルID
PSCALE :パーティクルのスケール


PTn, NPTn :2つ目のソースのためには、nをつける。