Houdini 20.0 Solaris Karmaユーザガイド

Karmaユーザガイド ジオメトリ

On this page

概要

Karmaは、USDで定義されたすべてのジオメトリプリミティブをレンダリングすることができます。 USDが従来のワークフローと一線を画すのは、多くのジオメトリプロパティがレンダラー固有ではなく、プリミティブを定義したスキーマの一部になっているところです。 例えば、サブディビジョンサーフェスは、Meshスキーマのビルトインプロパティです。

Note

Karmaのログメッセージまたはドキュメントで、 オブジェクト という用語が使われている場合があります。このオブジェクトとは、Hydraを介してUSDからKarmaに送信された プリミティブ のことです。

スキーマの定義は互いに継承されるので、プロパティはプリミティブタイプ間で共有されていることが多いです。 例えば、メッシュ、カーブ、ポイントは“pointsプロパティがベース”になっており、pointsアトリビュートを持っています。

Primの作成とプロパティの設定

ジオメトリのレンダープロパティを制御する際に使用頻度の高いノードは次の3つです:

Edit Properties

このノードは、プリミティブの編集に便利です。 特定のプリミティブタイプを作成したり編集できるようにこのノードをベースにしたツールがいくつか存在します(MeshBasis CurvesのEditモードなど)。

Render Geometry Settings

このノードは、レンダラー固有のアトリビュートと設定を用意します。 サードパーティ製レンダラーは、Karmaのプロパティに加えて、独自のスペアパラメータをこのノードに追加することができます。

どのプリミティブタイプにも、ほぼすべてのプロパティを適用することができます。 ジオメトリライト のプロパティは、これらのPrimタイプに固有のものです。

Configure Primitive

このノードを使用すると、プリミティブのVisibilityActivationを設定することができます。

Solarisでライティングとレンダリングを行なう時、ジオメトリプリミティブやアトリビュートの作成または変更が必要になることがあります。 このドキュメントではプリミティブに特化したノードを中心に取り上げていますが、次の汎用的なノードも使用することができます:

SOP Create LOP

SOPネットワークから新しいジオメトリを作成します。 SOPプリミティブは、USDの同等のものに変換されます。 詳細は、SOPをUSDに取り込む方法を参照してください。

SOP Modify LOP

SOPを使用してジオメトリを編集します。 KarmaやSolarisでレンダリングする時に途中で修正するのに便利です。

Attribute Wrangle LOP

VEXスニペットを使用してジオメトリアトリビュートを修正します。 メッシュの各ポイントに対してスニペットを実行するには、 Run on Elements of Array Attributes パラメータを使用します。

Note

高度なUSDパイプラインには、カスタムの Prim Adapter が用意されている場合があります。 プラグインパスが適切に設定されていれば、それはKarmaでうまく機能するはずです。

基本プリミティブシェイプ

Tip

これらのプリミティブはパラメトリックソリッドシェイプと同じように動作しますが、USDがHydraを介してKarmaに送るのはポリゴンメッシュです。 これが、レンダリングされた球が完全な丸に見えず、特定の角度では尖り頭に見える理由です。

Capsule LOP

カプセルプリミティブを作成したり編集します。

Cone LOP

円錐プリミティブを作成したり編集します。

Cube LOP

キューブプリミティブを作成したり編集します。

Cylinder LOP

円柱プリミティブを作成したり編集します。

Sphere LOP

球プリミティブを作成したり編集します。

メッシュ

ポリゴンサーフェスは、USDでは Mesh プリミティブで表現されます。 SOPジオメトリはデフォルトで左手向きですが、USDは右手向きメッシュと左手向きメッシュの両方に対応しています。 メッシュは、シェーディンググラフを駆動するのに使用可能なサーフェス全体のアトリビュートである Primvar を持つこともできます。

Mesh LOP

このノードの真の力は、メッシュプロパティを変更できるEditモードにあります。 サブディビジョンもここでまたはSOPアトリビュートで定義することができます。

Geometry Subset VOP

ジオメトリサブセットをUSDメッシュに追加するのに便利です。 サブセットは、SOP内部でもアトリビュートやプリミティブグループを使用して定義することができます。

Note

メッシュPrimは連続している必要も、密閉されている必要もありません。

GeomSubsets

GeomSubsetsはシーングラフツリー階層内に表示されるものの、実際にはプリミティブではありません。 これは、マテリアルを割り当てるためのフェースセットを表現します。 複数のジオメトリを個々にトランスフォームさせたり可視性を変更する必要がない場合は、それらのメッシュを結合してGeomSubsetsを使用することで、パフォーマンスを向上させることができます。

サブディビジョン

catmullClarkサブディビジョン
catmullClarkサブディビジョン、シャープな折り目
catmullClarkサブディビジョン、シャープなコーナー

