2011年11月3日木曜日

メモ:Basic: Attributes III (ビデオチュートリアル)by Peter Quint


Basic: Attributes III by Peter Quint




sphere(SOP) - atttribcreate(SOP)

sphere(SOP)
PrimitiveType: Polygon Mesh
Radius:1, 2, 1

atttribcreate(SOP)
Name: myvar
Type: Float
Size: 3

マルチコンポーネント・アトリビュートの作成方法
ここでSizeが1であると下のValueでは1つ(左端)しか使えない。
しかしSizeを3にすると3つのコンポーネントをもたせる事が出来る。
myvar[0], myvar[1], myvar[2]

TypeをVectorにしても同じくコンポーネントは三つになる。
ただし myvar[x], myvar[y], myvar[z]

----------
point(SOP)を追加
Add Color $MYVAR1, $MYVAR2, $MYVAR3
Details Viewをみると、
myvar[0], myvar[1], myvar[2]の値がそれぞれ入っているのがわかる。

--------------
attribcreate1(SOP)のアウトプットにattribcreate(SOP)を別フローで追加。
Name: myvec
Type: Vector
Value:1, 1, 1


※カスタムDisplayオプション
シーンビューでdキーを押してディスプレイオプションを表示する。
Customの横にある三角ボタンを押してCreate Attrib Vectorで追加する。
できたオプション名を右クリックして詳細設定。

表示されるのはvectorとなる。
たとえばxyzが1,1,1であるならそのポイントを0,0,0の起点とした1,1,1に向かう線で表示される。

--------------
objレベルへ移動し、上記のカスタム表示のベクトルが上を向くようにSphereを回転させる。
この状態でアトリビュート血を見てもmyvecの値は1,1,1で変わっていない。

しかしシェーダーなどに適用される場合、このベクトル値はトランスフォームされた値になる。
ObjレベルでGeometryノードを作成
内部に入りobjectmerge(SOP)を作成。

object1にSphereを設定。
/obj/sphere

この段階ではTransformが適用されていない。
objectMergeノードのTransformは
デフォルトでは「into Specific Object」
これはその下のTransform Objectにオブジェクトを指定する必要がある。

「into This Object」に変更すると
このオブジェクトにトランスフォームが適用される。


myvarは1,1,1という風にカスタムアトリビュートの設定値が表示されている。
myvecは0.0860114,1.72959,-0.0334987という風にトランスフォームが適用された値となっている。
これがベクターと、3floatコンポネントの違いである。
(要するにローカルとワールドの違いか)


--------------
sphere1 - attribcreate1だけのネットワークにする。

attribcreate1
Name: myvar
Class: Detail
Type: Float
Size: 1
Value: 1234

attribPromote(SOP)を接続
(attribPromote: アトリビュートを異なるレベルへとコピーする方法)
Original Class: Detail
Original Name: myvar
New Class: Point
Promotion Method: First Match



---------------
<myvar(Primitive)でのテスト>
Change New Name: On
New Name : 空欄
Attrib Promoteが機能せず、Promotion Methodはスルー。
名称は元と同じ、アトリビュートは元のクラスの位置に表示される。
例:myvar(Primitive)はDetails Viewの「Primitive」に表示される。


Change New Name: On
New Name: newvar
AttirbPromoteは機能し、Promotion Methodで処理される。
名称は新しく入力した名前になり、アトリビュートは新しいクラスに表示される。
例:myvar(Primitive) --> newvar(Point)は「Point」に表示される。


Change New Name:Off
New Name: (無効)
AttirbPromoteは機能し、Promotion Methodで処理される。
名称は元と同じ名前になり、アトリビュートは新しいクラスに表示される。
例:myvar(Primitive) --> myvar(Point)が「Point」に表示される。


<Detail --> Point 変換の例>
-- attribCreate1--
Class: Detail
Type: Float
Size: 1
Value: rand($PT)
[Details View] : myvarの値はDetailクラスに0.641601と表示されている(一行のみ)

