On this page |
Lattice変形は、単純なジオメトリに加えた編集情報を受け取り、その編集情報と同等の変形を、キャラクタの腕などのソースジオメトリに加えます。 例えば、ラティスを膨らむように編集すると、それに応じてジオメトリも膨らみます。
Latticeノードでは、コントロールジオメトリの指定に2種類のメソッドがあります。 1つ目が Latticeデフォーマ です。これは、 Bound SOPやBox SOPで作成した特定の並びのポイントを持つコントロールジオメトリが必要です。 2つ目が、 ポイントデフォーマ です。これは、 任意の 形状をコントロールジオメトリにすることができます。
Note
Pw
の値は、ポイントベースの変形をした時のLattice SOPの結果に影響します。
Latticeの使い方
-
Deform タブのLatticeツールをクリックします。
-
変形させるポイントを選択して、Enterを押して選択を確定します。
-
再度Enterを押してオブジェクトの境界ボックスからケージを作成するか、他の変形ポイントクラウドを選択してEnterを押して選択を確定します。
-
ネットワークエディタでTransformノードをクリックします。
-
シーンビューでケージのポイントを動かして、ケージ内の形状を変形します。
Latticeデフォーマ
ソースジオメトリの境界ボックスから単純なLatticeを作成するには、ソースジオメトリにBound SOPを追加します。 Divisions をオンにして、値を利用したい制御点の数に設定します。 Latticeノードを作成して、上記のようにネットワークを接続します。 Latticeノードの Lattice をオンにして、 Divisions の値を同じ値に設定します。
Tip
Bound SOPは、フレーム毎にソースジオメトリの形状から境界ボックスを再計算します。 Bound SOPを使ってLatticeを作成し、ソースジオメトリをアニメーションさせる場合、 Latticeがソースジオメトリと一緒にアニメーションさせたくないのであれば、Boundノードをロックしたい時があります。
Note
Latticeを生成するノードとLatticeノードの"Division"の値は共に同じでなければなりません。そうしないとLatticeノードがエラーを出します。
Houdiniは、補間タイプをBezierに設定した時には30までの分割数のみをサポートしています。
他の方法では、Box SOPを使えば、ソースジオメトリの境界ボックスと連動しない任意のLattice形状を作成することができます。 Primitive Type をPolygonに、 Divisions をオンにして、値を利用したい制御点の数に設定します。
以下に示すポイントデフォーマと一緒にLattice形状を"任意のコントロールジオメトリ"下で使うこともできます。 これは、他と異なる結果になり、Lattice内のポイントの影響範囲を制御することができます。
ポイントデフォーマ (任意のコントロールジオメトリ)
ポイントデフォーマは、任意のコントロールジオメトリを使用することができます。 さらに、Restコントロールジオメトリの各ポイントの影響範囲を制御することができ、 そしてキャラクタモデリングでボーンがスキンサーフェスをキャプチャーするのと同様に、コントロール形状にジオメトリを"キャプチャー"することができます。 ポイントデフォーマを使えば、単純化されたローポリゴンのキャラクタやプロップ(小物)を操作することで、元のキャラクタやプロップ(小物)を変形することができます。
ポイントデフォーマは、Restコントロールジオメトリの各ポイントにメタボールを作成し、交差する"コントロール"メタボールの密度に基づいて、ソースジオメトリの各ポイントに影響度を割り当てることで動作します。
キャプチャー領域を可視化するには、Latticeノードでディスプレイフラグを設定し、Latticeノードのパラメータの Visualize Point-Specific Radii をオンにします。 すると、3Dビューに各ポイントでの影響範囲が表示されます。
Restコントロールジオメトリ内の各ポイントの影響範囲を制御するには、 Radius パラメータを使います。
Radius の値を大きくすると、各コントロールポイントが影響を与えるソースジオメトリのポイントが多くなって平均化されていくので、より滑らかになります。 反対に小さくすると、各コントロールポイントが影響を与えるソースジオメトリのポイントが少なくなるので、非常にシャープな変形になります。
Latticeは Kernel function パラメータで選択したメタボールカーネルから影響範囲の減衰レベルを計算します。 Latticeの挙動は、マグネットメタボールをソースジオメトリのすべてのポイントに適用するのと同等です。
Tip
コントロールジオメトリは、変形されるジオメトリを囲い込んでください。
Warning
"Rest"と"Deformed"のバージョンのコントロールジオメトリは、同じポイント数でなければなりません。 Latticeの場合では、それらのコントロールジオメトリは特定の並び(BoxとBoundのノードで自動的に作成される並び)であ る必要があります。 通常では、"Deformed"コントロールジオメトリは"Rest"コントロールジオメトリと同じノードから派生していて、適用して いる編集が異なるだけなので、このことは、上記のネットワークレイアウトを使っていれば意識する必要がありません。 コントロールジオメトリの編集に使用するノードは、必ずコントロールジオメトリのトポロジーを変えないでください。
パラメータ
Group
変形させる1番目の入力のポイント。
Lattice
概要
標準的な空間のLatticeを使って変形します。
Divisions
必ずLatticeグリッドの分割数に合わせてください。
Interpolation
変形させるジオメトリのポイントが、このメソッドによって補間されます。
Points
概要
任意のポイントクラウドを使って変形します。
Rest Group
使用するRest Geometry(静止ジオメトリ)のポイント。それに対応する変形させるジオメトリのポイントが暗黙のDeformグループとして使われます。
Kernel
ポイントの影響範囲を決めるために使用するメタカーネル。
Radius
ポイントキャプチャー領域のサイズ。
Normalize Threshold
キャプチャー領域境界で変形されるサーフェスジオメトリの変わり目の鮮明さを定義します。 閾値をゼロにすると、変わり目が急勾配になります。 閾値を大きくすると、変形されるデータソースジオメトリは滑らかになります。 技術的には、閾値はウェイトを正規化した後の値を定義します。 指定したポイントでのすべてのキャプチャー領域のトータルウェイトが、この閾値よりも大きければ、そのポイントのウェイトが正規化され、小さければ、正規化されません。
Visualize Point-Specific Radii
Rest Geometry(静止ジオメトリ)の各ポイントの半径を意味するガイド球の表示をオンにします。
Note
ポイントデフォーマの Radius をポイント毎に上書きするには、例えば、point("../attribcreate1",$PT,"rad",0)
のようなポイントエクスプレッションを使う必要があります。
入力
Data Source
変形させるジオメトリ。すべての入力タイプをサポートしています。
Initial Source
"Rest"バージョンのコントロールジオメトリ。
Deformed Source
"Deformed"バージョンのコントロールジオメトリ。Latticeは、この Deformed Source と Initial Source の入力の差分を使って、 Data Source 入力に適用する変形を計算します。
ローカル変数
Note
名前の最後が2
の変数名は、もし該当すれば2番目の入力のジオメトリを参照します。例えば、$PT2
は2番目の入力の現行のポイント番号を意味します。
AGE
パーティクルが生存する秒数。
ARC
L-systemsのルートからの円弧長。
AREA
プリミティブの表面積(Measure SOPで作成)。
BBX, BBY, BBZ
境界ボックス内におけるポイントの相対位置(0から1)。
CA
PointまたはVertexのアルファ値。
CEX, CEY, CEZ
ジオメトリの重心。
COMX, COMY, COMZ
質量の中心。
CR, CG, CB
PointまたはVertexのDiffuseカラー。
CREASE
PointまたはVertexのCrease Weightの値。
CY , NCY
$CY
は、Copy SOPで生成した現行のコピー番号で、0
から始まります。$NCY
はコピーの総数です。Copy SOPの2番目の入力を使用している場合は、$CY
の代わりに$PT
を、$NCY
の代わりに$NPT
を使用します。
DIST
パーティクルから最後の衝突までの距離。
DIV
Polywire(L-systemsで作成)に沿わせる円の分割数。
DRAG
ポイントの抵抗力。
GEN
L-systemsで生成したもの。
ID
入力のパーティクルのID。
LAGE
L-systemで計算したポイントの寿命。
LIFE
寿命における経過した時間の割合(0から1)。
LOD
詳細レベル。
MAPU, MAPV, MAPW
ポイントまたは頂点のテクスチャ座標。
MASS
ポイントの質量。
MAT
現行マテリアルの文字列名(shop_material
アトリビュートの値)。
MAXLAYER
表示でアクティブとみなされているレイヤーの数。
NPT
テンプレートジオメトリでのポイントの総数。
NX, NY, NZ
法線ベクトル。
NX2, NY2, NZ2
Point SOPの2番目の入力のポイントの法線ベクトル。
PERIMETER
プリミティブの外周の長さ(Measure SOPで作成)。
PR, NPR
プリミティブ番号とプリミティブの総数。
PSCALE
パーティクルのスケール。
PT
現在処理しているポイントのポイント番号。
RESTX, RESTY, RESTZ
Rest Position(静止位置)。
SEGS
カーブをPolywire(L-systemsで作成)に分割するセグメント数。
SIZEX, SIZEY, SIZEZ
境界ボックスのサイズ。
SPRINGK
ポイントの弾性。
TENSION
エッジのスプリング張力。
TX, TY, TZ
ポイントの位置。
TX2, TY2, TZ2
Point SOPの2番目の入力のポイントの位置。
TW
WEIGHTを参照してください。
UPX, UPY, UPZ
Upベクトル。
VTX, NVTX
頂点番号と頂点の総数。
VX, VY, VZ
Velocityの方向。
WEIGHT
ポイントスプラインのWeight。
WIDTH
カーブの幅。カーブとL-Systemで生成したPolywireをレンダリングする時にMantraで使われます。
XMIN, XMAX
ジオメトリの境界ボックスのX座標の範囲。
YMIN, YMAX
ジオメトリの境界ボックスのY座標の範囲。
ZMIN, ZMAX
ジオメトリの境界ボックスのZ座標の範囲。
Examples
BallBounce Example for Lattice geometry node
このサンプルでは、Lattice SOPを使って跳ね返るボールの作成方法を説明しています。
DeformLattice Example for Lattice geometry node
Lattice SOPは、ソースジオメトリを囲んだ単純なジオメトリを操作することでアニメーションする変形を作成することができます。
このサンプルでは、Lattic SOPでアニメーションするBOX SOPを使用してソースジオメトリを変形する方法を説明しています。 このケースでは、ソースジオメトリは球を使用しています。
LatticePerChunk Example for Lattice geometry node
このサンプルでは、ForEach SOPを使ってLattice SOPを球の各セグメントに適用する方法を説明しています。
The following examples include this node.
Formation Crowd Example Example for Crowd Solver dynamics node
変化する編成のセットアップを説明した群衆サンプル
このセットアップではエージェントの部隊を作成しています。ここでは2つのパスが作成されています。 部隊の中央部分から動き始め、2つの編成に分かれます。 1つが左側に、もう1つが前方に行進して、ゆっくりとその編成が、くさび形に変わります。
エージェントを編成内に維持させるために、独自のジオメトリ形状を使用しています。 その形状は、個々のエージェントに対してゴールとして使用されるポイントです。 その形状をブレンドシェイプさせることで、別の編成に変化させることが可能です。 crowdsourceオブジェクトの中に入って、その構造を確認してください。
Note
アニメーションクリップは、シーンを再生する前にベイクするのに必要です。これは、サンプルをCrowdsシェルフから作成した場合に自動的に行なわれます。 そうでない場合は、シーンファイルを希望の場所に保存し、'/obj/bake_cycles' ROP NetworkのRenderをクリックして、ファイルを書き出します。 それらのファイルのデフォルトのパスは、${HIP}/agentsです。
BoxSpring Example for Box geometry node
Box SOPは、ボックスの作成以外のことにも使用します。これは、特定の目的で既存のジオメトリを囲むこともできます。 Box SOPは、単純な六面体のポリゴンボックスを作成したり、ジオメトリの境界ボックスを計算したり、Lattice SOPと組み合わせて使用します。 box.hipファイルには、以下の事を説明するために、2つのオブジェクトがあります:
-
animated_bounding_box
animated_bounding_boxオブジェクトでは、アニメーションするオブジェクトを単純なボックスで囲む方法を説明しています。 これは、複雑なジオメトリを表示するときに、ボックスを表示フラグに設定し、複雑なジオメトリをレンダーフラグに設定したい場合に役に立ちます。
-
box_spring_lattice
これは、Box SOPとLattice SOPを組み合わせて使用したサンプルです。 Box SOPは、あるジオメトリ、この場合は球を囲む時に使用します。Box SOPのDivisionsにチェックを付けて、その値にLattice SOPの分割数を参照するように設定することで適切なジオメトリを作成します。
ボックス上面のポイントは、Group POPでグループ化しています。Spring POPは、そのグループのポイントをFixed Pointsに設定して、ボックスを変形しています。
この方法でBox SOPを使用すれば、入力のジオメトリ(この場合は、basic_sphere)が変わると、自動的にボックスとラティスもサイズが変わります。
BallBounce Example for Lattice geometry node
このサンプルでは、Lattice SOPを使って跳ね返るボールの作成方法を説明しています。
DeformLattice Example for Lattice geometry node
Lattice SOPは、ソースジオメトリを囲んだ単純なジオメトリを操作することでアニメーションする変形を作成することができます。
このサンプルでは、Lattic SOPでアニメーションするBOX SOPを使用してソースジオメトリを変形する方法を説明しています。 このケースでは、ソースジオメトリは球を使用しています。
LatticePerChunk Example for Lattice geometry node
このサンプルでは、ForEach SOPを使ってLattice SOPを球の各セグメントに適用する方法を説明しています。
BoundLattice Example for Spring geometry node
このネットワークでは物理シミュレーションでよく利用される3つのSOP(Bound, Spring, Lattice)を使用しています。
ソースジオメトリとして単純なポリゴンの球を作成しています。変形する参照として動作するBound SOPに球を接続しています。 また、Bound SOPは変形するオブジェクトを補強します。
境界ボックスを衝突オブジェクトのグリッドのグループと一緒にSpring SOPに接続しています。 Spring SOPは、他のオブジェクトと衝突した際のソースジオメトリの変形と挙動を適切に計算して物理運動をシミュレーションします。 Spring SOPは、オブジェクトの変形に影響を与える色々なアトリビュート(質量、摩擦などの特性)と一緒に外部の力を追加できる場所です。
最後にLattice SOPがSpring SOPから変形情報を受取、それをソースジオメトリの球に追加しています。
See also |