primary
カメラから送信される光線。
Houdini 20.0 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
GeomSubsetsはシーングラフツリー階層内に表示されるものの、実際にはプリミティブではありません。 これは、マテリアルを割り当てるためのフェースセットを表現します。 複数のジオメトリを個々にトランスフォームさせたり可視性を変更する必要がない場合は、それらのメッシュを結合してGeomSubsetsを使用することで、パフォーマンスを向上させることができます。
メッシュのsubdivisionScheme
プロパティを以下の対応しているスキーマのどれかに設定すると、そのメッシュはサブディビジョンサーフェスになります。
サブディビジョンサーフェスをレンダリングする場合、作成したnormals
アトリビュート値はすべて無視されます。
Karmaは、エッジとポイントのどちらのCrease(折り目)にも対応しています。
Dicing Quality プロパティは、Karmaがサーフェスをどれくらい細分化するかを調整します。
スキーマ |
Crease |
説明 |
---|---|---|
|
該当なし |
サブディビジョンスキーマは適用されません。これはMeshプリミティブのデフォルトです。 |
|
対応 |
業界標準のサブディビジョンサーフェス。四角形で占有されたメッシュを平滑化するのに便利です。 |
|
対応 |
三角形化されたメッシュを平滑化するのに便利です。 |
|
非対応 |
フェースを四角形に細分化します(スムージングなし)。 |
Subdiv Render Properties
インスタンスをDicingする場合、Karmaは、カメラに最も近いインスタンスに基づいてDicingを設定します。そのため、カメラがアニメーションすると、インスタンスとカメラとの距離がフレーム間で少し変化すると場合によってはこのDicingでチラツキが発生してしまう可能性があります。
Dicing用にフラスタムを制御できるように、別のDicing用カメラを指定することができます。
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 |
Tip
膨大な量のヘアー/ファーを含んだシーンのレンダリングは、Karma XPUでPath Traced収束モードを使用すると上手く解決する傾向があります。 このような状況では、ノイズの多いファーを除去するためにセカンダリサンプル数に大きく依存すると、非常に処理が重くなってしまいます。
Karmaはデフォルトでカーブを丸みのあるチューブとしてレンダリングしますが、リボンや方向付きリボンとしてもレンダリングすることができます(normals
を使用してカーブの向きを指定)。
レンダリング時にカーブの基底を上書きすることも可能です。
BasisCurves Render Properties
Karmaは、カーブに対して良い感じのテクスチャ空間を用意することができます。 平坦なリボンや捻れたリボンには自動的にテクスチャが付けられます。 チューブ状のカーブには法線を追加することで、Karmaはそのカーブを軸としたテクスチャを計算することができます。
パーティクルまたはポイントクラウドは、USDでは Points Primとして表現されます。 デフォルトでは、Karmaはポイントを球としてレンダリングしますが、その見た目はRender Geometry Settingsで変更することができます。 パーティクルは誕生したり死亡したりするため、ポイントベースのPrimのポイント数は、時間の経過とともに増減します。 Points Primはステージ内のどの時間にも存在していなければなりませんが、そのPrim自体の中ではポイント個々にバリエーションを加えることができます。
Note
過去のリリースでは、 Karmaにはジオメトリをポイント上にインスタンス化するために基本的なプロシージャルがいくつか用意されていました。 それらのプロシージャルはPoint Instancerと比べてパフォーマンス/メモリでメリットがないので廃止されました。
|
ポイントプリミティブを作成したり編集します。 |
Points/Particles Render Properties
USDでは、2つの方法のインスタンス化があります:
ネイティブインスタンシングは、効率的にアセットのコピーをたくさん表現できるようにするために、USDに単一の“プロトタイププリミティブ”を生成するように命令するプロパティです。
ポイントインスタンサーは、ジオメトリの膨大なコピーを効率的に表現できる特別なスキーマです。
どちらのタイプのインスタンス化も、各プリミティブのトップレベルのトランスフォームに対応しており、さらに、(各ネイティブインスタンスに対して、または、ポイントインスタンサープリミティブに対して)Primvarsを編集してインスタンス単位でマテリアルプロパティを設定することもできます。 ネイティブインスタンスは、各インスタンスの実トランスフォームで、各インスタンスはシーン内で固有のネームスペースとして表現されます。 ネイティブインスタンスは、簡単にインスタンスからヒーローに昇格することができます(単に“instanceable”プロパティを無効にするだけです)。
ポイントインスタンサーは高速ですが、すべてのインスタンスのトランスフォームは、ポイントインスタンサープリミティブ上の配列アトリビュートとして設定されます。 インスタンスからヒーローに昇格させるには、シーンをMutate(変異)させる必要があります。 生成させたいインスタンスの数が多いほど、たいていの場合はヒーローに昇格させるよりもポイントインスタンスのままにする方が望ましいです。
|
SOPポイントを使用してPoint Instancerまたはネイティブインスタンスを作成します。 |
Instance Render Properties
USDボリュームは複数のプリミティブで表現され、そのボリュームデータは実際にはUSDに格納されません。
|
Volume |
マテリアルを含む、ボリューム'全体'を表現します。 |
|
Houdini Field Asset |
SOPまたは |
|
OpenVDB Field Asset |
SOPまたは |
|
Field3D Asset |
|
ボリュームプリミティブはボリューム全体を表現し、フィールドプリミティブはdensity
やtemperature
などの個々のグリッドを表現します。
親ボリュームの子として、フィールドプリミティブはボリュームプリミティブのトランスフォームを継承しますが、個別にトランスフォームさせることもできます。
Houdiniには、ボリュームとフィールドの組み合わせを作成するためのノードがあります:
|
ディスク上のファイルからボリュームおよびフィールドプリミティブを作成します。 |
|
|
SOPからVDBまたはHoudiniフィールドプリミティブのボリュームを作成します。 |
Karmaがボリュームをサンプリングできるようにするにはデフォルトではdensity
フィールドが必要です。
これを変更したいのであれば、Volume Sampling Fieldプロパティを使用します(以下参照)。
Volume Render Properties
サーフェスジオメトリは、以下のレンダープロパティを使用すると、均一なボリュームとしてレンダリングすることができます。
displayColor
を使用することでそのカラーを制御することができます。
基本的なボリュームシェーダを均一なボリュームにバインドすることもできます。
Uniform Volume Render Properties
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を使用して作成されたアセットは、デフォルトでクラスプリミティブを継承します。
|