-- attribPromote1--
Detail --> Point
[Details View] :  PointクラスにID毎に42行(0-41)表示、すべて同じ値。
Sum of Squares(Promote Method)では、0.411651
それ以外のPromote Methodは全て0.641601



<Point --> Detail 変換の例>
-- attribCreate1--
Class: Point
Type: Float
Size: 1
Value: rand($PT)
[Details View] :  PointクラスにID毎に42行(0-41)表示。
全て異なる表示。
0- 0.641601
1- 0.800464
2- 0.510895
3- 0.775474
4- 0.879506
5- 0.20504
......

-- attribPromote1--
Point --> Detail
[Details View] :  Detailクラスに1行のみ表示。
Promote Method毎に値は異なる。
maximum: 0.98474
minimum: 0.0382924
Average: 0.570707
Mode: 0.0382924
Median: 0.657865
Sum: 23.9697
Sum of Squares: 17.0393
Root Mean Square: 0.636944
First Match: 0.641601
Last Match: 0.0382924


--------------
Sphere1にMeasure(SOP)を接続
measure1(SOP) :プリミティブの特定の計測値を元にアトリビュートを作る
Type: Area (各ポリゴンの面積を計る)

[Details View] :  PrimitiveクラスにポリゴンID毎に80行(0-80)表示。
アトリビュート名:area
0: 0.1393
1: 0.1393
2: 0.1393
3: 0.165396
(...以下繰り返し)

このスフィア全体の表面積を求めるには
measure1にattribpromote(SOP)を接続
Original Class: Primitive
Original Name: area
New Class: Detail
Promotion Method: Sum

[Details View] :  Detailクラスのareaアトリビュートが表示される。(一行のみ)
スフィア全体の面積は 11.6659


--------------
sphere1(SOP) -- attribcreate1(SOP)

radiusY: 2


Name: myvar
Class: Point
Type: Float
Size: 1
Value: rand($PT)

sphere1(SOP)のアトリビュートをsphere2(SOP)を作りそれに移行する。

Primitive Type: polygon


左インプット:sphere2
右インプット:attribcreate1
Attribute: Other Attribute
Attribute Name: myvar


--------------
<異なる数のポイントを持ったジオメトリにアトリビュートを引き渡す>

radiusY: 2

 :ポイントを一つだけ作る
point0: チェックボックスオン

attribcreate1をadd(SOP)に接続
:上で作ったポイントにmyvarアトリビュートを追加する
Name: myvar
Class: point
Type: Float
Sizez : 1
Default: 0.01
Value: 1223

attribtransfer1(SOP)を作成: myvarアトリビュートをsphere1のポイントに引き渡す。
左インプット: sphere1
右インプット: attribcreate1


これによりadd1でつくられた1つのポイントにあるmyvarの値は、
sphere1(ポリゴン)の全ポイントに引き渡される。
[Details View] :   PointクラスにID毎に42行(0-41)表示。
すべてmyvarの値「1223」

ここでattribtransfer1のDistance Thresholdを操作してみる。

放射状のフィルター領域。
Sphereの直径は1で、縦方向が2
Addのポイントからの距離。
このThresholdの範囲内にある場合はmyvarのデフォルト値0.01を表示。

たとえば1.01でいくつかのxz平面に近いポイントのmyvarが1223の値になり、
2.1にするとすべてのポイントのmyvar値が1223になる。

これをたとえば0.9にしてaddノードをシーンビュー上で移動すると、addノードから0.9範囲の中にあるポイントだけが1223の値を持つことになる。

ちなみに1は今回のスフィアのxz面の直径で、2はY方向の長さである。


(追記)Vimeoのページに著者よりの追記があったので追加。
 このチュートリアルで3つのFlaotアトリビュートのローカル変数は「 $MYVAR1, $MYVAR2, $MYVAR3.」であることを述べているが、ベクターアトリビュートの変数については述べていなかった。
それは 「$MYVECX, $MYVECY, $MYVECZ」である。








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

ヘルプ(翻訳):  Attirb Promote(SOP)

Attirb Promote(SOP)

