On this page |
概要
このノードのオペレーションには、2つのモードがあります。 入力を接続した場合 、 File Mode からディスク上のジオメトリのRead/Write/キャッシュを選択することができます。 入力を接続しなかった場合、ディスクから読み込むジオメトリファイルを指定して、それをノードの出力へ出すことができます。
さらに、FileとFile Data DOPで作成された.sim
と.simdata
ファイルの読み込みをサポートしていますが、書き込みはサポートしていません。
Tips
-
ノードをクリックして Save Geometry を選択すれば、 任意のサーフェスノード から1ショットのジオメトリを書き出すこともできます。
サーフェスノードネットワークのジオメトリ出力を常にレンダー依存ネットワークの一部としてディスクに書き出すプロシージャルワークフローをセットアップするには、Geometryレンダードライバをセットアップします。
-
Fileノードをロックすることで、
.hip
ファイルに読み込むジオメトリを外部ファイルを使用せずに"インポート"することができます。
パラメータ
File Mode
ディスクからジオメトリを読み込んだり、ディスクへ書き出す設定。
このパラメータは、ノードの入力を接続した時のみ利用可能です。
Automatic
ファイルが存在しなかった場合はWrite、存在すればReadになります。
これは、ノードが初回でクックした時にディスクにキャッシュを書き出し、それ以降はキャッシュファイルを使用する時に役に立ちます。
強制的にキャッシュを更新させるには、手動でディスクのファイルを削除します。
Read Files
ファイルからジオメトリを読み込みます。ノードの入力が接続されていれば、このパラメータは無視されます。
Write Files
入力ジオメトリをディスクに書き出します。
No Operation
ファイルにアクセスしません。Nullサーフェスノードと同様に、入力ジオメトリを出力にそのまま通します。
Geometry File
読み書きするファイルの名前。
Reload Geometry
強制的にファイルを再読み込みします。 また、これはパックディスクプリミティブのキャッシュデータをクリアします(geocacheコマンドも参照してください)。
Object Mask
.sim
ファイルを読み込む時に、ディスクから読み込むオブジェクトを決めます。
このパターンに一致したオブジェクトが読み込まれます。
Geometry Data Path
.sim
ファイルから読み込んだ各オブジェクトに対して、このパスに一致したオブジェクトのデータが読み込まれます。
*
パターンを使うと、複数のデータに一致します。空っぽにすると、Geometryデータのみが読み込まれます。
Missing Frame
指定したファイルがディスク上になかった時に実行する処理。 これは、 File Mode がRead Filesモードの時にのみ使います。 デフォルトでは、指定したファイルがなかった場合には、SOPがエラーを起こします。 これは、そのエラー内容からネットワーク内の問題を見つけることができます。 No Geometryに設定すると、警告のみが報告されます。
No Geometryモードでは、入力がFile SOPに存在すると、その入力がそのまま通過します。このモードでは、File SOPを読み取り専用キャッシュにすることができます。
Load
ヘッダにメタデータを含むファイルフォーマット、特に.bgeo
, .bgeo.sc
, .geo
は、ファイル全体を読み込まずに読み込むことができます。これは巨大なデータセットの処理で役に立ちます。
All Geometry
ファイル全体を読み込みます。設定により一部を遅延読み込みさせることができます(以下参照)。
Info
ファイルの読み込みに成功すると、1個のポイントを作成して、メタデータの各名前付きコンポーネントのアトリビュートを追加します。
Info Bounding Box
ファイルのヘッダに記録された情報を使って、境界ボックスの構築を試みます。
Point Cloud
ディスクファイルからポイントの読み込みを試みます。ポイントクラウドは、プリミティブの読み込みよりも高速でメモリが少なく済みます。
Packed Disk Primitive
ジオメトリをメモリに読み込むのではなく、パックディスクプリミティブを作成します。遅延ロードプリミティブのコピーは、ジオメトリを共有するので、複数コピーのメモリ使用量が少なく済みます。
Packed Disk Sequence
ジオメトリをメモリに読み込むのではなく、パックディスクシーケンスプリミティブを作成します。 パックディスクプリミティブとは違い、パックディスクシーケンスは、レンダリング時にアンパックされるファイルのインデックスと併せてファイル名のリストを記録します。 パックディスクシーケンスプリミティブは、そのディスクシーケンス内のすべてのファイルを把握しているので、(トポロジーがフレーム間で一致していれば)レンダリング時にサブフレームジオメトリのブレンドを計算することができます。 つまり、モーションブラーを正しく計算することができます。 パックディスクシーケンスプリミティブを作成すると、そのフレーム範囲内でフレーム毎に Geometry File パラメータが評価されます。 パックディスクシーケンスプリミティブのインデックスは、 Sequence Index パラメータの値に設定されます。
Pack Using Expanded/Absolute File Path
ジオメトリを Packed Disk Primitive として読み込んだ時、このトグルは、プリミティブと一緒に保存したファイル名の変数を展開するかどうか制御します。
デフォルトでは、変数は保持されます。例えば、$HIP/geo/tree.bgeo
というファイル名は、$HIP
変数の値が臨機応変に変化するので、持ち運びができます。これは、パックプリミティブをディスクに保存して、そのジオメトリファイルを動かす場合にのみ重要です。
パックプリミティブに変数を保存する時(トグルがオフ)、プリミティブ自身が変数展開を実行します。プリミティブは、Houdini以外のアプリケーション(例えば、mantra
、gplay
、gconvert
など)からアクセスすることができるので、変数展開は、機能を制限してしまいます。例えば、.hipファイルのローカル変数や他のノードを参照するエクスプレッションを使うと、期待したように動作しなくなります。
Display As
ジオメトリを Packed Disk Primitive として読み込んだ時または遅延読み込みした時、ビューポート表示をより軽いパックジオメトリ表現に設定することができます。この設定は、ビューポート内のレンダリングにのみ適用され、レンダリング時にはフルジオメトリがレンダリングされます。
Use File Setting
パックプリミティブには、ファイルに保存されたビューポートディスプレイ設定があります。 このオプションはそれらの設定を読み込んで使用します。他の設定すべては、保存された設定を上書きします。
Full Geometry
ビューポートにフルジオメトリを表示します。
Point Cloud
ジオメトリのポイントのみを表示します。これはレンダリングするメモリ使用量が少なくて、高速です。
Bounding Box
ビューポートにジオメトリの境界ボックスのみを表示します。
Centroid
境界ボックスの中心に1個のポイントを表示します。
Hidden
ビューポートにジオメトリを表示しません。
Delay Load Geometry
このパラメータを設定すると、パックプリミティブと他の共有データが直ぐに読み込まれず、必要な時にのみ読み込まれます。 これは、巨大なシーンを開く際に、その読み込み時間を減らすのに役に立ちます。
Create Intermediate Directories
必要に応じて、出力ファイルの中間親ディレクトリを作成します。
Cache Frames
メモリにキャッシュ化するフレームの総数。これらのフレームはファイル名でソートされ、時刻でソートされているわけではないので、 複数のフレームが同じファイル名を評価していれば、それらのフレームは、同じキャッシュジオメトリを共有します。
Note
1の値は、File SOPのデフォルトの挙動とほぼ同じです。 とはいえ、古いジオメトリが開放される前に新しいジオメトリが読み込まれます。 これは、エージェントプリミティブを読み込んだ時に、共有されているエージェントシェイプキャッシュがクリアされてしまう可能性を回避します。
Pre-fetch Geometry
次に必要なフレームを予測して、バックグラウンドでそれを読み込もうとします。 これにより、計算をファイルIOとオーバーラップさせることができます。
複数のフレームをブレンドする場合は、 Cache Frames が、次の新しいフレームだけをクック毎に読み込むのに十分な大きさである必要があります。 そうしないと、その先読みをする単純な予測モデルが混乱して動作を停止してしまいます。
Frame Range
Packed Disk Sequence プリミティブを作成した時、このパラメータには、そのディスクシーケンス内のファイル名の番号を指定します。
Geometry File を評価する時に、$F
や$FF
の変数がそのフレーム範囲の値に設定されます。
Sequence Index
Packed Disk Sequence プリミティブを作成した時、このパラメータには、レンダリング時に使用されるシーケンスのジオメトリを指定します。 このインデックスの値は線形であり、その範囲は0からディスクシーケンス内のジオメトリファイルの数(フレーム番号を基準にしていません)です。 範囲外のインデックス値は、自動的に周回してアニメーションサイクルを生成します。
インデックス値には非整数値を持たせることができます。トポロジーがディスクファイル間で一致していれば、そのジオメトリがレンダリング時にブレンドされます。
vm_pack_sequencesubsteps
レンダリングプロパティも参照してください。
Tip
画像シーケンスまたはgeoファイルでフレーム名をゼロ詰めにしたい場合は、以下のようにします:
<path_to_image>/frame`padzero(3, $F+1)`.tga
3はシーケンスの桁数です。例えば、001は3桁詰め、0002は4桁詰めなど。エクスプレッションは、文字列パラメータ内で評価されるので、バッククォートが必要です。
Wrap Mode
Packed Disk Sequence プリミティブを作成する際、このパラメータには Sequence Index がフレーム範囲外の時の挙動を指定します。
Cycle
ファイルシーケンスを反復させます。
Clamp
Sequence Index がフレーム範囲前の時は最初のファイルが使用されます。 Sequence Index がフレーム範囲後の時は最後のファイルが使用されます。
Strict
フレーム範囲外ではジオメトリがなくなります。
Mirror
反復の度に順番を逆にしてファイルシーケンスを反復させます。
Examples
PackedPoints Example for File geometry node
このサンプルでは、File SOPを使って、ディスクのパックプリミティブの遅延ロードを実行して、 モーションブラーのレンダリングでフレーム毎に複数ジオメトリのサンプリングを行なう方法を説明しています。 パックジオメトリをディスクに保存すると、参照付きでポイントジオメトリのみがディスクファイルに保存されます(ディスクファイルは非常に軽いです)。
PackedSamples Example for File geometry node
このサンプルでは、File SOPを使って、パックプリミティブの遅延ロードを実行して、 モーションブラーのレンダリングでフレーム毎に複数ジオメトリのサンプリングを行なう方法を説明しています。
PackedSequence Example for File geometry node
このサンプルでは、File SOPを使ってパックディスクシーケンスを読み込む方法を説明しています。
The following examples include this node.
DynamicLights Example for Dynamics channel node
このサンプルでは、Dynamics CHOPを使って、DOPシミュレーションからインパクトデータを抽出して、そのデータを修正して、シーンのライトを制御する方法を説明しています。
Fetch Example for Fetch Parameters channel node
このサンプルでは、Fetch CHOPについて説明しています。
このサンプルでは、Fetch CHOPを使って、Nullノードのtx、ty、tzのチャンネルをインポートする方法を説明しています。
HoldLight Example for Hold channel node
このサンプルでは、Hold CHOPとDynamics CHOPを使って、新しいインパクトが発生するまで、DOPシミュレーションのインパクトの位置にライトを固定する方法を説明しています。
ClipLayerTrigger Example for Agent Clip Layer dynamics node
このサンプルでは、Agent Clip Layer DOPを使って、エージェントの上半身にクリップを適用する方法を説明しています。 このクリップは、そのエージェントが境界ボックス内にある時にアクティブになります。
MultipleSphereClothCollisions Example for Cloth Object dynamics node
このサンプルでは、色々な特性を使って布を球と衝突させる方法を説明しています。 Stiffness(剛性)とSurface Mass Densityを調整することで、布の挙動を変更することができます。
CrowdHeightField Example for Crowd Solver dynamics node
このサンプルでは、Crowd SolverのTerrain AdaptationとBullet SolverのラグドールのコリジョンにHeight Fieldを使用する方法について説明しています。
FootLocking Example for Crowd Solver dynamics node
このサンプルでは、エージェントの足をロックさせる方法について説明しています。
PartialRagdolls Example for Crowd Solver dynamics node
このサンプルでは、部分ラグドールのセットアップ方法について説明しています。エージェントのジョイントのサブセットがBullet Solverによってアクティブオブジェクトとしてシミュレーションされ、残りのジョイントがアニメーションします。
PinnedRagdolls 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です。
Stadium Crowd Example Example for Crowd Solver dynamics node
スタジアムのセットアップを説明した群衆サンプル。
このセットアップは、スタジアムの群衆を作成します。 回転するcheer_bboxオブジェクトをエージェントの境界ボックスとして使用しています。 エージェントがそのオブジェクトの中に入ると、座っている状態から応援している状態へ推移します。 数秒後には、応援している群衆がまた座っている状態に戻ります。
Note
アニメーションクリップは、シーンを再生する前にベイクするのに必要です。これは、サンプルをCrowdsシェルフから作成した場合に自動的に行なわれます。 そうでない場合は、シーンファイルを希望の場所に保存し、'/obj/bake_cycles' ROP NetworkのRenderをクリックして、ファイルを書き出します。 それらのファイルのデフォルトのパスは、${HIP}/agentsです。
Tip
群衆の一部だけをもっと高速にプレビューしたいのであれば、/obj/crowdsource/switch_all_subsectionにSwitchノードがあります。 そのスイッチを0に設定すると、すべてのエージェントが表示され、1に設定すると、一部のみが表示されます。
Street Crowd Example Example for Crowd Solver dynamics node
2つのエージェントグループによるストリートのセットアップを説明した群衆サンプル。
このセットアップは、2つのエージェントグループを作成します。 黄色のエージェントがゾンビで、ストリートのパスに沿います。青色のエージェントがぶらついている歩行者で、ゾンビが近づくと走ります。
エージェントの状態を変更するトリガーは、crowd_sim DOPNETでセットアップします。 ゾンビのグループは、信号との距離と信号の色を使用し、信号が赤になると停止状態に変わります。 生存者のグループは、ゾンビが近づくと走行状態に変わります。
Note
アニメーションクリップは、シーンを再生する前にベイクするのに必要です。これは、サンプルをCrowdsシェルフから作成した場合に自動的に行なわれます。 そうでない場合は、シーンファイルを希望の場所に保存し、'/obj/bake_cycles' ROP NetworkのRenderをクリックして、ファイルを書き出します。 それらのファイルのデフォルトのパスは、${HIP}/agentsです。
TypesOfDrag Example for Drag Force dynamics node
このサンプルでは、RBDオブジェクトにDrag(抵抗)を加える方法として、 Liner Velocity(線形速度)による抵抗、Angular Velocity(角速度)による抵抗、Angular Velocity(角速度)を直接変更する方法の3通りを説明しています。
DensityViscosity Example for FLIP Solver dynamics node
このサンプルでは、ソリッドオブジェクトと作用する異なる密度と粘度を持つ2つの流体について説明しています。
PaintedGrog Example for Fluid Object dynamics node
このサンプルでは、色の付いた滴を落として、Grogキャラクタをペイントするためにトーラスを作成しています。 Grogキャラクタは、その色の付いたトーラスによって色が付着します。 このサンプルでは、流体シミュレーションにカラー情報を追加する方法も説明しています。
CombinedSmoke Example for Gas Embed Fluid dynamics node
このサンプルでは、Gas Embed Fluid DOPを使って、2つのSmoke Volumeを結合し、ボリューム間を滑らかにぼかしています。
GuidedWrinkling Example for FEM Hybrid Object dynamics node
これは、ハイブリッドオブジェクトを使ってガイドとなる皺のセットアップです。 1番目のシミュレーションは、四面体と三角形で構成されたまだ皺のない詳細メッシュを作成します。 2番目のシミュレーションは、1番目のシミュレーションで作成されたアニメーションをターゲットにし、皺を追加しています。
このサンプルでは、パーティクルベースの流体によって高い粘度の流れを作成する方法を説明しています。 この流体によって、溶岩や泥のような遅い流れの流体をシミュレーションすることができます。
この少し複雑なサンプルでは、パーティクル流体のシミュレーション、保存、サーフェス化、レンダリングの単純なワークフローを説明しています。 サンプルにある3つのジオメトリノードの名前は、それぞれ使用する順番としてStep 1、Step 2、Step 3という名前にしています。 各ノードは、パーティクルジオメトリをディスクに書き出したり、ディスクからジオメトリを読み込んだり、ディスクからサーフェス化したジオメトリを読み込みます。 このサンプルでは、さらにシェーダとカメラを組んでいるので、簡単にレンダリングすることができます。
このシーンでアニメーションする流体は、高い弾力を持つゼラチンのようなブロッブです。
ParticleCollisions Example for POP Collision Detect dynamics node
このサンプルでは、POP Collision Detectノードを使って、 変形しながら回転するトーラスと衝突するパーティクルをシミュレーションする方法を説明しています。
CurveForce Example for POP Curve Force dynamics node
このサンプルでは、POP Curve Forceノードを使って、パーティクルシミュレーションとFLIP流体シミュレーションの流れを制御する方法を説明しています。
TargetSand Example for POP Grains dynamics node
このサンプルでは、モデルの表面上のポイントに引き寄せられる粒のシミュレーションを説明しています。
BillowyTurbine Example for Pyro Solver dynamics node
このサンプルでは、Pyro SolverとSmoke Objectを使って、 タービン(RBDオブジェクト)を通過した煙を渦巻くように放出させる方法を説明しています。 タービンの羽は、Copy、Circle、AlignのSOPでプロシージャルにモデリングしています。
このサンプルでは、RBD Glueオブジェクトからアニメーションキーフレームデータを取り込んで、 それを立方体のシミュレーションにブレンドして、衝撃によって複数の破片に砕く方法を説明しています。
Chainlinks Example for RBD Pin Constraint dynamics node
このチェーンシミュレーションでは、個々のチェーンリンクが、RBDシミュレーションでお互いに反応しています。
RBDtoSmokeHandoff Example for Smoke Object dynamics node
このサンプルでは、RBDオブジェクトをSmokeに変換する方法を説明しています。 同じSmokeオブジェクト内で複数の異なる色のSmokeフィールドを使っています。
FractureExamples Example for Voronoi Fracture Solver dynamics node
このサンプルでは、実際にHoudiniでボロノイ破壊を使う7つの方法を含んでいます。 特に、破壊シミュレーションでVoronoi Fracture SolverとVoronoi Fracture Configure Objectのノードの使い方を説明しています。 アニメーションを再生するなら、それらのサンプルのディスプレイフラグをオンにし、セットアップをテストするなら、各サンプルの中に入ってください。
PortalBox Example for Environment Light object node
このサンプルでは、窓の形状を使って、ポータルライトを作成する方法を説明しています。 ボックスをモデリングして、窓と壁の2つのSOPに分割しています。 環境光のPortal Geometryパラメータに窓を指定して、壁をレンダリングします。 Portal Geometryパラメータをオン・オフして、Render Viewでのレンダリング品質の違いを確認してみてください。
このサンプルで注目すべき特徴は以下の通りです:
-
ジオメトリエリアライト
-
減衰ランプ制御
-
サーフェスモデルのスペキュラーレイヤー
サンプルでは、NURBSカーブに基づいたジオメトリライトを構成しています。 ライトの減衰には、カラーキーを使うことで、異なるライトの色をライトからの距離に応じて生成することができます。 ground plane shaderは、2つのスペキュラーコンポーネント(広いコンポーネントと狭い光沢コンポーネント)でサーフェスモデルを使って、複数レイヤーの外観を生成します。
TransparentShadows Example for Light object node
このサンプルでは、ディープシャドウマップを使って透明シャドウを設定する方法を説明しています。 シーンには、影を落とす透明なグリッドを配置しています。 レンダラーには、マイクロポリゴンレンダリングを使用しています。
IndirectLightBox Example for Indirect Light object node
このサンプルでは、間接Diffuse照明用の間接光オブジェクトをセットアップする方法を説明しています。 シーンは、何回も押し出して作成したボックスと、光源とカメラで構成されています。 カメラの範囲に入るすべてのライトが、カメラに到達する前にシーン内で2度以上跳ね返るようにライトを配置しています。 間接光オブジェクトは、100万個のフォトンを生成するように設定されています。 フォトンマップを可視化するには、ライトのレンダリングモードを"Direct Global Photon Map"に変更します。 サンプリング品質を調整するには、Mantra ROPのPixel SamplesまたはRay Samplesを修正します。 このサンプルで使用するレンダリングエンジンは、PBRです。
TubeCaustic Example for Indirect Light object node
このサンプルでは、コースティクスのフォトンマップ生成用の間接光オブジェクトをセットアップする方法と、ライトマスクとフォトンターゲットの使い方を説明しています。 シーンは、反射するチューブとポイントライトと環境ライトで構成されています。 各ライトには、コースティクスを生成する間接光があり、ライトマスクによって指定したライトからのみフォトンを生成しています。 フォトンターゲットを使って、フォトンを反射するチューブに向かってのみ送信しています。 Mantra ROPは、ライト単位でdirect_diffuseコンポーネント用のディープラスター平面を生成し、2つのライトからのDiffuse照明とコースティクスを別々の平面に分けます。
環境ライト
ポイントライト
switchcamera Example for Switcher object node
このサンプルでは、2つのカメラ間でビューを切り替え、Renderノードで出力するシーンを切り替える方法を説明しています。
FetchROP Example for Fetch render node
このサンプルでは、Fetch ROPを使って、異なるネットワークにあるROPノードにレンダー依存関係を構築する方法を説明しています。 noise COPを使って、Mantraでレンダリングするサーフェスに対してJust-In-Timeでテクスチャを生成します。
MotionVector Example for Mantra render node
このサンプルでは、後でVelocityのコンポジットをするために、モーションベクトルレイヤーを生成する方法を説明しています。
サンプルを読み込んで、5フレーム分をレンダリングしてください。画像ビューアでは、C
(カラー)からmotion_vector
に切り替えると、その結果を見ることができます。
Volume Rendering - メタボールのボリュームレンダリング Example for Mantra render node
メタボールジオメトリは、Mantraでそのままボリュームとしてレンダリングすることが可能です。メタボールのレンダリングを有効にするには、ジオメトリオブジェクトの Render タブの Geometry サブタブの Metaballs as Volume パラメータをチェックします。メタボール上のPointアトリビュートは、Pointアトリビュートがメタボールサーフェスに対して補間されるのと同様に、シェーディングポジションで補間されます。
以下に、ランダムなポイントカラーアトリビュートを使ったサンプルを載せています:
シャドウ品質とパフォーマンスの制御
シャドウマップの生成には、 Pixel Samples と Shadow Step Size パラメータ(Mantra ROP内)を使って、サーフェスに対して使用するのとまったく同じ方法で、品質とパフォーマンスを制御します。ほとんどのボリュームは、柔らかいDiffuseシャドウを落とすので、ボリュームレンダリングの時は、低解像度のディープシャドウマップを使ってレンダリング時間を短くすることがほとんどです。シャドウマップの 解像度 は、Houdiniのライトの Shadow タブで変更することができます。
Volume Rendering - ファイル参照の煙 Example for Mantra render node
ボリュームレンダリングは、高品質な煙、雲、飛沫、炎などのボリュームエフェクトを統合したレンダリングを可能にするレンダリング手法です。
ボリュームレンダリングは、多くのタイプのボリュームエフェクトのレンダリングに適しています。Mantraボリュームによるレンダリングが特に適したシーンは以下のとおりです:
-
詳細な"hero"(メインとなる)の雲、煙、炎
-
インスタンス化した雲、煙、炎のフィールド(視界)
ボリュームレンダリングがまったく適さないシーンは以下のとおりです:
-
単一の均一なフォグを持つシーン
この特化したサンプルでは、bgeoファイル(1フレームのみ)を煙の流体シミュレーションからエクスポートして、それをFile SOPを使って参照しています。VEX Volume Cloudを使ったマテリアルを、Volume Objectのトップレベルで、このボリュームデータに割り当てています。シェーディングモードでこのシーンを見るには、環境変数の HOUDINI_OGL_ENABLE_SHADERS を1に設定します。
品質/パフォーマンスの制御
ボリュームレンダリングは、Ray Marchingを使って、ボリューム内に入り込みます。Ray Marchingは、画像内の各ピクセルに対して均一に光線に沿って入り込むことで、ボリューム内にシェーディングポイントを生成します。ボリュームのRay Marchingの品質と速度を変更する方法が2つあります:
-
Mantra ROPの Properties タブの Sampling サブタブの Pixel Samples パラメータ。 Pixel Samples を増やせば、ピクセル内にRay Marchingを増やすことができるので、品質が良くなります。さらに、ボリュームに対してアンチエイリアスとモーションブラーの品質が良くなります。
-
Mantra ROPの Properties タブの Sampling サブタブの Volume Step Rate パラメータ。 Volume Step Rate を上げれば、ボリューム内部のサンプルが増えるので、品質が良くなりますが、パフォーマンスが悪くなります。別々のシャドウ品質をシャドウに使うことができます。
変更すべきパラメータは、ピクセルのアンチエイリアスで必要な品質に依存します。 Pixel Samples を増やすよりも、 Volume Step Rate を小さくする方が良いです。なぜなら、 Volume Step Rate が小さいほど正確なレンダリングができるからです。
以下のレンダリングでは、 Pixel Samples を2×2、 Volume Step Rate を1にしています。シャドウの細部に注目してください。
以下のレンダリングでは、 Pixel Samples を4×4、 Volume Step Rate を0.25にしています。シャドウの細部が消えて、ボリュームが少し透明になっています。品質レベルは、ほぼ同じです。
Volume Rendering - プリミティブからのボリュームレンダリング Example for Mantra render node
ボリュームレンダリングは、高品質な煙、雲、飛沫、炎などのボリュームエフェクトを統合したレンダリングを可能にするレンダリング手法です。
ボリュームレンダリングは、多くのタイプのボリュームエフェクトのレンダリングに適しています。Mantraボリュームによるレンダリングが特に適したシーンは以下のとおりです:
-
詳細な"hero"(メインとなる)の雲、煙、炎
-
インスタンス化した雲、煙、炎のフィールド(視界)
流体ソルバを呼び出さなくても、プリミティブからボリュームを簡単に作成することができます。
この特化したサンプルでは、プリミティブのトーラスを使って、煙のボリュームをレンダリングしています。IsoOffset SOPを使えば、トーラス内部を充たすボリュームが生成されます。そして、VEX Volume Cloudを使ったマテリアルを、トーラスの形状をしたボリュームデータに割り当てています。 Smoke Cloud Density を5に、 Smoke Shadow Density を10に設定すれば、煙のような見た目を作成することができます。
以下の画像は、 Volume Quality (Mantra ROP)、 Shadow Quality (スポットライトの Shadow タブの Depth Map Shadows タイプ)、 Sampling Divs (IsoOffset SOPの Dimensions タブの Uniform Sampling を"Non Square"に設定)を調整してレンダリングしたトーラスです。煙のDiffuseカラーも調整しています。
netbarrierpost Example for Net Barrier render node
このサンプルでは、netbarrier ROPを使って、複数のマシンがお互いに同期化するようにする方法を説明しています。
このサンプルでは、アニメーションするランプと参照ランプの使い方を説明しています。
このサンプルでは、Shutter Shapeパラメータで、グレースケールのランプでシャッターの開口時間を制御する方法を説明しています。
Down Hill Lava Flow Example for Material shader node
このファイルでは、傾斜が低い箇所にCrust(地殻)が集まって硬化する溶岩の流れを作成しています。このアニメーションは、シェーダで作成していて、ジオメトリそのものはアニメーションしていません。
Note
Lava(溶岩)マテリアルのパラメータのほとんどを、サーフェスノードで作成したPointアトリビュートで上書きしています。
FirePit Example for Material shader node
Note
このファイルでは、ジオメトリはアニメーションしていません。 テクスチャをアニメーションさせることで、すべてのアニメーションを表現しています。
炎は、UVテクスチャを簡単に適用できるようにグリッドで作成し、Magnet SOPを使ってメタボール周辺を歪ませています。
炎には、黄色または青のFlameテクスチャのどれかを割り当てています。
Flamesのopacity mask wrapをDecalに設定することで、テクスチャがFlameジオメトリの上部で単一ピクセルリングを繰り返して表示するのを回避しています。
また、flameOpacMap.jpg
というマスクファイルを使って、上部にFlameの形状を調整しています。
noise offsetを$T
でY軸を強くアニメーションさせることで、Flameが上昇しているように見せています。これは、Noise jitterもY軸に対して大きくなります。
炭は、変形させたグリッドにCopy Stampを適用した球で表現しています。
Attribute CreateSOPを使えば、SOPレベルでLava(溶岩)のテクスチャのパラメータを上書きしてCopy Stampすれば、$BBY
などのローカル変数を使ってテクスチャをアニメーションさせることができます。
そうすれば、テクスチャのCrust(地殻)とその値だけを使って、炭の上部の形状を修正することができます。
これは、炭の下部で使用するテクスチャのLava(溶岩)のアスペクト比を保持します。熱を発する炭の下部の残り火を表現するために、Lava(溶岩)の強度(Kd
アトリビュート)をスタンプしてアニメーションしています。
StyleDisplacement Example for Material shader node
このサンプルファイルでは、2つの四角形で構成されたオブジェクトに対して、片方の四角形にはバンプマップを、もう片方の四角形にはTrue Displacementが適用されています。 そのオブジェクトが複製されており、2番目のコピーでは、スタイルシートを使用して、それらの2つの四角形に対してマテリアルの割り当てを逆にしています。
Basic RIS Shading Example Example for RIS Shader Network shader node
このファイルでは、私達はシンプルなジオメトリを作成し、そこにBxDFシェーダを割り当てています。 シェーディングネットワークは、BxDFシェーダに接続されたパターンシェーダで構成されています。
VolumeNoiseIso Example for Mantra: VEX Volume Procedural shader node
このサンプルでは、Mantraのボリュームレンダリング機能を使って、CVEXシェーダで定義したアイソサーフェスをレンダリングする方法を説明しています。 noiseフィールドをCVEXシェーダで生成し、それをVEX Volume Proceduralに接続しています。 密度が0のサーフェスを見つけて、法線を表示するSimple Surfaceシェーダを使ってシェーディングすることで、ボリュームをシェーディングします。
AddItUp Example for Add geometry node
このネットワークでは、Add SOPによるジオメトリの構築と操作に関するたくさんの使用方法を説明しています:
-
空間内にポイントを作成する時に使用します。そして、指定したパターンでポイントからポリゴンを作成することができます。そのポリゴンはオープンまたはクローズにすることができます。さらに、各ポイントはエクスプレッションやキーフレームを使ってアニメーションすることもできます。
-
ポイントの作成と同時に他のプリミティブからポイントを取り出す時に使用します。これらのポイントはポリゴンを作成する時に使用します。
-
Add SOPは他のポリゴンオブジェクトから抽出したポイントを使ってポリゴンを作成する時に利用します。Group SOPでは、Add SOPが参照するポイントグループを作成することができます。
-
Add SOPはアニメーションするNullオブジェクトのグループからポリゴンを作成する時に使用します。Object Merge SOPはポリゴンの生成時にAdd SOPに取り込まれているSOPの中にあるNullポイントを参照します。 Fit SOPは参照したNullポイントから順番に補間スプラインを作成する時に使用します。
-
Add SOPプリミティブを作成しないでポイントを生成する時に使用します。また、Add SOPを使って他のオブジェクトのポイントを抽出することができます。
-
最後に、Add SOPではさらに縦の列と横の列のポイントを作成することもできます。
LayerVariations Example for Agent Layer geometry node
このサンプルは、いろいろなジオメトリのバリエーションを持ついくつかのレイヤーを作成して、 それらのレイヤーをエージェントにランダムに割り当てる方法を説明しています。
CurveTexturing Example for Attribute Create geometry node
AttribCreate SOPは、色々なオブジェクト固有のアトリビュートを作成する時に使用します。新しく作成したアトリビュートにはラベルと値を設定することが可能です。
このサンプルでは、レンダリング時のカーブの幅を設定するためにAttribCreate SOPで線幅アトリビュート名の"width"を作成しています。Switch SOPで以下の2つのバージョンを切り替えることができます。
-
1つ目のAttribCreate SOPでは、X軸方向に一定幅のアトリビュートを作成しています。
-
2つ目のAttribCreate SOPでは、エクスプレッションでカーブの幅を調整することで先細りの効果を表現しています。
このアトリビュートはレンダリング時にMantraで使われます。結果を確認するには、ビューポートのレンダリングアイコンを右クリックして、"render_example"を選択してください。
RandomMaterial Example for Attribute String Edit geometry node
このサンプルでは、Attrib String Edit SOPを使って、文字列Primitiveアトリビュートの修正と、
プリミティブ単位でグリッドのカラーをランダム化する方法を説明しています。
サンプルでは、material_override
Primitiveアトリビュートの文字列値にdiff_int
を修正しています。
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)が変わると、自動的にボックスとラティスもサイズが変わります。
CapCarousel Example for Cap geometry node
このサンプルでは、グループの作成によって指定した2つのジオメトリの領域を埋める方法を説明しています。
2つのGroup SOPを使って、group_bottomとgroup_middleの2つのグループを作成します。これらのグループは、Number Enableを使用して作成しています。Patternの番号は、プリミティブ番号に一致します。これらの番号は、Primitives Numbersを有効にすることで確認することができます。
2つのCap SOPを使って、2つのグループを埋めます。First V CapまたはLast V Capのどれかで穴を埋めることで、埋めたいグループの端をどのようにするのか選択することができます。
CreepWeave Example for Creep geometry node
このサンプルでは、ジオメトリを受け取り、それをアニメーションするサーフェスに這わせる方法を説明しています。
織物の形をしたfabric.bgeoをFile SOPで取り込んでいます。 NURBSグリッドはsinとnoise関数を使って、波のように揺れるアニメーションを表現しています。
fabric.bgeoがCreep SOPでアニメーションするサーフェス上を這うことで、織物が波のように揺れているように見えます。
DeleteDemo Example for Delete geometry node
このサンプルでは、Delete SOPでシーンから特定のジオメトリを削除する方法を説明しています。
ジオメトリは、ポイントまたはポイント番号、グループ、境界ボックス内の位置で削除することができます。
DeltaMushDemo Example for DeltaMush geometry node
このサンプルでは、Delta Mush SOPを使用したボーン変形の平滑化の方法を説明しています。
LowHigh Example for Dop Import geometry node
このサンプルではRBDオブジェクトに対応するために低解像度と高解像度のセットアップをする方法を説明しています。 どちらの解像度もDOP Import SOPを参照して、低解像度ジオメトリでシミュレーションをして、その結果を高解像度ジオメトリに転送してレンダリングしています。
PackedPoints Example for File geometry node
このサンプルでは、File SOPを使って、ディスクのパックプリミティブの遅延ロードを実行して、 モーションブラーのレンダリングでフレーム毎に複数ジオメトリのサンプリングを行なう方法を説明しています。 パックジオメトリをディスクに保存すると、参照付きでポイントジオメトリのみがディスクファイルに保存されます(ディスクファイルは非常に軽いです)。
PackedSamples Example for File geometry node
このサンプルでは、File SOPを使って、パックプリミティブの遅延ロードを実行して、 モーションブラーのレンダリングでフレーム毎に複数ジオメトリのサンプリングを行なう方法を説明しています。
BubblyFont Example for Font geometry node
Font SOPを使ってシーン内に3Dテキストジオメトリを作成することができます。
ジオメトリはポリゴン、Bezier、またはその2つを組み合わせて設定されます。
カーブを含んだ文字にはBezier、直線のエッジにはポリゴンという組み合わせが使われます。
デフォルト以外のフォントはFontパラメータで指定します。
FurBallWorkflow Example for Fur geometry node
このサンプルでは、Fur SOPとMantra Fur Procedural SHOPをアニメーションするスキンジオメトリに適用する方法を説明しています。 CVEXシェーダを使って、ジオメトリに割り当てられたアトリビュートに応じて髪の毛の見た目を定義しています。
このサンプルでは、Layer SOPとVEX Layered Surface SHOPを使用することで、別々のUVセットに複数のシェーディングレイヤーを持たせる方法を説明しています。
LSystemMaster Example for L-System geometry node
L-System SOPは、反復処理によって複雑な形状を定義することが可能です。このノードは初期文字列を繰り返して評価する数学的な言語を使用し、その評価結果からジオメトリを生成します。各評価の結果が次のジオメトリの反復の基本になり、ジオメトリが成長していきます。
このサンプルのネットワークは、あなたが初めてL-Systemの独自ルールを記述するのに十分です。
しかし、L-Systemの作成に本気で興味のある人は次の本を読むべきです:
The Algorithmic Beauty of Plants, Przemyslaw Prusinkiewicz and Aristid Lindenmayer
L-Systemのコマンドの完全なリストは、Houdiniのヘルプを参照してください。
このサンプルでは、Particle SOPを使って指定したパーティクルのデフォルトサイズを設定する方法を説明しています。
単純なグリッドを使って風で流されて行くパーティクルの動的シミュレーションを作成することができます。 パーティクルがグリッドから離れるほど、パーティクルがゆっくりと消えていきます。
PeakEars Example for Peak geometry node
このサンプルでは、Peak SOPを使って頭にとがった耳を作成する方法を説明しています。
Peak SOPに"先端"となるポイント番号を指定し、法線に沿ってそのポイントを移動してとがった耳を作成しています。
RayWrap Example for Ray geometry node
Ray SOPは、あるサーフェスを他のサーフェス上に投影します。
これは、投影元のサーフェスの法線と投影先のサーフェスとの衝突を計算しています。
このサンプルでは、Ray SOPでGridサーフェスをSphereサーフェス上に投影しています。 Facet SOPは、投影したGridの法線を修正しています。
Squidremesh Example for Remesh geometry node
このサンプルでは、Remesh SOPを使って、巨大イカ蟹のモデルを、ハードエッジを保持しながら再メッシュする方法を説明しています。
BasicRest Example for Rest Position geometry node
Rest Position SOPは、変形するサーフェスにシェーダを密着させるために、サーフェス法線に基づいたアトリビュートを作成します。
すべてのプリミティブがrest
アトリビュートをサポートしていますが、二次曲線/曲面のプリミティブ(円、チューブ、球、メタボール)に関しては、Rest Position(静止位置)の移動のみサポートしています。
つまり、Rest Normal(静止法線)は、それらのプリミティブタイプでは正しく動作しません。
ジオメトリを変形したり、ボリュームまたはソリッドのマテリアル/パターンをシェーダに割り当てる時のみ、Rest Position SOPを使用してください。
Mantraでポリゴンやメッシュに対してFeathering(境界ぼかし)を使う場合は、Rest Normal(静止法線)が必要になります。 NURBS/Bezierは、Rest Position(静止位置)を使って正しいRest Normal(静止法線)を計算します。
その効果を確認するために、レンダリングをセットアップする必要があります。
Rest適用なし Rest適用あり
UnpackWithStyle Example for Unpack geometry node
このサンプルでは、アンパックと同時にスタイルシート情報を評価することができるUnpack SOPの機能について説明しています。 Nested Packed Primitiveでは、スタイル情報を維持しつつも部分的にアンパックできることを説明しています。 このサンプルでは、Python SOPを使って、プリミティブ単位でスタイルシートから情報を抽出する方法も説明しています。
volumeanalysis_curvature Example for Volume Analysis geometry node
このサンプルでは、Volume Analysis SOPでボリュームの曲率を計算し、曲率の値から元のポイントに色を付ける方法を説明しています。
volumeanalysis_grad Example for Volume Analysis geometry node
このサンプルでは、Volume Analysis SOPでボリュームの勾配を計算し、その勾配からジオメトリのポイントを変位する方法を説明しています。
volumeblur Example for Volume Blur geometry node
このサンプルでは、Volume Blur SOPでローカルフィルターをblur(ブラー), dilate(膨張), erode(侵食)のボリューム値に適用する方法を説明しています。
volumemerge Example for Volume Merge geometry node
このサンプルでは、Volume Merge SOPで複数のインスタンス化したボリュームを1台のカメラの視界領域のボリュームに平坦化する方法を説明しています。
volumesurface_simple Example for Volume Surface geometry node
このサンプルでは、Volume Surface SOPで順応性のあるトライアングルサイズを使ってSDFをサーフェス化する方法を説明しています。
example_top_ffmpegencodevideo Example for FFmpeg Encode Video TOP node
このサンプルでは、FFmpeg Encode Videoノードを使って、画像シーケンスを動画ファイルに変換する方法について説明しています。
example_top_ffmpegextractimages Example for FFmpeg Extract Images TOP node
このサンプルでは、FFmpeg Extract Imagesノードを使って、動画ファイルから画像を抽出する方法について説明しています。
example_top_renderifd Example for Render IFD TOP node
このサンプルでは、Render Ifdノードを使ってIFDファイルを書き出す方法について説明しています。
example_top_ropcomposite Example for ROP Composite Output TOP node
このサンプルでは、PDGデータを入力としたROP Compositeノードを使って、COPネットワークを実行する方法について説明しています。
WornMetal Example for Curvature VOP node
このサンプルでは、Curvature VOPをシェーダネットワークに追加して、マテリアルに剥げやアンティーク調の見た目を追加する方法を説明しています。
PointCloudWrite Example for Point Cloud Write VOP node
このサンプルでは、pcwrite VOPを使って、ポイントクラウドファイルにポイントを書き出す方法を説明しています。 mantra1 ROPをレンダリングして、ポイントクラウドを生成し、gplayコマンドでポイントクラウドを閲覧してください。 ポイントの分布は、Mantraシェーダを実行した場所に依存します。 この場合では、Mantra ROPは、非表示にしたサーフェスをシェーディングして、球のバックフェースからポイントを生成できるように設定しています。
RaytraceVopShader Example for Ray Trace VOP node
このサンプルでは、VOP VEXネットワークを使って、単純なレイトレースシェーダについて説明しています。 シェーダプロパティを修正するには、マテリアル内にPropertiesシェーダを作成して、Outputシェーダノードに接続します。 そして、レンダリングパラメータをPropertiesノードに追加します。 例えば、反射の数を制御するには、reflect limitパラメータを追加します。
See also |