On this page |
このノードは、入力ポリゴンサーフェス(これはノードの片方または両方の入力に接続することができます)を受け取り、 Catmull-Clarkサブディビジョンアルゴリズムで各フェースを分割して、ポリゴンサーフェスを平滑化します。 これは、サーフェス全体または一部を分割して、局所的にディテールを加える(特にポリゴンモデルでよく起こる角が目立ったモデルを回避するのに役に立ちます)ことができるという点では、Pasteノードと似ていますが、 オブジェクト全体にたくさんの余分なジオメトリを追加する必要はありません。 入力メッシュのトポロジーの制約は特にありませんが、良い結果を得るには、すべてのポリゴンがConvex(凸)で、なるべく均一にポリゴンが分布しているのが良いです。
"Group"フィールドで指定した左の入力のすべてのポリゴンを使って、細分化するポリゴンメッシュを決めます。 同じポイントを共有しているポリゴンエッジは、同じエッジとして分類されます。 物理的に近いポイントを共有しているポリゴンエッジは、同じエッジとして分類されません。
"Creases"フィールドで指定した右の入力の要素が、Crease(折り目)として使われます。 Creaseポリゴンの各エッジは、同じポイント番号のポリゴンメッシュのエッジに対応します。 さらにポイントの位置は関係ありません。
このノードは、Vertexアトリビュートに対応していて、そのアトリビュートが保持されます。とはいえ、細分化した後のVertexアトリビュートは線形的に補間されるだけです。
Subdivideの使い方
To... | Do this |
---|---|
ポリゴンサーフェスを細分化する |
|
局所的にディテールを加える |
|
How to
To... | Do this |
---|---|
局所的にディテールを加える |
|
インタラクティブにエッジにCrease(折り目)を付ける |
|
フェース番号でエッジにCrease(折り目)を付ける |
|
Warning
RenderManレンダラーは、Creaseノードで適用したcrease
アトリビュートを直接使いますが、Mantraレンダラーでは、特許の問題により、そのアトリビュートを 使いません 。
Creases
Creasesフィールドには、2番目の入力に接続した参照ポリゴンのプリミティブ番号やグループを指定します。
Creasesは、サブディビジョンサーフェスにCrease(折り目)を付けることができます。 以下の図では、 Crease Weight を 0, 1, 2に設定した時の結果を表示しています。 ウェイトが大きくなるほど、Crease(折り目)が強くなります。
Crease WeightとRenderman
ribファイルを生成する時、creaseweight
アトリビュートが追加されますが、サブディビジョン化はされません。
RenderManでは、そのアトリビュートを内部的に使用して、レンダリング処理の時にサブディビジョンサーフェスを生成します。
Note
ribファイルにcreaseweight
アトリビュートを出力するには、ジオメトリオブジェクトのパラメータエディタの Render タブ > Geometry > Render as Subdivisionパラメータが設定されている必要があります。
Crease(折り目)のアルゴリズム
ノードの2番目の入力が接続されている場合:
-
Override Crease Weight Attribute をオンにすると、2番目の入力で定義されている各エッジが、その Crease Weight の値で上書きされます。
-
creaseweight
Vertexアトリビュートが2番目の入力に存在すると、2番目の入力の各エッジのCrease Weightは、そのエッジが属するVertexアトリビュートの中で一番大きい値に設定されます。 -
creaseweight
Primitiveアトリビュートが2番目の入力に存在すると、2番目の入力の各ポリゴンが、そのポリゴンに一致するエッジに対して、そのウェイトを設定します。
ノードの2番目の入力が接続されていない場合:
-
Override Crease Weight Attribute をオンにすると、サブディビジョンサーフェスのすべてのエッジが、その Crease Weight の値で上書きされます。
-
creaseweight
Vertexアトリビュートが1番目の入力に存在すると、このアトリビュートの値がサブディビジョンサーフェスのエッジに適用されます。 -
creaseweight
Primitiveアトリビュートが1番目の入力に存在すると、このアトリビュートの値がサブディビジョンサーフェスのエッジに適用されます。
共有エッジ上のCrease Weightの値は、そのエッジが属するVertexアトリビュートやPrimitiveアトリビュートの中で一番大きい値に設定されます。 例えば、2つのポリゴンがエッジを共有していて、それらのポリゴンのPrimitiveアトリビュートが使われる時、一番大きい値が、その共有エッジに適用されます。
改良版のOpenSubdivisionを使用する時は、以下のことも考慮されます:
-
cornerweight
Pointアトリビュートが存在すれば、そのアトリビュートを使って、サーフェスの頂点のコーナーウェイトが定義されます。 -
subdivision_hole
グループが存在すれば、そのグループ内のポリゴンは、サブディビジョン処理では穴と見なされます。 それらのポリゴンはサブディビジョンに寄与しますが、最終サーフェスには現れません。 -
osd_scheme
Detailアトリビュートが存在すれば、SOPで指定されているサブディビジョンアルゴリズムが上書きされます。 このアトリビュートにLoopサブディビジョンを指定する時は、入力のジオメトリが三角形化されていなければなりません。 -
osd_vtxboundaryinterpolation
Detailアトリビュートが存在すれば、 Point Attributes パラメータの値が上書きされます。 -
osd_fvarlinearinterpolation
Detailアトリビュートが存在すれば、 Vertex Attributes パラメータの値が上書きされます。 -
osd_creasingmethod
Detailアトリビュートが存在すれば、 Crease Method パラメータの値が上書きされます。 -
osd_trianglesubdiv
Detailアトリビュートが存在すれば、 Triangle Subdivision パラメータの値が上書きされます。
詳細は、OpenSubdivのドキュメントを参照してください。
Close Cracks
Close Cracks フィールドでは、亀裂をPull(引っ張り)またはStitch(縫合)のどちらかで閉じることができます。 Bias パラメータは、Pullにのみ適用され、Stichでは無効になります。 Boundary パラメータは、PullまたはStitchのどれかを選択すると有効になります。
亀裂は、非サブディビジョン領域上の単一エッジとサブディビジョン領域上の複数エッジによって形成されます。 Boundary パラメータは、非サブディビジョン領域上の単一エッジ、つまりこのエッジを含むポリゴンに対する処理方法を指定します。
Boundary パラメータを No Edge Division にすると、亀裂を引っ張って閉じ、サブディビジョン領域のエッジのポイントすべてが、 非サブディビジョン領域の一番近いポイントに引っ張られます(つまり動かされます)。 No Edge Division を指定すると、 Bias が無効になります。
亀裂を Divide Edges オプションでPullすると、その非サブディビジョン領域のエッジがたくさんのセクションに分割されて、 その非サブディビジョン領域のエッジ上の各ポイントがそれらのセクションのエッジ上の新しいポイントに一致させます。 新しく分割されたエッジ上のポイントがサブディビジョン領域のポイントと結合されます。 Bias を1にすると、サブディビジョン領域に沿ってそれらの結合ポイントが配置されます。 Bias を0にすると、非サブディビジョン領域に沿ってそれらの結合ポイントが配置されます。 (0から1の間の値は、それらの中間に配置されます。)
亀裂を Triangulate オプションでPullすると、ほぼ Divide Edges と同じ動作をしますが、さらに非サブディビジョン領域を三角形化します。 非サブディビジョン領域を曲率のあるサブディビジョン領域の方向にPullすることで、非平面ポリゴンが生成される場合がありますが、Triangulateオプションは、そのポリゴンを小さな(平面)ポリゴンに分割 するので、望ましいオプションです。 Bias を1にすると、通所では一番良い結果が生成されます。
Triangulateオプションは、Divide SOPが非平面ポリゴンの処理を想定していないので、必要です。
一方で、Stitch Cracks Togetherオプションは、新しいポリゴン(三角形)を挿入して、亀裂を閉じます。 No Edge Division を選択すると、たくさんの三角形が作成され、非サブディビジョン領域のエッジの1個のポイントに対して頂点が1個になります。
Divide Boundary Edges を選択すると、非サブディビジョン領域のエッジが分割されるので、三角形で使用可能なポイントがたくさん生成されます。 生成される三角形は、より標準的な形(細長い三角形ではない)になります。 Triangulate オプションは、再度、非サブディビジョン領域を三角形化します。 ただし、このオプションは、ほぼ使用しません。なぜなら、このポリゴンはStitch中は平面ポリゴンのままだからです。
パラメータ
Group
ポリゴンメッシュとして使用しサブディビジョン化するサブセット。
Creases
Crease(折り目)として使用するサブセット(2番目の入力)。
Algorithm
サブディビジョン化で使用するアルゴリズムを選択します。
Houdini Catmull-Clark
Houdiniのネイティブのサブディビジョンアルゴリズムを使用します。
Mantra Compatible Catmull-Clark
Mantra形式のサブディビジョンを使用します。
OpenSubdiv Catmull-Clark
サブディビジョン化するためのOpen Subdivライブラリを使用します。
OpenSubdiv Loop
ループサブディビジョンを実行するためのOpen Subdivライブラリを使用します(三角形で作られたモデルに最適です)。
OpenSubdiv Bilinear
双線形に改良したOpen Subdivライブラリを使用します(頂点のブレンドをしません)。
Depth
サブディビジョンの繰り返し回数。値が大きいほど、サーフェスがより滑らかになります。
Override Crease Weight Attribute
Crease(折り目)の度合いをcreaseweight
Primitive/Vertexアトリビュートで決めるのか、このオペレーションで上書きするのか設定します。
Crease Weight
Crease Weightを上書きすると、この値が使われます。
Generate Resulting Creases
Crease(折り目)を最終ジオメトリに生成します。
New Group
生成されたCrease(折り目)すべてを格納するグループの名前。
Close Cracks
Do Not Close
亀裂を閉じません。
Pull Cracks Closed
サブディビジョン化で発生した亀裂を閉じるために、サブディビジョン領域の境界上のポイントを動かします。
Stitch Cracks Together
サブディビジョン化で発生した亀裂を閉じるために、ポリゴンを追加します。
Boundary
No Edge Division
エッジを分割しません。
Divide Edges
Pull Cracks Closed または Stitch Cracks Together が設定されている時に、サブディビジョン領域周辺のエッジを分割するかどうか。
Triangulate
亀裂の境界上のポリゴンを三角形化するかどうか。
Bias
Pull Cracks Closed が設定されている時に、どのポイントを動かすのか決めます。
0
サブディビジョン領域のポイントを境界に合うように動かします。
1
境界上のポイントをサブディビジョン領域に合うように動かします。
Recompute Point Normals
ポイント法線が存在すれば、ポイント法線を再計算します。これを設定しなかった場合、ポイント法線は、ポイントと同じ方法で補間されます。
Smooth Vertex Attributes
オンにすると、VertexアトリビュートがPointアトリビュートと同じ方法で平滑化されます。しかし、継ぎ目(ポイントの位置は同じでも、Vertexアトリビュートが異なります)のVertexアトリビュートは線形的に補間されます。 オフにすると、Vertexアトリビュートが線形的に補間されます。Mantraサブディビジョンレンダリングに合わせるなら、これをオフに設定してください。
Enforce Consistent Topology
Pull Cracks Closed または Stitch Cracks Together が有効なら、サブディビジョンプリミティブと非サブディビジョンプリミティブ間の境界エッジに応じて、異なるトポロジーが生成される場合があります。 このオプションをオンにすると、この挙動が常に同一線上のエッジを無視することで、一貫したトポロジーを生成します。
Linear Creases
このオプションをオンにすると、標準(RenderMan)形式のCreaseからMantraの線形Creaseに切り替わります。
Build Polygon Soups
別々のポリゴンプリミティブではなく、Polygon Soupプリミティブを作成します。
Treat All Curves as Independent
ポリゴンカーブをサブディビジョン化していて、このオプションが有効な場合、カーブ間でポイントを共有することができなくなります。 各ポリゴンは、各頂点が独自のポイントを持っているものとしてサブディビジョン化されます。このオプションを有効にすると若干高速になり、 ポリゴンカーブをサブディビジョンカーブとしてレンダリングする時に、ビューポートやMantraがこの想定をするので、その結果が一致します。
Remove Holes
OpenSubdivで穴として判断されたフェースを削除します。これには、入力上のsubdivision_hole
グループで判断されたフェースを含みます。
Point Attributes
改良版のOpenSubdivを使用するとき、これは、Pointアトリビュート(P
を含む)をパッチ境界上で補間する方法を決めます。
Vertex Attributes
改良版のOpenSubdivを使用するとき、これは、Vertexアトリビュート(フェースは可変)をパッチ上で補間する方法を決めます。
Crease Rule
これは、サブディビジョン化する時にOpenSubdivがCrease(折り目)処理を実行する方法を決めます。
Triangle Subdivision
OpenSubdivがCatmull-Clark補間する時、これは、そのケイジ内に三角形があった時のサブディビジョンルールを制御します。
Examples
SubdivideCrease Example for Subdivide geometry node
このサンプルでは、ボックスの底面を細分化すると同時に上面の折り目を保持する方法を2つ説明しています。
The following examples include this node.
AutoFreezeRBD Example for Active Value dynamics node
このサンプルでは、RBDオブジェクトがRest状態になる時を自動的に検知して、Active状態をオフにするシステムを説明しています。 これは、計算時間とジッターを軽減するためにRBDオブジェクトをフリーズします。
FootLocking Example for Crowd Solver dynamics 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です。
Street Crowd Example Example for Crowd Solver dynamics node
2つのエージェントグループによるストリートのセットアップを説明した群衆サンプル。
このセットアップは、2つのエージェントグループを作成します。 黄色のエージェントがゾンビで、ストリートのパスに沿います。青色のエージェントがぶらついている歩行者で、ゾンビが近づくと走ります。
エージェントの状態を変更するトリガーは、crowd_sim DOPNETでセットアップします。 ゾンビのグループは、信号との距離と信号の色を使用し、信号が赤になると停止状態に変わります。 生存者のグループは、ゾンビが近づくと走行状態に変わります。
Note
アニメーションクリップは、シーンを再生する前にベイクするのに必要です。これは、サンプルをCrowdsシェルフから作成した場合に自動的に行なわれます。 そうでない場合は、シーンファイルを希望の場所に保存し、'/obj/bake_cycles' ROP NetworkのRenderをクリックして、ファイルを書き出します。 それらのファイルのデフォルトのパスは、${HIP}/agentsです。
SpinningFlipCollision Example for FLIP Solver dynamics node
このサンプルでは、ジオメトリのVelocityベクトルに基づいて、 ジオメトリ上に撒き散らしたポイントから新しいパーティクルを生成して FLIP流体を作成する方法を説明しています。 また、流体用の衝突オブジェクトとして動作するように、 ジオメトリをセットアップする方法も説明しています。
PaintedGrog Example for Fluid Object dynamics node
このサンプルでは、色の付いた滴を落として、Grogキャラクタをペイントするためにトーラスを作成しています。 Grogキャラクタは、その色の付いたトーラスによって色が付着します。 このサンプルでは、流体シミュレーションにカラー情報を追加する方法も説明しています。
TimelessGas Example for Gas Particle to Field dynamics node
このサンプルでは、TimelessモードでgasParticleToFieldの使い方を説明しています。
GuidedWrinkling Example for FEM Hybrid Object dynamics node
これは、ハイブリッドオブジェクトを使ってガイドとなる皺のセットアップです。 1番目のシミュレーションは、四面体と三角形で構成されたまだ皺のない詳細メッシュを作成します。 2番目のシミュレーションは、1番目のシミュレーションで作成されたアニメーションをターゲットにし、皺を追加しています。
FrictionBalls Example for RBD Object dynamics node
このサンプルでは、RBD Objectのfrictionパラメータについて説明しています。
Chainlinks Example for RBD Pin Constraint dynamics node
このチェーンシミュレーションでは、個々のチェーンリンクが、RBDシミュレーションでお互いに反応しています。
ReferenceFrameForce Example for Reference Frame Force dynamics node
水で満たされたRBDの花瓶を使って、花瓶の参照フレーム内で水のシミュレーションをします。
RippleGrid Example for Ripple Solver dynamics node
このサンプルでは、Ripple SolverとRipple Objectのノードの使い方を説明しています。 Bulge SOPでグリッドを変形させて、Ripple Objectの初期ジオメトリとRest Geometry(静止ジオメトリ)を作成しています。このオブジェクトは、Ripple Solverに接続しています。
Down Hill Lava Flow Example for Material shader node
このファイルでは、傾斜が低い箇所にCrust(地殻)が集まって硬化する溶岩の流れを作成しています。このアニメーションは、シェーダで作成していて、ジオメトリそのものはアニメーションしていません。
Note
Lava(溶岩)マテリアルのパラメータのほとんどを、サーフェスノードで作成したPointアトリビュートで上書きしています。
CaptureDeform Example for Cloth Deform geometry node
このサンプルでは、Cloth CaptureノードとCloth Deformノードを使って低解像度の布のシミュレーションを高解像度の布に転送する方法を説明しています。
CreaseBasic Example for Crease geometry node
このサンプルでは、Crease SOP, Vertex SOP, Attribute Create SOP, Subdivide SOPの4つの方法を使って、creaseweightアトリビュートをポリゴンジオメトリに追加しています。
また、MantraとRenderManでレンダリングした際にも違いが出てきます。Mantraは著作権の問題でcreaseをレンダリングできないことを知っておいてください。
Note
Mantraでcreaseをレンダリングするには、そのジオメトリを計算できるようにSubdivision SOPを追加する必要があります。オブジェクトレベルでRenderタブのGeometryパラメータをGeometry As Isに設定してください。
RenderManを使用していれば、Subdivide SOPは単なる結果のプレビュー用にすぎません。RenderManはレンダリング中にcreaseを計算します。オブジェクトレベルでRenderタブのGeometryパラメータをPolygons as Subdivision Surfacesに設定してください。
LowHigh Example for Dop Import geometry node
このサンプルではRBDオブジェクトに対応するために低解像度と高解像度のセットアップをする方法を説明しています。 どちらの解像度もDOP Import SOPを参照して、低解像度ジオメトリでシミュレーションをして、その結果を高解像度ジオメトリに転送してレンダリングしています。
このサンプルは、Cool Within Objectシェルフツールを使用して、溶岩を冷却する方法を説明しています。
PeakEars Example for Peak geometry node
このサンプルでは、Peak SOPを使って頭にとがった耳を作成する方法を説明しています。
Peak SOPに"先端"となるポイント番号を指定し、法線に沿ってそのポイントを移動してとがった耳を作成しています。
PolywireModel Example for PolyWire geometry node
このサンプルでは、Poly Wire SOPを使ってポリゴンの枠にポリゴンを作成する方法と、パラメータをローカル変数でカスタマイズできることを説明しています。
SpottedSoccerBalls Example for Scatter geometry node
このサンプルでは、Scatter SOPを使用して、別々の破片が追加または削除されても、整合性を保つようにポイントをばら撒く方法を説明しています。 これは、プリミティブ毎に独自の乱数シードを使用するオプションで実現しています。
SubdivideCrease Example for Subdivide geometry node
このサンプルでは、ボックスの底面を細分化すると同時に上面の折り目を保持する方法を2つ説明しています。
TransformFracturedPieces Example for Transform Pieces geometry node
このサンプルでは、Transform Pieces SOPを使って、低解像度ジオメトリによるDOPリジッドボディ破壊シミュレーションの結果から、 高解像度ジオメトリをトランスフォームする方法を説明しています。
See also |