あるジオメトリ・レベルから別のレベルへとアトリビュートを昇格もしくは降格する。
これはあるクラスのアトリビュートを別のクラスへと変換する簡単でわかりやすい方法です。例えば、いくつかの異なる結合方法から一つを使う事で、ポイント・アトリビュートをプリミティブ・アトリビュートへと変換させることができます。

インデックス・アトリビュートでは、マージメッソッドは、アトリビュートを文字列として扱います。
Averageは、中央値を提供します。
その他の数値を扱う方法は、最初に一致するモノから並べ替えます。

パラメータ
Original Name ソース・クラスのアトリビュート名 例えば「Cd」は色です。
Original Class アトリビュートが始めのクラスです。point, Primitive, detail, vertexのいずれかになります。
New Class これはアトリビュートをプロモート(昇格)するクラス。元のクラスとは異なるモノでなくてはならず、同じ場合はワーニングが表示されなにも起きない。
Promotion Method 新しいクラスが単いつにもかかわらず、一つ以上のアトリビュートがオリジナルのクラスに ある時は新しい値を決めるために、いくつかの方法(Method)が使われる。
例えば、PointアトリビュートをPrimitiveアトリビュートへ変更するときは、一つのポリゴンに複数のポイントが対応している。

Maximum 最大値に一致するもの
Minimum 最小値に一致するモノ
Average 平均値か、すべての一致するものを足して、その一致した数で割った値
Mode(並数)最大共通項。もし一つ以上が最大共通項になるようなら、最大共通の最小値をとる
Median(中央値) 中央値にもっとも一致するもの。もし複数あったなら、二つのうち高い方
Sum 一致するモノ全ての合計
Sum of Squares 一致する全てを二乗し、合計したもの。
Root Mean Square 一致する全てのものの二乗の平均値の平方根
First Match 最初に一致したもの。PointsをPrimitivesにプロモートするには、これはそのプリミティブ中の最初の頂点ポイントになる
Last Match 最後に一致したもの。PointsをPrimitivesにプロポーとするには、これはプリミティブ中の最後の頂点ポイントになる
Change New Name もしこれが設定されていなければ、新しいアトリビュート名はオリジナルの名前と同じになる。
New Name そのアトリビュートの新しい名前
Delete Original もし設定されていれば、プロ-モーとされああとにオリジナルは削除される。
注意:いくつかのケースでは、頂点アトリビュートを同じ名前のポイントアトリビュートへプロモートするような場合、オリジナルはいつも削除されます。これを避けるにはプロモートするときに名前を変えます。


 (注)このメモは私的にヘルプを翻訳したなメモで、完全な翻訳ではありません。
各自の利用は自己判断でお願いします。
抜け落ち、間違いの指摘は歓迎です。

2011年11月2日水曜日

ヘルプ(翻訳):  Attributes

Modeling Attributes


いくつかの一般的なアトリビュートのリストとその説明。

<概略>
アトリビュートは頂点、ポイント、プリミティブそしてサーフェイスに格納された名前を持った値のことです。
例えば、ポイント・カラー、位置、UV座標、スプライン・ウェイト(W)、そしてノーマルなどはポイント・アトリビュートとして格納されます。

エクスプレッション内でその値を使い、形状、色などを変えることが出来ます。
例えばポイントの垂直(Y)位置を元にしてPer-Pointカラーを設定できます。

(位置のような)いくつかのアトリビュートは、Houdiniによって自動的に設定されますが、マニュアルでアトリビュートを設定したり、自分自身のカスタム・アトリビュートを追加することも出来ます。

タブ・メニューのアトリビュート・グループ内のサーフェイス・オペレーターは異なるタイプのアトリビュートを設定するために存在しています。


Attribute SOPを使えば、パーティクルにArbitrary(独立した)アトリビュートを設定もしくは創作することも出来ます。
これは後にエクスプレッションで使うために、モデルに関連したカスタムのポイント毎の情報(Custome per-point information)を格納させてくれます。


一つのノード内のジオメトリにあるアトリビュートを見るには、ネットワークエディターで、ノードをRMBクリックし、ノードのジオメトリ・スプレッドシートを開くためにSpreadsheetを選択します。