メッシュのsubdivisionSchemeプロパティを以下の対応しているスキーマのどれかに設定すると、そのメッシュはサブディビジョンサーフェスになります。 サブディビジョンサーフェスをレンダリングする場合、作成したnormalsアトリビュート値はすべて無視されます。 Karmaは、エッジとポイントのどちらのCrease(折り目)にも対応しています。 Dicing Quality プロパティは、Karmaがサーフェスをどれくらい細分化するかを調整します。

スキーマ

Crease

説明

none

該当なし

サブディビジョンスキーマは適用されません。これはMeshプリミティブのデフォルトです。

catmullClark

対応

業界標準のサブディビジョンサーフェス。四角形で占有されたメッシュを平滑化するのに便利です。

loop

対応

三角形化されたメッシュを平滑化するのに便利です。

bilinear

非対応

フェースを四角形に細分化します(スムージングなし)。

Dicing(細分化)

  • インスタンスをDicingする場合、Karmaは、カメラに最も近いインスタンスに基づいてDicingを設定します。そのため、カメラがアニメーションすると、インスタンスとカメラとの距離がフレーム間で少し変化すると場合によってはこのDicingでチラツキが発生してしまう可能性があります。

  • Dicing用にフラスタムを制御できるように、別のDicing用カメラを指定することができます。

カーブ

USDのカーブタイプは、 BasisCurves です。 各プリミティブが何千本もの個別の束で構成されている場合もあります。 curveVertexCountsプロパティの数は、プリミティブ上のカーブの数です。

BasisCurves LOP

このノードでBasisCurvesプリミティブを作成できますが、その真の力は、カーブプロパティを変更できるEditモードにあります。

BasisCurvesには、 Linear(線形)Cubic(3次) の2つのタイプがあります。 スキーマで定義されているプロパティの大半は、 Cubic カーブ用です。

Tip

デフォルトの Non-Periodic Linear カーブの外観でほぼ問題ないものの、カーブを滑らかにしたい場合は、 Pinned Cubic BSpline を使用します。 これら2種類のカーブで、ほとんどのケースに対処できるはずです。

プロパティ

目的

Curve Basis

Curve TypeCubic の時、このパラメータはカーブの補間方法を制御します。

  • Bezier - カーブは頂点の 近く で滑らかに補間されます。頂点の数には厳格な要件があります。

  • BSpline - カーブは頂点の 近く で滑らかに補間されます。

  • CatmullRom - カーブは頂点 滑らかに補間されます。

Wrap

各カーブの終端の解決方法を定義します。

  • Non-Periodic - カーブの終端に何も特別な考慮がされません。CVの数によっては、3次スプラインカーブは短くなる場合もあります。

  • Periodic - カーブの終端を始まりまで戻してループにします。

  • Pinned - Karmaは必要に応じて頂点を挿入して、3次スプラインカーブを有効にしたり、モデリングされた時にカーブが開始/終了するようにします。まつ毛などのクローズアップのヘアに使用すると便利です。

カーブのタイプによって、束を有効にするのに必要な頂点の数は異なります。 不正なトポロジーが原因で、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を使用してカーブの向きを指定)。 レンダリング時にカーブの基底を上書きすることも可能です。

Karmaは、カーブに対して良い感じのテクスチャ空間を用意することができます。 平坦なリボンや捻れたリボンには自動的にテクスチャが付けられます。 チューブ状のカーブには法線を追加することで、Karmaはそのカーブを軸としたテクスチャを計算することができます。

チューブ状のカーブのUV
捻れたリボンのUV
平坦なリボンのUV

パーティクル

Sphereポイント
Discポイント
Oriented Discポイント

パーティクルまたはポイントクラウドは、USDでは Points Primとして表現されます。 デフォルトでは、Karmaはポイントを球としてレンダリングしますが、その見た目はRender Geometry Settingsで変更することができます。 パーティクルは誕生したり死亡したりするため、ポイントベースのPrimのポイント数は、時間の経過とともに増減します。 Points Primはステージ内のどの時間にも存在していなければなりませんが、そのPrim自体の中ではポイント個々にバリエーションを加えることができます。

Note

過去のリリースでは、 Karmaにはジオメトリをポイント上にインスタンス化するために基本的なプロシージャルがいくつか用意されていました。 それらのプロシージャルはPoint Instancerと比べてパフォーマンス/メモリでメリットがないので廃止されました。

Points LOP

ポイントプリミティブを作成したり編集します。

インスタンス

オリジナルのOpenUSDの定義

USDでは、2つの方法のインスタンス化があります:

  • ネイティブインスタンシングは、効率的にアセットのコピーをたくさん表現できるようにするために、USDに単一の“プロトタイププリミティブ”を生成するように命令するプロパティです。

  • ポイントインスタンサーは、ジオメトリの膨大なコピーを効率的に表現できる特別なスキーマです。

どちらのタイプのインスタンス化も、各プリミティブのトップレベルのトランスフォームに対応しており、さらに、(各ネイティブインスタンスに対して、または、ポイントインスタンサープリミティブに対して)Primvarsを編集してインスタンス単位でマテリアルプロパティを設定することもできます。 ネイティブインスタンスは、各インスタンスの実トランスフォームで、各インスタンスはシーン内で固有のネームスペースとして表現されます。 ネイティブインスタンスは、簡単にインスタンスからヒーローに昇格することができます(単に“instanceable”プロパティを無効にするだけです)。

