どうも、篠島です。今回はBulletやODEでのコリジョンジオメトリを作成する時に使う事ができるBake ODE SOPを見てみます。
カテゴリー別アーカイブ: SOP
アトリビュートにブラーを掛ける
どうも篠島です。前回はPoint Cloud Filterが周りのポイントの加重平均を計算すると説明しました。要はアトリビュートにブラーがかかる感じですね。ということで今回はアトリビュートにブラーを掛ける方法を説明します。
Solverノードを使って実際に超簡単なソルバーを作ってみる
どうも篠島です。前回はSolverノードの簡単な使い方をしました。Solverノードは名前の通り毎フレーム処理されることからソルバーを作るのに利用されます。ここで今回はものすごく簡単な物理シミュレーションをSolverノードで実装してみます。
Solverノードの使い方
篠島です。Solverノードは理解すると非常に強力なノードですが、イマイチ良くわからない方のために解説してみます。Solverノードは要は毎フレームSolverノード内に含まれるSOPノードを実行します。
初心者用の入門ビデオ(小惑星)を作成致しました。
このビデオは、三部構成になっていて、モデルの作成、エクスプレッション、ペイントによる高さの調整及び簡単なレンダリングまでを行い、小惑星のプロトタイプを作ります。
グループの所でアトリビュートを直で指定
簡単なVOPの説明 (SOP)
こんにちは、篠島です。
VOPネットワーク内でVOPノードを組み合わせていろんな事をすることが出来ます。普通のノードはマルチスレッド対応してなかったりしますが、VOPネットワークを自分で組むとマルチスレッド対応なので処理速度も普通のノードよりも早いです。
Houdini14で追加されたSOPノード
Houdini14で追加されたSOPノードの一覧です。
Houdini13ではAttribVOP、VOP SOPのノードが似た機能として存在していましたが、
Houdini14ではAttribute VOPという名前に変更されております。
Agent | エージェントプリミティブを作成します。 |
Agent Edit | エージェントプリミティブのプロパティを編集します。 |
Agent Look At | エージェントの頭が指定したオブジェクトや位置に向くように調整します。 |
Agent Prep | 他の群衆ノードで使用する色々な共通Pointアトリビュートをエージェントに追加します。 |
Agent Proxy | エージェントを別の表示に変更します。 |
Attribute Delete | アトリビュートを削除します。 |
Attribute Interpolate | アトリビュートを補間します。 |
Attribute Randomize | 多様に分布したランダムなアトリビュート値を生成します。 |
Attribute Rename | Houdini13のAttributeノードの事です。 |
Attribute Transfer By UV | UVを使ってアトリビュートを転送します。 |
Attribute VOP | Houdini13のAttribVOPやVOP SOPに該当します。 |
Point VOP | 〃。Run Overのデフォルト値がPointsです。 |
Primitive VOP | 〃。Run Overのデフォルト値がPrimitivesです。 |
Vertex VOP | 〃。Run Overのデフォルト値がVerticesです。 |
Collision Source | DOP衝突で使用するジオメトリとVDBのボリュームを作成します。 |
Convert Line | ジオメトリを線分に変換します。 |
Crowd Source | Crowd Solverに使用する群衆エージェントを作成します。 |
Curve Groom | ビューポートでガイドカーブを直感的に制御することができます。 |
Draw Hair Guides | ヘアーガイドを描画します。 |
Grain Source | パーティクルベースのGrain(粒)シミュレーションのソースとして使用するパーティクルを生成します。 |
Hair Growth Field | ストロークプリミティブに基づいてVelocityフィールドを生成します。 |
Normal | サーフェス法線アトリビュートを計算します。 |
Output | サブネットワークの出力としてマークします。 |
Point Deform | ポイントクラウドに基づいてジオメトリを変形します。 |
Point Relax | お互いに指定した半径領域と重ならないようにポイントを動かします。 |
Primitive Wrangle | Houdini13のAttribWrangleに該当します。Run Overのデフォルト値がPrimitivesです。 |
Vertex Wrangle | 〃。Run Overのデフォルト値がVerticesです。 |
Reguide | 新しくガイドをばら撒いて、既存ガイドのプロパティを補間します。 |
Repack | パックAlembicやパックディスクプリミティブをパックジオメトリプリミティブとして再パックします。 |
Solidify | ポリゴンメッシュを自己交差のない密閉したポリゴンメッシュに変換します。 |
Split | プリミティブやポイントを2つのストリームに分岐させます。 |
Spray Paint | サーフェス上にランダムにポイントを吹き付けます。 |
Stroke Cache | ストロークに基づいてジオメトリを段階的に修正するツールの構築を簡単にします。 |
Test Geometry | テスト用ジオメトリ。 |
Transfer Guides | ガイドを転送します。 |
UV Flatten | ジオメトリをUVの島に平坦化(展開)します。 |
UV Layout | UVの島を指定した領域に詰め込んでUVを再接続します。 |
VDB Activate SDF | VDBボリュームプリミティブに記録された符号付き距離フィールドを拡張/収縮します。 |
VDB Clip | 境界ボックスや他のVDBをマスクにしてVDBボリュームプリミティブを切り取ります。 |
VDB Morph SDF | ソースとターゲットのSDF VDB間をブレンドします。 |
VDB Occulusion Mask | VDBプリミティブに対してカメラから見て影となる部分にボクセルのマスクを作成します。 |
Verify BSDF | 必要なインターフェースに準拠しているかBSDFを検証します。 |
Volume Rasterize Hair | レンダリング向けにファーやヘアーをボリュームに変換します。 |
Houdini14新機能~ヘアーとファー~
Houdini14では、ヘアー/ファー用に新しいグルーミング(毛繕い)ツールが導入されました。これらのツールは、将来のバージョンでより高度なグルーミングツールを開発するための基礎を備えています。
新しいグルーミングツール
- OpenVDBフィールドとStroke SOPをベースにしています。
- ヘアーガイドに作用します。
- 完全にプロシージャルであり、アーティスト制御が可能です。
- 親しみやすいファー。
- 新しいシェルフツールには、髪の作成、髪のカット、髪の伸ばし、髪の乱れ、髪の持ち上げ、髪の櫛通しを含んでいます。
- 特定の毛根を植えるツール(例えば、ほおの髭)。
- スクリーン空間とサーフェス空間の両方で動作するツール。
- スキンとの衝突を自動的に処理します。
- 高速で直感的。
他の変更と改良点
- ガイドに影響を与えるファーペイントツールすべてが、新しいグルーミングツールと互換性がなく、すべて置き換わったので削除されました: Comb, Comb Noise, Paint Bend, Paint Bend Noise, Paint Twist, Paint Twist Noise, Paint Length。
- Mantraでのヘアーとファーのレンダリングが高速化されました。
- Fur Object, Fur SOP, Mantra Fur Proceduralに、ガイドされていないヘアーを削除するオプションが追加されました。
- Volume Rasterize Hair SOPに、ラスター化されたカーブの幅をスケールするパラメータと接線をラスター化するオプションが新しく追加されました。
Houdini14新機能~ジオメトリ~
UV機能:
- 強力な新しいUV Flatten&Layoutツール
- インタラクティブなワークフロー。
- 理想的なUVリラクゼーション。
- udimサポート。
- 歪みの可視化。
- 高速なポイントと頂点の(境界)選択。
- UV調整用のピンハンドル。
- UV Peltノードの新しいペルティング(UV展開)オプション。
- UVビューポートとUV Quickshadeで高解像度なチェック柄背景画像が表示されます。
ポイントのScattering(ばら撒き):
- Scatterノードは、より堅牢で機能的になるように書き換えられました。テクスチャ空間でポイントをばら撒いたり、お互いのポイントを引き離し合って“Relax”させたり、より多くのアトリビュートとグループを拾い上げることができるなど、色々な改良が施されています。
- 新しいSpray Paintノードは、インタラクティブにサーフェス上にポイントをばら撒くことができます。
サーフェス化とソリッド化:
- Triangulate 2Dを非常に強力なものに書き換えました。
- 新しいSolidifyノードは、入力から密閉した交差のないメッシュを構築します。これはFEMソルバに使用する前の四面体化で非常に役に立ちます。
Alembicとパックジオメトリ:
- Alembicジオメトリの表示がビューポートで高速になりました。
- HoudiniはアニメーションするディスプレイチャンネルをAlembicへエクスポートできるようになりました。
- 可視情報と共にジオメトリを書き出し/読み込みに対応しました。
- Houdiniは、
.bgeo
と.bgeo.sc
のファイルに保存されたジオメトリを一気にではなく、必要に応じて読み込むことができるようになりました。 Fileノードでは、Delayed load geometry を有効にして、 Display packed as をフルジオメトリ以外の何かに設定します。 - Alembicレンダーノードには、ジオメトリ元のAlembicファイルの階層を使用してパックAlembicジオメトリを書き出すオプションがあります。 他にも、Alembicレンダーノードには、すべてのオブジェクトを折りたたむ新しいオプションがあり、これはジオメトリノードを使用してAlembicアーカイブを巡回するのに役に立ちます。
- AlembicレンダーノードにSOPパスからジオメトリを書き出すオプションが追加されました。 これにより、ROPネットワークから Build hierarchy from attribute オプションを使用できるようになりました。
- Alembic Archiveオブジェクトに、可視計算を平坦化する新しいパラメータが追加されました。
- Alembic ArchiveオブジェクトとAlembicジオメトリノードに、ユーザープロパティをインポートする新しいパラメータが追加されました。 そのプロパティはPrimitiveアトリビュートにJSONフォーマットで記録され、Alembic Xformオブジェクトのユーザーパラメータとして保存されます。
- ユーザープロパティと一緒にジオメトリをエクスポートするには、
abc_userProperties
とabc_userPropertiesMetadata
の文字列Primitiveアトリビュートを作成して、ユーザープロパティデータのJSONマップを格納します。 - パックジオメトリ/フラグメント上の
geometryid
Intrinsicアトリビュートは、参照ジオメトリを識別します。 - 任意の数のサブネット内にアニメーションジオメトリをエクスポートできるようになりました。
- File Mergeノードは、パックディスクプリミティブを読み込みできるようになりました。
- Repackノードは、Alembicとパックディスクプリミティブをパックジオメトリに変換することができます。 Packノードには、パックジオメトリまたはパックフラグメントを作成するかどうかのパラメータが新しく追加されました。 Unpackノードには、アトリビュートをアンパックジオメトリに転送できるパラメータが新しく追加されました。
- Houdinは、同次座標系でAlembic NURBSを書き込み、読み込み時にそれらを有理化します。
- AlembicファイルのMayaロケータは、
arbGeomProperties
と一緒に読み込まれるようになりました。 - ジオメトリオブジェクトの
abc_lock_geom
ユーザパラメータを有効にすると、そのオブジェクト内のすべてのジオメトリが、Alembicアーカイブへエクスポートする時のすべてのサンプルに対して最初のジオメトリサンプルを再利用します。
VDB:
- ベクトル値を持つVDBは、トランスフォーメーションをボクセルにも適用します(ベクトルタイプに依存)。 これは、上位互換を壊し、ベクトルVDBを使用していればHoudini14にシーンを読み込むとシーンが変わってしまう可能性があります。
.vdb
ファイル内のメタデータの処理が改良されました。ファイルレベルのメタデータは、vdb_dataname
Detailアトリビュートに読み込まれ、反対に.vdb
に保存する時も同様です。 保存は、64ビットのIntegerとDoubleの精度のアトリビュートを保持します。- 生成されるアトリビュートの名前の頭には
vdb_
が付かなくなりました。これにより、.vdb
ファイルを使用した時にシェードアトリビュートを上書きすることができます。 これは、Houdiniがvdb_
で始まるアトリビュートだけでなく、すべてのDetailアトリビュートを.vdb
ファイルへ保存することも意味します。
- VDBの面積/体積の計算が改良されました。これは、VDB Intrinsicsを使用した既存ネットワークの出力を変更する可能性があり、MeasureとScatterのノードも同様です。これらのノードは、この計算を使用します。
- Convert VDBノードを使用したFogからSDFへの変換は、1ボクセルではなく3ボクセルの半分の幅を使用します。これは有効なレベルセットを確保しますが、メモリを多く使用します。
- 新しくVDB Activate SDFジオメトリノードが追加されました。
FBX:
- FBXをインポートする時、再サンプリングされた回転を平滑化します。
- FBXインポートは、一貫して倍精度の浮動小数点トランスフォームを使用することで、精度の損失を回避します。
他の変更と改良点:
- SOPノードのロック/ロック解除は、右クリックメニューを使用しなければなりません。そのフラグは、単にノードの状態を表示するだけです。
- ジオメトリサブネットに複数の出力を持たせることができます。
- 新しいOutputノードを使用すれば、ジオメトリサブネット内の出力を収集することができます。
- OutputノードがGeometryオブジェクト内にあれば、Object Mergeは、そのオブジェクトをターゲットにし、HoudiniはOutputノードを使用し、ディスプレイフラグとレンダーフラグを無視します。
- ジオメトリファイル(
.bgeo.sc
)用の新しいBlocs圧縮は、GZIPよりも 高速 です。 - Deformノードは、従来よりも高速化されました(quaternionアトリビュートでテストすると、7倍まで高速化されました)。
- Divideノードは、 Max edges をオフにしたConvex(凸)ジオメトリに対応しました。 Max edges が3の時、そのノードは Triangulate non-planar を無視し、入力に非平面ポリゴンがあれば、その出力内の三角形の並びが変化してしまう可能性があります。
- エッジ選択をフェース(プリミティブ)選択に変換した時、選択したエッジを持つフェースだけを選択します(選択したエッジとポイントを共有したフェースは共有されません)。
- Resampleノードが飛躍的に高速化されました。このノードは、NURBS/Bezierのカーブとサーフェスをポリゴン/ポリラインに変換せずにネイティブに動作します。 カーブをポイントクラウドに変換する時に役に立つパラメータが新しく追加されました(Randomize first segment length, Create only points, Distance attribute)。
- Deform, Deform Muscle, Deform Metaのノードは、デフォルトで Deform normals がオンの状態で作成されます。
- 紛らわしい“Keep”オプションは、Attribute Deleteノードから削除されました。
- Point VOP SOPとPoint Wrangleのノードはデフォルトでは隠されています。代わりにAttribute VOP SOPとAttribute Wrangleを使用してください。(“Point VOP”と“Point Wrangle”は、UI内でトランジションを和らげるエイリアスとして利用可能です。)
- Transform Piecesは、Vertexアトリビュートもトランスフォームするようになりました。
- PolyCapは、ポリスープ、メッシュ、パラメトリックサーフェスをポリゴンで蓋することができるようになりました。 これは、高速で Unique points がオンの時に正しいポイント順で生成します。エッジグループを指定しない限りは、すべての非共有エッジを蓋します。 オプションを使えば、これをオフにすることができます。
- Groupは、ポリスープ、メッシュ、パラメトリックサーフェス内の非共有エッジを見つけることができるようになりました。
- テンプレートフラグのジオメトリノードには、ピンクのインジケータリングが付きます。
- Voronoi Fractureノードの Copy cell point attributes と Maintain piece numbering のオプションが飛躍的に高速化されました。
*
などのようにAttribute Copyと同じ構文を使用して、コピーするアトリビュートを指定することができます。 Voronoi Fractureは、デフォルトでは閉じた破片を生成し、内側のジオメトリに頂点法線を追加します。 - Volume TrailノードがVDBボリュームに対して動作するようになりました。
traillen
アトリビュートを使用すれば、ポイント毎に異なる数のTrailセグメントが可能になり、最大セグメントパラメータによって、Trailセグメントの数を制限することができます。 - 環境変数
HOUDINI_PTEX_WINDING
は、ptexture
フェースの期待される向きを制御します。この変数を1
に設定すれば、HoudiniはUとVの座標を入れ替えます。 これはZ-BrushなどのHoudiniと反対の向きを使用している他のソフトウェア・パッケージからのデータを読み込んだ後に向きを手動で入れ替えることなく使用できるようになります。 - アトリビュートの差分を保存するサーフェスノード(例えば、Paint, Sculpt, Edit, Group Paintなど)は、その差分を32ビット整数または浮動小数点として保存します(厳密には64ビットの値でない限り)。 それらの変更は、Houdini13.0とHoudini12.5に反映されているので、それらのバージョンではHoudini14で保存されたファイルを読み込むことができます。Houdini 12.1以前のバージョンでは、保存されたEditなしのノードでHoudini14.0ファイルを読み込みます。
- 共有されたボクセル配列を持つボリュームは、
.bgeo
ファイルへエクスポートする時にその共有を保持します。このデータを読み込むことができるのは、Houdini 13.0.437以降です。 - Volume Rasterize Particlesノードには、フィルターとマージの方法を制御するパラメータが新しく追加されました。Volume Rasterize Particlesは、VelocityストリークによるVelocityモーションブラーにも対応しています。
- Cacheノードは、フレーム範囲が変わった時にキャッシュ化されたフレームを適切に保持し、古い範囲を重ねます。これにより、例えば、現行フレームを基準に
$F-3
と$F+3
を使用してスライドした範囲を開始・終了フレームとしてキャッシュ化することができます。 Cacheノードには、キャッシュを無効化するための2番目の入力があります。2番目の入力のジオメトリに何か変更があれば、キャッシュを無効にします。 - File Cacheノードには、Fileノードと同様の File mode パラメータが追加されました。
- アトリビュートは配列(文字列配列を含む)を保持することができます。
- 共有されたボクセル配列を持つ複数ボリュームを保存すると、その共有が
.bgeo
ファイルに保持されます。 - Tetrahedralizeノードには、オペレーションが失敗した時に実行されるオプションが含まれました。複数の独立して接続されたオブジェクトを別々に四面体化することができ、破壊されるオブジェクトに繋ぎ目のない四面体を作成します。
- Connectivityノードには、接続性を計算する時に幾何学的な境界として作用するエッジを指定するパラメータが新しく追加されました。これにより、(例えば、UV Flatten向けに)エッジループ選択で作成される“島”を可視化することができます。
- Attributeノードは、Attribute Renameノードになりました。新しいAttribute Deleteノードには、古いAttributeノードのDeletionオプションを含んでいます。
- Rayノードは、最小距離を使用した時のアトリビュートの転送に対応し、光線とpolysoupsとの交差に対応しました。光線が当たったプリミティブ番号とUVW座標を含んだアトリビュートを出力することができます。 メタボールとメタ超2次曲面を含んだジオメトリと衝突した時に衝突グループを考慮します。衝突ジオメトリが近接しているとわかった時に飛躍的にパフォーマンスを改良できる Max distance パラメータに対応しました。
- 一般的には、
AttribX
ノードはAttribute X
に名前が変わりました。 orient
アトリビュートは、N
,up
,v
と共に、例えば“guess from name”に設定したタイプでAttribute Createノードによって作成された時に適切に“to be transformed”としてマークされます。- 例えばRayノードの Minimum distance オプションやxyzdist VEX関数のように、円上の再近接ポイントを見つけるノードと関数は、照会ポイントが円の内側にあれば、円の内側の位置を返します。
- Delete, Group, Partitionのノードの Geometry type パラメータは、小さく固定されたタイプのリストの代わりに、知られているすべてのジオメトリタイプをリストするように更新されました。
- Blastノードを使用してジオメトリすべてを削除する場合、アトリビュート名(例えば
P
)は、指示対象なしでDetail内に存在し続けます。これは、一貫性を保つのに必要です。 - Point Replicateの Inherit velocity パラメータにマイナス値を指定することができるようになりました。
- gepsユーティリティがより堅牢になりました。
.geo
と.bgeo
ファイルでは、グループのtype
設定がオプションになりました。Houdiniは、ファイルサイズを小さくするために、それらの設定を書き出さなくなりました。HOUDINI13_GEO_COMPATIBILITY
環境変数を設定すれば、13.0.600
以前のHoudiniバージョンと互換性のあるジオメトリファイルを書き出すことができます。