パーティクルも
アトリビュート(複数形)を持ちます。
アトリビュート(複数形)はジオメトリとパーティクルシステムを相互作用させる時にとても重要です。
例えば、ジオメトリからエミットされたパーティクルは(デフォルトでは)それが生み出されたポイントのアトリビュートを継承します。
そしてAttribute Transfoer POPを使ってサーフェイスとパーティクル間でアトリビュートを移転させることによっておもしろい効果を生み出すことが出来ます。


<よく知られているアトリビュート>
優先順位の高いアトリビュートから低いものにならべると:
●Vertex アトリビュート
●Point アトリビュート
●Primitive アトリビュート
●Detail アトリビュート

高い優先順位のアトリビュートは低い順位にある似たようなアトリビュートを無効にします。
NameTypeSizeOnDescription
matindex1Detail, PrimitiveMaterial name specification(マテリアル名)
rishadeindex1Detail, PrimitiveRenderMan shader name(RMシェーダー名)
Cafloat3Detail, Primitive, Point, VertexAmbient color (override)(アンビエントカラー)
Cdfloat3Detail, Primitive, Point, VertexDiffuse color (override)(ディフューズカラー)
Csfloat3Detail, Primitive, Point, VertexSpecular color (override)(スペキュラカラー)
Crfloat3Detail, Primitive, Point, VertexReflect color (override)(リフレクトカラー)
Ctfloat3Detail, Primitive, Point, VertexTransmit color (override)(トランスミットカラー)
Cefloat3Detail, Primitive, Point, VertexEmission color (override)(エミッションカラー)
Alphafloat1Detail, Primitive, Point, VertexAlpha para/perp (override)(アルファ)
roughfloat1Detail, Primitive, Point, VertexRoughness (override)(ラフネス)
fresnelfloat1Detail, Primitive, Point, VertexFresnel coefficient (override)(フレネル値)
aparafloat1Detail, Primitive, Point, VertexAlpha parallel (override)(アルファ パラレル)
aperpfloat1Detail, Primitive, Point, VertexAlpha perp (override) (アルファ perp)
arollfloat1Detail, Primitive, Point, VertexAlpha roll off (override)(アルファロールオフ)
shadowfloat1Detail, Primitive, Point, VertexShadow intensity (override)(シャドー強度)
sbiasfloat1Detail, Primitive, Point, VertexShadow bias (override)(シャドー・バイアス)
Nvector3Primitive, PointSurface Normal(サーフェイス・ノーマル)
vvector3PointVelocity(ヴェロシティー)
uvfloat3Point, VertexTexture coordinates (UVW)(テクスチャ座標)
lodfloat1Detail, PrimitiveLevel of detail(レベルオブデティール)
dirvector3PrimitiveVector for attractor force(引力のベクター)
fedgefloat1PrimitiveEdge force for attractor(引力のエッジフォース)
fvortexfloat1PrimitiveVortex force for attractor(引力の頂点力)
fspiralfloat1PrimitiveSpiral force for attractor(引力の螺旋力)
massfloat1PointMass(質量)
dragfloat1PointCoefficient of drag(引っぱり係数)
lifefloat2PointLife time (index 0=time alive index 1=death time) (生存時間)
idfloat1PointIdentifying tag(IDタグ)
rest



float



3



Point



Rest position(レスト・ポジション)


 (注)このメモは私的にヘルプを翻訳したなメモで、完全な翻訳ではありません。
各自の利用は自己判断でお願いします。
抜け落ち、間違いの指摘は歓迎です。

2011年10月28日金曜日

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

Basic: Attributes II by Peter Quint



前回までに作成したネットワーク
sphere(SOP) - atttribcreate(SOP) - groupgeoemtry(SOP)

sphere(SOP)
Primitive Type: Polygon

atttribcreate(SOP)
Name:myvar
Class:Point
Type:Float
Value:rand($PT)

groupgeoemtry(SOP)
Entity: Points
Operation: Group by Expression
Filter Expression:$MYVAR > 0.5