ポイントインスタンサーは高速ですが、すべてのインスタンスのトランスフォームは、ポイントインスタンサープリミティブ上の配列アトリビュートとして設定されます。 インスタンスからヒーローに昇格させるには、シーンをMutate(変異)させる必要があります。 生成させたいインスタンスの数が多いほど、たいていの場合はヒーローに昇格させるよりもポイントインスタンスのままにする方が望ましいです。

Instancer LOP

SOPポイントを使用してPoint Instancerまたはネイティブインスタンスを作成します。

ボリューム

USDボリュームは複数のプリミティブで表現され、そのボリュームデータは実際にはUSDに格納されません。

Volume

マテリアルを含む、ボリューム'全体'を表現します。

Houdini Field Asset

SOPまたは.bgeoファイルからのHoudiniボリュームプリミティブ。

OpenVDB Field Asset

SOPまたは.vdbファイルからのVDBボリュームプリミティブ。

Field3D Asset

.f3dファイルに格納されているField3Dボリュームプリミティブ。

ボリュームプリミティブはボリューム全体を表現し、フィールドプリミティブはdensitytemperatureなどの個々のグリッドを表現します。 親ボリュームの子として、フィールドプリミティブはボリュームプリミティブのトランスフォームを継承しますが、個別にトランスフォームさせることもできます。

Houdiniには、ボリュームとフィールドの組み合わせを作成するためのノードがあります:

Volume LOP

ディスク上のファイルからボリュームおよびフィールドプリミティブを作成します。

SOP Import LOP

SOPからVDBまたはHoudiniフィールドプリミティブのボリュームを作成します。

Karmaがボリュームをサンプリングできるようにするにはデフォルトではdensityフィールドが必要です。 これを変更したいのであれば、Volume Sampling Fieldプロパティを使用します(以下参照)。

均一なボリューム

サーフェスジオメトリは、以下のレンダープロパティを使用すると、均一なボリュームとしてレンダリングすることができます。 displayColorを使用することでそのカラーを制御することができます。 基本的なボリュームシェーダを均一なボリュームにバインドすることもできます。

XformとScope

Karmaは、XformまたはScopeを直接レンダリングしません。 実際、HydraはこれらをKarmaに送信しません。 Karmaは、実際に描画/レンダリングされるGprimのみを受け取ります。

Xform LOP

Xformプリミティブを作成したり編集します。

Scope LOP

Scopeプリミティブを作成したり編集します。

ScopeとXformは、シーングラフを整理するのに役立ち、レンダープロパティや他のPrimvarを保持することができます。 Xformはトランスフォームさせることができるため、Coordinate Systemとしても使用することができます。 これをシェーダで使用すると、ある空間から別の空間にデータをトランスフォームさせることができます。

Render Visibility

Karmaのレンダリングプリミティブは、ほぼすべてのUSD Primで見つかったVisibilityアトリビュートを評価します。 Visibilityに加えて、Primの レンダリングの可視性 を決定するKarma固有のプロパティも存在します。

Render Visibility: * (デフォルト)
Render Visibility: primary
Render Visibility: primary|shadow
Render Visibility: -primary

How to

To...Do this

ビューアまたはScene Graph Treeからプリミティブを編集する

  1. ビューアまたはScene Graph Treeでプリミティブを選択します。

  2. ビューアまたはScene Graph Treeでそのプリミティブをクリックし、 Edit Primitive ▸ New node to edit primitive… に移動します。

  3. これにより、選択したプリミティブタイプに呼応したEditノードが作成されます。

Tip

New node… の代わりに Jump to node… を選択して、このシーンのプリミティブを作成または編集したHoudiniノードを再編集しても構いません。

Scene Graph Detailsペインから特定のプロパティを編集する

  1. ビューアまたはScene Graph Treeでプリミティブを選択します。

  2. Scene Graph Detailsペインで、1つまたは複数のプロパティをクリックし、 Edit Property をクリックします。

  3. これにより、プリミティブ上の選択したプロパティを編集できるよう設定された、Edit Propertiesがノードグラフに作成されます。

継承されたクラスを介して多数のプリミティブを編集する

単一のクラスのプリミティブを継承する複数のプリミティブを同時に編集できます。Component Builderを使用して作成されたアセットは、デフォルトでクラスプリミティブを継承します。

  1. ビューアまたはScene Graph Treeでプリミティブを選択します。

  2. ビューアまたはScene Graph Treeでそのプリミティブをクリックし、 Edit Primitive ▸ New node to edit primitive… に移動します。

    このオプションは、継承のセットアップにすでにプリミティブがある場合にのみ表示されます。

  3. これにより、継承されたクラスプリミティブを介してプリミティブを編集できるセットアップであるEditノードが作成されます。

Karmaユーザガイド

リファレンス