primary
カメラから送信される光線。
Houdini 19.5 Solaris Karmaユーザガイド
On this page |
Karmaは、USDで定義されたすべてのジオメトリプリミティブをレンダリングすることができます。 USDが従来のワークフローと一線を画すのは、多くのジオメトリプロパティがレンダラー固有ではなく、プリミティブを定義したスキーマの一部になっているところです。 例えば、サブディビジョンサーフェスは、Meshスキーマのビルトインプロパティです。
Note
Karmaのログメッセージまたはドキュメントで、 オブジェクト という用語が使われている場合があります。このオブジェクトとは、Hydraを介してUSDからKarmaに送信された プリミティブ のことです。
スキーマの定義は互いに継承されるので、プロパティはプリミティブタイプ間で共有されていることが多いです。
例えば、メッシュ、カーブ、ポイントは“pointsプロパティがベース”になっており、points
アトリビュートを持っています。
ジオメトリのレンダープロパティを制御する際に使用頻度の高いノードは次の3つです:
|
このノードは、プリミティブの編集に便利です。 特定のプリミティブタイプを作成したり編集できるようにこのノードをベースにしたツールがいくつか存在します(MeshやBasis CurvesのEditモードなど)。 |
|
|
このノードは、レンダラー固有のアトリビュートと設定を用意します。 サードパーティ製レンダラーは、Karmaのプロパティに加えて、独自のスペアパラメータをこのノードに追加することができます。 どのプリミティブタイプにも、ほぼすべてのプロパティを適用することができます。 ジオメトリ と ライト のプロパティは、これらのPrimタイプに固有のものです。 |
|
|
このノードを使用すると、プリミティブのVisibilityとActivationを設定することができます。 |
Solarisでライティングとレンダリングを行なう時、ジオメトリプリミティブやアトリビュートの作成または変更が必要になることがあります。 このドキュメントではプリミティブに特化したノードを中心に取り上げていますが、次の汎用的なノードも使用することができます:
|
SOPネットワークから新しいジオメトリを作成します。 SOPプリミティブは、USDの同等のものに変換されます。 詳細は、SOPをUSDに取り込む方法を参照してください。 |
|
|
SOPを使用してジオメトリを編集します。 KarmaやSolarisでレンダリングする時に途中で修正するのに便利です。 |
|
|
VEXスニペットを使用してジオメトリアトリビュートを修正します。 メッシュの各ポイントに対してスニペットを実行するには、 Run on Elements of Array Attributes パラメータを使用します。 |
Note
高度なUSDパイプラインには、カスタムの Prim Adapter が用意されている場合があります。 プラグインパスが適切に設定されていれば、それはKarmaでうまく機能するはずです。
Tip
これらのプリミティブはパラメトリックソリッドシェイプと同じように動作しますが、USDがHydraを介してKarmaに送るのはポリゴンメッシュです。 これが、レンダリングされた球が完全な丸に見えず、特定の角度では尖り頭に見える理由です。
|
カプセルプリミティブを作成したり編集します。 |
|
|
円錐プリミティブを作成したり編集します。 |
|
|
キューブプリミティブを作成したり編集します。 |
|
|
円柱プリミティブを作成したり編集します。 |
|
|
球プリミティブを作成したり編集します。 |
ポリゴンサーフェスは、USDでは Mesh プリミティブで表現されます。 SOPジオメトリはデフォルトで左手向きですが、USDは右手向きメッシュと左手向きメッシュの両方に対応しています。 メッシュは、シェーディンググラフを駆動するのに使用可能なサーフェス全体のアトリビュートである Primvar を持つこともできます。
|
このノードの真の力は、メッシュプロパティを変更できるEditモードにあります。 サブディビジョンもここでまたはSOPアトリビュートで定義することができます。 |
|
|
ジオメトリサブセットをUSDメッシュに追加するのに便利です。 サブセットは、SOP内部でもアトリビュートやプリミティブグループを使用して定義することができます。 |
Note
メッシュPrimは連続している必要も、密閉されている必要もありません。
Subdiv Render Properties
Cull Backface
有効にすると、カメラに背いているジオメトリはレンダリングされません。
GeomSubsetsはシーングラフツリー階層内に表示されるものの、実際にはプリミティブではありません。 これは、マテリアルを割り当てるためのフェースセットを表現します。 複数のジオメトリを個々にトランスフォームさせたり可視性を変更する必要がない場合は、それらのメッシュを結合してGeomSubsetsを使用することで、パフォーマンスを向上させることができます。
メッシュのsubdivisionScheme
プロパティを以下の対応しているスキーマのどれかに設定すると、そのメッシュはサブディビジョンサーフェスになります。
サブディビジョンサーフェスをレンダリングする場合、作成したnormals
アトリビュート値はすべて無視されます。
Karmaは、エッジとポイントのどちらのCrease(折り目)にも対応しています。
Dicing Quality プロパティは、Karmaがサーフェスをどれくらい細分化するかを調整します。
スキーマ |
Crease |
説明 |
---|---|---|
|
該当なし |
サブディビジョンスキーマは適用されません。これはMeshプリミティブのデフォルトです。 |
|
対応 |
業界標準のサブディビジョンサーフェス。四角形で占有されたメッシュを平滑化するのに便利です。 |
|
対応 |
三角形化されたメッシュを平滑化するのに便利です。 |
|
非対応 |
フェースを四角形に細分化します(スムージングなし)。 |
Subdiv Render Properties
Dicing Quality
このパラメータは、スムースサーフェス(サブディビジョンサーフェスや変位サーフェス)のジオメトリサブディビジョン解像度を制御します。 他のすべてのパラメータがデフォルトの時、値を1にすると、近似で1つのマイクロポリゴンがピクセル毎に作成されます。値を高くするとより小さいマイクロポリゴンを生成します。これはシェーディングが細かくなり、品質が良くなることを意味します。
シェーディング品質の変更の効果は、karma:object:dicingquality
の 2乗 の係数によってシェーディングの量を増やしたり、下げたりすることができます。つまり、シェーディング品質を2にすると、4倍シェーディング量を実行し、0.5にすれば0.25倍のシェーディング量を実行します。
USDのカーブタイプは、 BasisCurves です。
各プリミティブが何千本もの個別の束で構成されている場合もあります。
curveVertexCounts
プロパティの数は、プリミティブ上のカーブの数です。
|
このノードでBasisCurvesプリミティブを作成できますが、その真の力は、カーブプロパティを変更できるEditモードにあります。 |
BasisCurvesには、 Linear(線形) と Cubic(3次) の2つのタイプがあります。 スキーマで定義されているプロパティの大半は、 Cubic カーブ用です。
Tip
デフォルトの Non-Periodic Linear カーブの外観でほぼ問題ないものの、カーブを滑らかにしたい場合は、 Pinned Cubic BSpline を使用します。 これら2種類のカーブで、ほとんどのケースに対処できるはずです。
プロパティ |
目的 |
---|---|
Curve Basis |
Curve Type が Cubic の時、このパラメータはカーブの補間方法を制御します。
|
Wrap |
各カーブの終端の解決方法を定義します。
|
カーブのタイプによって、束を有効にするのに必要な頂点の数は異なります。 不正なトポロジーが原因で、Karmaでのレンダリング時に、カーブが非表示になったり、おかしな具合に見える場合があります。
カーブ |
頂点数(N) |
---|---|
Non-Periodic Linear |
N>=2 |
Periodic Linear |
N>=3 |
Periodic Bezier |
N*3 |
Non-Periodic Bezier |
4+3*N |
その他の3次スプライン |
N>=4 |
Karmaはデフォルトでカーブを丸みのあるチューブとしてレンダリングしますが、リボンや方向付きリボンとしてもレンダリングすることができます(normals
を使用してカーブの向きを指定)。
レンダリング時にカーブの基底を上書きすることも可能です。
BasisCurves Render Properties
Render Curves As
カーブをレンダリングする時、カメラの方を向いたリボン、両端を丸めたチューブ、ポイントに追加された法線アトリビュートの方を向いたリボンとしてレンダリングすることができます。
Override Curves Basis
USDは、Houdiniで直接対応できていないCurve Basisタイプに対応しています。 時には、HoudiniのCurve Basisをオーバーライドしたいことがあります。 例えば、Houdiniの直線カーブをBezier、B-Spline、Catmull-Romのどれかの基底を使ってレンダリングしたい時です。 このメニューは、KarmaがUSD Primsに関連付けられている基底をオーバーライドするようにします。
Note
カーブのトポロジーをターゲットの基底に合わせなければなりません。 例えば、3次曲線の基底を選択した場合、どのカーブも頂点数が最低でも4つなければなりません。 Bezier基底の場合、カーブの頂点数は4 + 3*Nでなければなりません。
パーティクルまたはポイントクラウドは、USDでは Points Primとして表現されます。 デフォルトでは、Karmaはポイントを球としてレンダリングしますが、その見た目はRender Geometry Settingsで変更することができます。
|
ポイントプリミティブを作成したり編集します。 |
|
|
プロシージャルにポイントを |
パーティクルは誕生したり死亡したりするため、ポイントベースのプリミティブのポイント数は、時間の経過とともに増減します。 Points Primはステージ内のどの時間にも存在していなければなりませんが、そのPrim自体の中ではポイント個々にバリエーションを加えることができます。
Points/Particles Render Properties
Render Points As
ポイントクラウドをレンダリングする時、カメラの方を向いた円盤、球、法線アトリビュートの方を向いた円盤としてレンダリングすることができます。
USDでは、2つの方法のインスタンス化があります:
ネイティブインスタンシングは、効率的にアセットのコピーをたくさん表現できるようにするために、USDに単一の“プロトタイププリミティブ”を生成するように命令するプロパティです。
ポイントインスタンサーは、ジオメトリの膨大なコピーを効率的に表現できる特別なスキーマです。
どちらのタイプのインスタンス化も、各プリミティブのトップレベルのトランスフォームに対応しており、さらに、(各ネイティブインスタンスに対して、または、ポイントインスタンサープリミティブに対して)Primvarsを編集してインスタンス単位でマテリアルプロパティを設定することもできます。 ネイティブインスタンスは、各インスタンスの実トランスフォームで、各インスタンスはシーン内で固有のネームスペースとして表現されます。 ネイティブインスタンスは、簡単にインスタンスからヒーローに昇格することができます(単に“instanceable”プロパティを無効にするだけです)。
ポイントインスタンサーは高速ですが、すべてのインスタンスのトランスフォームは、ポイントインスタンサープリミティブ上の配列アトリビュートとして設定されます。 インスタンスからヒーローに昇格させるには、シーンをMutate(変異)させる必要があります。 生成させたいインスタンスの数が多いほど、たいていの場合はヒーローに昇格させるよりもポイントインスタンスのままにする方が望ましいです。
|
SOPを使用してポイントインスタンサーまたはネイティブインスタンスを作成します。 |
Instance Render Properties
Instance Velocity Blur
インスタンスに対してモーションブラーを定義すると、プロトタイプで発生するモーションブラーだけでなく、各インスタンスのトランスフォームにもブラーをかけることができます。 このオプションは、各インスタンスのトランスフォームのモーションブラーの計算方法を制御します。 例えば、プロトタイプをパーティクルシステム上にインスタンス化した場合、Velocityブラーを使用してモーションブラーを計算したいことでしょう(パーティクル上のVelocityによってプロトタイプのトランスフォームにブラーがかかるようになります)。
No Velocity Blur
インスタンスの変形ブラーを使用して、トランスフォームのブラーを計算します。
Velocity Blur
Velocityブラーを使用したいのであれば、そのインスタンスは、ポイント上にVelocityアトリビュートが含まれたポイントインスタンサーである必要があります。
velocities
アトリビュート値の単位は、1秒あたりのHoudiniユニット長です。
Acceleration Blur
Accelerationブラーを使用したいのであれば、そのインスタンスは、ポイント上にVelocityアトリビュートとAccelerationアトリビュートが含まれたポイントインスタンサーである必要があります。
レンダラーは、(存在すれば)このアトリビュートを使用して、複数セグメントのアクセラレーションモーションブラーをレンダリングします(レンダラーでモーションブラーが有効になっている場合)。
accel
アトリビュートはシミュレーション系ノードで自動的に作成されますが、Point Velocity SOPを使用して加速度を計算してaccel
アトリビュートを追加することもできます。
このaccel
アトリビュートは、SOPジオメトリがUSDに変換された時にaccelerations
に変換されます。
Instance Motion Samples
Accleration Blur または Deformation Blur を使用してインスタンスのモーションブラーを計算する場合、このパラメータには、そのモーションブラーで使用されるモーションセグメントの数を指定します。
USDボリュームは複数のプリミティブで表現され、そのボリュームデータは実際にはUSDに格納されません。
|
Volume |
マテリアルを含む、ボリューム'全体'を表現します。 |
|
Houdini Field Asset |
SOPまたは |
|
OpenVDB Field Asset |
SOPまたは |
|
Field3D Asset |
|
ボリュームプリミティブはボリューム全体を表現し、フィールドプリミティブはdensity
やtemperature
などの個々のグリッドを表現します。
親ボリュームの子として、フィールドプリミティブはボリュームプリミティブのトランスフォームを継承しますが、個別にトランスフォームさせることもできます。
Houdiniには、ボリュームとフィールドの組み合わせを作成するためのノードがあります:
|
ディスク上のファイルからボリュームおよびフィールドプリミティブを作成します。 |
|
|
SOPからVDBまたはHoudiniフィールドプリミティブのボリュームを作成します。 |
Volume Render Properties
Volume Limit
ボリューム光線がシーンを伝搬できる回数。これは Diffuse Limit パラメータと同じように動作します。
Volume Limit パラメータを上げると、よりリアルなボリューム効果が得られます。 これは、特にボリュームの一部のみが直接照明を受けている状況で顕著です。 さらに、ボリュームオブジェクトが他のオブジェクトからの間接照明を受けるためには、 Volume Limit パラメータを0よりも大きく設定しなければなりません。
Volume Limit を0より大きい値に設定すると、Fogボリュームは、ボリュームを通過するライトから、あなたが求めている独特の光の散乱を行ないます。 しかし、 Diffuse Limit と同様に、一般的には、ライトの寄与度は、光線が跳ね返る度に小さくなるので、4より大きい値を使用しても、目で見てわかるほどに現実的な画像になるとは限りません。
また、このパラメータの値を上げると、ボリューム画像のレンダリングに費やされる時間が劇的に増える可能性があります。
これは、すべての制限がサンプル毎に確率的に選択されるので浮動小数点値になっています。
そのため、例えば、 Diffuse Limit を3.25
に設定すると、光線の25%の Diffuse Limit が4、75%の Diffuse Limit を3に設定することができます。
Volume Samples
間接ボリュームシェーディングの品質を指定します。 サンプル数1は、シェーディング計算あたり約1個の追加ボリュームサンプルに相当します。 サンプル数4は、シェーディング計算あたり約4個の追加ボリュームサンプルに相当します。
Volume Step Rate
光線がボリュームを通過した時にそのボリュームをサンプリングする細かさを設定します。 ボリュームオブジェクトはボクセルと呼ばれる3D構造で構成されており、このパタメータの値は、次のサンプリングを実行する際に光線が通過するボクセル数を意味します。
デフォルト値は0.25
で、4個のボクセル毎に1回のサンプリングが実行されることを意味します。
1
の値はすべてのボクセルがサンプリングされ、2
の値はすべてのボクセルが2回サンプリングされることを意味します。
つまり、この Volume Step Rate 値は、ピクセルサンプルと同様の挙動をし、ボリュームオブジェクトに対するサンプル総数の乗数として作用します。
Volume Step Rate を上げるとレンダリング時間が劇的に長くなるので、必要な場合にのみ調整するように注意してください。
また、デフォルト値の0.25
よりも大きな値にするとボリュームノイズを軽減することができますが、1
を超えた値ではそんなに結果が変わらなくなります。
Volume Velocity Blur Scale
ボリュームに対してモーションブラー量を軽減または誇張する際に使用されるVelocity乗数。
サーフェスジオメトリは、以下のレンダープロパティを使用すると、均一なボリュームとしてレンダリングすることができます。
密度は以下のレンダープロパティで制御され、カラーの制御にはdisplayColor
を使用します。
基本的なボリュームシェーダを均一なボリュームにバインドすることもできます。
Uniform Volume Render Properties
Uniform Volume
このオブジェクトが均一密度のボリュームと見なしてレンダリングするかどうか。 サーフェスジオメトリ上にこのプロパティを使用すると、レンダラーはそのボリューム密度が均一であると想定してサンプルをもっと最適に配置することができるので、実際に均一密度のボリュームオブジェクトを作成するよりも効率的です。 そのサーフェスジオメトリのサーフェス法線は、どちら側にボリュームがあるのかを決めるのに使用され、その法線は内側から外に向いた方向となります。 サーフェスは閉じている必要はありません。もしサーフェスが閉じていなければ、そのボリュームはサーフェスから無限に遠い方へ延長されます。 閉じていないサーフェスは、そのサーフェスのエッジ付近で予期しない結果を招いてしまう場合があるので、カメラ視点をエッジから遠ざけるようにしてください。
Uniform Volume Density
均一ボリュームをレンダリングする時(karma:object:volumeuniform
が有効な時)にサンプルを分布させる方法を決めます。
正しい結果を得るには、このパラメータを均一ボリュームシェーダの密度と同じにしなければなりません。
Uniform Volume Samples
均一ボリュームをレンダリングする時(karma:object:volumeuniform
が有効な時)に生成するサンプル数。
これらのサンプルは、すべて明度が同じであれば同じ画像寄与を生成するように分布されます。
Karmaは、XformまたはScopeを直接レンダリングしません。 実際、HydraはこれらをKarmaに送信しません。 Karmaは、実際に描画/レンダリングされるGprimのみを受け取ります。
|
Xformプリミティブを作成したり編集します。 |
|
|
Scopeプリミティブを作成したり編集します。 |
ScopeとXformは、シーングラフを整理するのに役立ち、レンダープロパティや他のPrimvarを保持することができます。 Xformはトランスフォームさせることができるため、Coordinate Systemとしても使用することができます。 これをシェーダで使用すると、ある空間から別の空間にデータをトランスフォームさせることができます。
Karmaのレンダリングプリミティブは、ほぼすべてのUSD Primで見つかったVisibilityアトリビュートを評価します。 Visibilityに加えて、Primの レンダリングの可視性 を決定するKarma固有のプロパティも存在します。
Render Visibility Properties
Render Visibility
カテゴリのエクスプレッションを使用して、オブジェクトの可視性を異なるタイプの光線へ制御します。 このパラメータは、PhantomとRenderableのトグルを一般化し、オブジェクトの可視性をKarmaやVEXでサポートされている異なるタイプの光線へ色々と制御させることができます。
primary
カメラから送信される光線。
shadow
シャドウ光線。
diffuse
Diffuse光線。
reflect
反射。
refract
屈折。
例えば、Phantomオブジェクトを作成するには、エクスプレッションに“-primary”を設定します。 オブジェクトをレンダリング不可にするには、エクスプレッションに空っぽの文字列“”を設定します。 これらのトークンは、VEXのtrace()やgather()の関数の“raystyle”に渡す文字列に相当します。
To... | Do this |
---|---|
ビューアまたはScene Graph Treeからプリミティブを編集する |
Tip New node… の代わりに Jump to node… を選択して、このシーンのプリミティブを作成または編集したHoudiniノードを再編集しても構いません。 |
Scene Graph Detailsペインから特定のプロパティを編集する |
|
継承されたクラスを介して多数のプリミティブを編集する |
単一のクラスのプリミティブを継承する複数のプリミティブを同時に編集できます。Component Builderを使用して作成されたアセットは、デフォルトでクラスプリミティブを継承します。
|