--------------
これにpeak(SOP)を追加する。
Group: 一つ上流のgroupgeometryで設定したgroupを選択する。
Group Type: Points
Distance: 0.8   

--------------
<AttribCreate(SOP)で作成したアトリビュートが利用可能かどうかはどうやってみわけるのか?>

polyextrude(SOP)を接続
TranslateZに $MYVARと入力しても何も起きない。(ビデオではTYに入れるがTZのほうがわかりやすい)
これはヘルプでPolyExtrudeのローカル変数を見るとわかる。
ここで利用できるのは$PRである。
PRはPrimitive Numberである。
$MYVARはPointクラスであるので、この変数は何も影響を及ぼさない。
試しに上流のattribcreate(SOP)のClassを「Primitive」に変えると、$MYVARがPolyExtrudeで機能することがわかる。


attribcreate(SOP)のアウトプットから別フロートしてpoint(SOP)を接続
AddAlphaにして、$MYVARを値として入力する。
Details ViewでみるとポイントにAlpha値が表示されている。
$MYVARはPrimitiveクラスのままだがポイントとして使えている。

この理由は二つ
1)Point(SOP)がポイントを扱う(ヘルプでローカル変数にPT(PointNumber)がある)
http://www.sidefx.com/docs/houdini11.1/nodes/sop/point
2)attribCreate(SOP)のClassで指定したその下位レベルの情報を利用可能である。
例1:Detailは、「Detail,Primitive,Point,Vertex」を利用できる。
例2:Primitiveは「Detail」は利用できないが、「Primitive、Point、Vertex」は利用できる。
例3:Pointは「Detail、Primitive」は利用できないが「Point、Vertex」は利用できる。


--------------
<処理におけるノードの種類>
1)1度だけ処理するノード
2)ループ処理するノード

Point(SOP)はループ処理のノード。
どのループであれIndexをもっている。
Indexは毎回のループで利用可能である。

Pointの場合は$PT(PointNumber)がそうである。
各ポイントをそれぞれ処理する時に$PTを利用する。


--------------
Expression関数を使って変数にアクセスできる>

point():
prim():特定のノードのアトリビュート(プリミティブ・アトリビュート)の値を返す。

以下のエクスプレッションをPoint(SOP)のAddAlphaに入力
prim("../attribcreate1",$PR, "myvar",0)

"../attribcreate1" :SOPの名称

$PR :プリミティブの番号、ここでは変数を使用しているが例えば「1」と入れるとプリミティブ番号1の値を使用する。Details Viewで見ると、Alphaの値が全てこのプリミティブ番号「1」もつ値になる。

"myvar":アトリビュート名。attribCreate(SOP)で設定され出力されるアトリビュートmyvarを指定。

0:アトリビュートインデックス。(なぜ0なのか不明)


※(追記) アトリビュートインデックスは指定したアトリビュートがベクター値のように複数の値を持っている場合、どの値を使うのかを指定する。
例1:$P は位置なのでXYZの値を持つ 0:X、1:Y、2:Z
例2:$Cdは色なのでRGBの値を持つ  0:R、1:G、2:B
となる。
このチュートリアルでは$PR(プリミティブ番号)を使っているのでこれは値は一つしかない。
よって、0:Primitive Numberということになるのだと思われる。



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

2011年10月27日木曜日

メモ:Basic: Attributes I (ビデオチュートリアル)by Peter Quint

Basic: Attributes I by Peter Quint


- 変数
- グローバル変数と標準(スタンダード)変数
- いつ変数を使う事が出来るのか
- 変数とアトリビュート
- グループとオペレーションをコントロールするためにアトリビュートを使う
- アトリビュートのプロモーションとトランスファー


------------------
sphere(SOP)のRadiusYに以下のエクスプレッションを入力して説明
フレームを進めると球体がY方向にスケールされる。
$FF

$:変数を示す
F:Floating Number(浮動小数点数)
F:フレームナンバー

$FFは変数であり。フレームナンバーを示す。、ジオメトリのアトリビュートとは一切関係ない。


--------------
<どうすれば利用できる変数を知ることが出来るのか?>

ヘルプでチェックする。
1)現在使用しているノードのヘルプを見て目的の変数を見つける。
2)そこになければローカル変数を使ってみる。。使えるときもあるし、そうでないときもある。
(ローカル変数は各ノードのヘルプのページに書かれている。)

Global expression variables
内容別に使える変数がリストされている。

Standard Variables
ジオメトリのアトリビュートで利用できる変数
これはどこでも使えるアトリビュートではない。
たとえばSphereSOP内のRadiusYで、ポイントポジション(TX)を参照することは意味がない。


例:Sphere(SOP)のアウトプットにTransform(SOP)を接続
ヘルプでTransformノードを見てみる。
Local Variablesというセクションがある。
それらが使う事ができる変数である。
ここをみると$TXのStandard Variablesは使う事ができないが、$CEXなどは使えることがわかる。

例:Sphere(SOP)のアウトプットにpolyextrude(SOP)を接続
TranslateZに以下のエクスプレションを入力(ビデオではYに入力しているがZのほうが見やすい)
$PR*0.01
$PRはPrimitive Numberであり、polyextrudeのローカル変数である。





--------------
<アトリビュートは自分で作成できる:カスタムアトリビュート>
例:Sphere(SOP)のアウトプットにattribcreate(SOP)を接続
Name:myvar
Class:Point
Type:Float
Value:rand($PT)

$PTはポイントナンバー。
attribcreate(SOP)のローカル変数でもあり、スタンダード変数でもある。
このケースでは上位にSphere(SOP)があり、そこからPointの情報があるので、そのインプット情報を利用してランダム数を生成している。
Details viewでmyvarの値を確認することが出来る。

attribcreate(SOP)をネットワークからはずしてみるとわかるが、インプット情報がないと$PTは機能しない。
(このノードは調理できずエラーとなる)

--------------
<自作したアトリビュートをどのように使うのか?>
例:attribcreate(SOP)のアウトプットにgroupgeometry(SOP)を接続
Entity: Points
Operation: Group by Expression
Filter Expression:$MYVAR > 0.5
0.5より大きな$MYVAR値をもつポイントをグループ化する。


変数名は大文字になっている。
これはgroupgeometry(SOP)のLocal Variableを空欄にした場合、デフォルトでは、Name入力した名前を大文字にして変数名となる。groupgeometry(SOP)をMMBクリックで表示される情報からもそれがわかる。



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

2011年10月24日月曜日

Houdiniブートキャンプ

先週の木曜日~土曜日の3日間、SataMonicaにあるSideEffects社のトレーニングルームで、Houdini Boot Campに出席してきた。

有料($300)のコースだが、3日間でやる内容は以下の通りで非常に多岐にわたるモノとなっていた。
たくさんあるが、一通りどんなものかを説明するという趣旨のコースである。

1日目:
1)ライティング、シェーディング、レンダリング、シーンのライティング。
2)アトリビュートと変数の説明。カスタムアトリビュートの説明。
3)SOPソルバー:サンプルファイルを使っての作業。

2日目:
1)ダイナミックス:リジッドボディー・ダイナミクス、RBDの理解とコントロール
2)Flipソルバー:Flipフルイドの理解。フィールドの作成。
3)PyroFX:PyroFX入門。フィールドを作って作業する。

3日目:
1)VOPs VOPsの理解と使い方。
2)Houdini Digital Assets(HDAs):HDAの作成と理解。
3)質疑応答


10:00-17:00のスケジュールで、これらをシーンファイルを使いながら、説明していくのだが。
食事時間や小休憩を含むと実質時間は、5時間半ほどで一日、三つのカリキュラムをこなそうとするので、
一つに使える時間が2時間弱となる。
非常に早い、スピードで説明され、あえていうなら通常のビデオチュートリアルの2倍ぐらいの速度で進んでいく。
パラメータの位置などを探すためにまごまごしていると、3ステップぐらいすでに進んでいるような状況だった。

このコースに参加するにはHoudini基本操作は迷わずできるぐらいは、最低限でも必要と思われる。
また一通りの作業はやっていることが望まれる。
ソフトに依存しない理解においてはある程度の基礎知識がないとちんぷんかんぷんになってくる。
よって入門者やCG初心者には少々きつい内容ではある。

反面、カスタムシェーダーやVOPsなど結構ローレベルな操作もしていくので、その辺りを知りたい人やCGプログラミングをする人などには、けっこううれしい入門コースではないかと思う。


スピードに無理がある点は、教える側も理解しており、
全ての内容はステップ毎のシーンファイルが準備されており、途中で見失ってもそれをみればわかるようになっている。
また授業の内容は音声を含めて記録されており、後ほどチュートリアル動画としてコース参加者はダウンロード可能となる。
言ってしまえば、ビデオチュートリアルとステップ別のシーンファイルを渡しますが、それをとりあえず手っ取り早く説明しますねというほうが正しいかも知れない。


前もってシーンファイルなどをわたしてもらい予習を家でやり、その後にこのコースに参加すれば
理解はおそらく2倍以上になっていたのにと思う、もう少しやり方を考えてほしいところ。


--------------
さてコースの中身についての感想だが、

正直、まだまだ入門レベルの自分にはきつかった。
先に述べたようにスピードが速いので、どのノードを使ってどういうことをやるかというのをじっくり理解しているような時間はなかった。
このコースでやったことをどれか一つでもやって見せてくれと言われても多分できない。

とりあえず、何かやりたいことがあり、それはどういう考えをもって進めていけばいいのかということの概略をつかむことに集中した。
それもおそらく理解度は10-20%ぐらい...。


まぁ転んでもただでは起きるつもりはない。
自分なりに得られたモノは、ある。

1)まず、通常のチュートリアルではここまで入り込まないだろうというようなディープなところまで入って操作している所。
これから先、自分で勉強しているときに、おそらく選択肢として考える幅というか目をつけることの出来る領域は広くなったと思う。

2)つぎに、自分にはまだまだ覚えなくてはいけないことがたくさんあると言うこと。
今回のコースで作ったシーンは、比較的簡単なモノが多い。
それなのについて行けてない。
それは知らないHoudiniのノードであったり、知らないパラメータや、しらない接続の仕方だったりする。
いいかえれば、Mayaでできていたことができるようになるまでにも覚えるべき事がたくさんあるし、
Houdiniならできるだろうと思っていたことが出来るようになるまでにもまだまだ時間が必要と言うことだ。

3)Houdiniは非常に低いレベルのデータを直接扱える。
そしてそれゆえに非常に柔軟性がある。
Mayaだとノードの働きとその使い方、組み合わせを覚えることが作業を進めていく上で鍵となることがある。
Houdiniもそうなのだが、ちがいとしてはノードの中身を低いレベルまで細かく分割してみていくことができ、ノードを自作したりカスタマイズすることも可能。
プラグインがないという理由がわかる。
VOPsなどで使われるノードは、それ自体がスクリプト言語一つ一つをノード化したようなもので、
電子ブロックのような感覚で、自作ノードを作ったりノードを操作することが出来るようになる。


4)(上記と内容的にダブってはいるのだが...。)
どんなアトリビュートを利用できるのか非常に柔軟性のある考えをあたえてくれる。
これはチュートリアルをやってても感じる事が出来るHoudiniの一つの特徴だが、BootCampで自由自在にパラメータを接続し、エクスプレッションで加工し使っているのを見て、まさにそれがHoudiniを使う理由の大きな一つだと思った。

それゆえ、変数とか、Int、Vecといった変数の種類とか、CGの要素がそれぞれどんな種類の値を持っているのか(たとえばポリゴンフェイスは、Point、Normal、Colorなど)を明確に知っておくことがHoudiniでの作業の柔軟性を高める上で重要だと思った。
Houdiniでのデータの加工というのは、ポリゴン、カーブ、ポイント、シェーダー、ダイナミックスの境界を自由に越えていると思った。

CGがCGたる所以はコンピュータでいろいろな操作をすることが出来るからである。
Houdiniはスクリプトを作らなくても、ユーザーがコンピュータを操作していることが実感できるソフトである。


5)その他
3DCGソフトのシミュレーションは物理的に正確なシミュレーションではない。
振る舞いを物理的に近いモノにできるが、アーティストが操作することでより自由度のある動きを作ることが出来るようになっている。

Houdiniでは何かの情報を色のパラメータに置き換える事がある。
これは情報を色のパラメータに格納しているだけである。
(要は変数と同じか)

Houdiniを勉強するためにSideEffectsのサイトにあるチュートリアルをお勧めしていた。

6)自分のメモ:
エフェクトにはシェーディングなどの知識は二の次でよいかというとそうでもなくHoudiniはありとあらゆるパラメータを自由につなげることができるのでシェーディング関係も知っていた方が自由度は高くなるように思う。


--------------
今回のブートキャンプは当初、日本人は自分一人だろうと思っていたが、バンクーバーから二人が参加していた。
そのうちの一人は、以前日本に一時帰国したときにあった八尋氏で、1年半ぶりの再開となった。
もう一人の学生さんも含めて、金曜の夜はLAエフェクト飲み会を開催、DDの五十嵐さんにも参加していただき、
たのしい飲みとなりました。
(五十嵐さんには、ずっと気になっていた、あのTronショットの秘密を教えていただき、その力業に驚くと共にやっぱりそうなんだ~と納得)



またこのブートキャンプで目についたのは業界経験者がいたことです。
中にはMaya歴14年(Houdini歴6ヶ月)という人も居ました。
質問の内容からしても、他の方も6~7年は経験している人達のような感じがしました。
やはり、Houdiniへスイッチしようとしている人は増えてきているという印象です。

今現在のトレーニングの状況からすると、Houdini売り手市場なのは、LAではあと1年ぐらいじゃないかなという勝手な推測をたてています。
それ以降になると、しっかりとしたHoudini経験がないとなかなか採用されないような状況がでてくるような気がします。(あくまでLA内です)


おどろいたのは今回バンクーバーから来た二人の話ではバンクーバーではHoudiniアーティストが必要な会社は多いのに教える学校が1つしかないと言うことです。

少し前にカナダ政府は地元のアーティストを雇うように圧力をかけたという話を聞きましたが、会社側では使えるアーティストがいないという声も目にする状況でした。
一体何が起きているのかわかりませんでしたが、なるほどアーティスト自体はいるのかもしれませんが、即戦力となる(Houdiniのい)アーティストは不足してそうですね。


最後に皆が気になる12は、「今年中には」 という事です。

2011年10月6日木曜日

ヘルプ翻訳: Dynamics ノード

Dynamics ノード

http://www.sidefx.com/docs/houdini11.1/nodes/dop/

ダイナミックスノードはダイナミックス/シミュレーションの状態とルールを設定する。

ノード・フラグ


Bypass: このノードが影響しないようにする。
Display: シミュレーション時にこのノードまでのネットワークを使用する。


入力と出力:

ダイナミクス・ノードはオブジェクト・インプット(灰色)、データ・インプット(緑色)もしくは両方(object and dataを参照)を持っています。灰色は灰色へ、緑色は緑色へ接続する必要があります。

一つのダイナミクス・ノードはオブジェクトのアウトプットまたはデータのアウトプットを持っています。
いくつかのノードでは、それらのアウトプットタイプを接続されたインプットを元にそれらのアウトプットを切り替えます。
これはDataノードを使うかわりにノードの接続に、より便利な方法「埋め込み(inline)」を受けつけます。


ディスプレイ・フラグ: 

Houdiniがシミュレーションを実行するとき、
オブジェクトとデータの関係を確立するためにディスプレイフラグが立ったノードまでのネットワークを料理します。
なのでディスプレイフラグが立っているノード以降に接続されたノードはシミュレーションに影響しません。

バイパス・フラグ:

バイパス・フラグがオンの時、このノードは影響力を持ちません。