Houdini 21.0 SolarisとKarma

Karma Ray Switch

光線タイプを使用して、オブジェクトを識別し、分析します。

On this page

Karma Ray Switch VOPは、レンダリングされるオブジェクトに対して光線タイプ別にカラーを適用することができます。 例えば、光沢反射コンポーネントやSSSコンポーネントのみを着色することができます。 これは、画像を分析したり、特定要素を強調表示するためだけでなく、コンポジットにも役立ちます。 Karma Ray Switch VOPは、Karma CPUとXPUの両方で動作し、以下の光線タイプに対応しています:

光線タイプ 説明
Camera(カメラ) カメラ光線はプライマリ光線とも呼ばれ、カメラから直接見えて、他のオブジェクトに遮られていないものすべてを表示します。
Diffuse(拡散反射) 拡散反射光線は、バウンス光線や二次光線とも呼ばれ、間接照明をシミュレーションします。光線が粗い表面に当たると、それは鏡のように一方向に反射するのではなく、散乱します。拡散光線は、リアルなグローバルイルミネーションには欠かせません。
Glossy Reflection(光沢反射) 光沢反射は、反射の“鮮明さ”を示します。完全な鏡では、反射したオブジェクトから鮮明な画像が得られます。つや消し金属のようなマテリアルでは、反射物がぼやけます。
Glossy Transmission(光沢透過) 光沢透過は、屈折の“鮮明さ”を示します。入射光が完全に屈折していない場合、例えば、すりガラスや半透明のプラスチックでは、物体が柔らかく見えたり、ぼやけて見えたりします。
SSS(サブサーフェススキャタリング) サブサーフェススキャタリングは、ワックス、プラスチック、皮膚などのマテリアルのほか、牛乳やオレンジジュースなどの液体でも起こります。光は表面を透過して内部で散乱し、別の地点から出射します。サブサーフェススキャタリングは拡散効果であり、バックライトを当てた時に、マテリアルに柔らかさと輝きを与えます。
Volume(ボリューム) ボリュームは、ボクセルの3次元ラスターで示され、霧、煙、火、雲などの現象を表現します。ボリュームには、レンダリングでのルックを定義したアトリビュート(例えば、モーションブラーならVelocityアトリビュート、炎ならTemperatureアトリビュート、霧のオブジェクトならDensityアトリビュート)を格納することができます。

シーンのセットアップ

球と2枚の縦長な板が地面オブジェクト上に置かれています。 その地面は木の床で、すべてのシーンエレメントがその木のコーティング内で反射しています。 1つ目の板は少し曇ったガラスでできており、2つ目の板は鏡になっています。 球自体にはMtlX Standard Surface VOPが割り当てられていて、デフォルトの設定が適用されています。 球の写像は、そのガラス板を通過して屈折し、鏡に反射しています。 このガラス板は幅が狭いので、球の写像の一部だけが屈折し、左側の3分の1が直接鏡に映っています。 この部分がぼやけていないことが分かります。 HDRが使用されたEnvironment Light LOPがシーンを照明しています。

マテリアルについては、以下の2つのことを考慮する必要があります:

  • 球には、MtlX Standard Surface VOPまたはMtlX OpenPBR Surface VOPのどちらかのシェーダを 使用しなければなりません

  • 残りのオブジェクトには、Quick Surface Materialなどの有効なシェーダタイプも適用することができます。

Karma Ray Switch: 結果

球のシェーダはMaterial Library LOP内部のKarma Material Builder Subnet VOP内にあります。 そこの構成済みシェーダネットワークにKarma Ray Switch VOPを追加し、その result 出力をMtlXサーフェスシェーダの base_color 入力に接続します。

そのKarma Ray Switch VOPを選択すると、パラメータエディタには、上記の説明とまったく同じ光線タイプのリストが表示されます。 Signature ドロップダウンメニューから、 Color を選択します。 これで、光線タイプ別にそれぞれカラーを直接選択することができます。 デフォルトでは、すべてのタイプが純白で表現されています。 このシーンでは、その結果の画像がシェーダから得られる画像と非常によく似ていますが、球はわずかに明るくなっています。 次に、実際にサポートされている光線のカラーを定義します。 ここでは、 CameraGlossy ReflectionGlossy Transmission のカラーを変更します。

Camera

カメラ光線は、いわゆる一次光線であり、シーン内の他のオブジェクトから反射されたり、跳ね返されたりすることはありません。 したがって、元の球しか見えません。

Glossy Reflection

この例の鏡は完全に反射し、ガラス板で遮られていない左側の部分には、元の球の鮮明な写像が見えます。

Glossy Transmission

ガラス板にざらつきがあるため、鏡の写像の右側がぼやけて見えます。 また、ガラス板には直接、ぼやけた筋も見えます。 よく見ると、地面のコーティングされた木材の反射内にGlossy Transmissionのカラーが見えます。

Karma Ray Switch: raytype

Karma Ray Switch VOPには raytype 出力も用意されており、そのデータストリームを使って面白い効果を得ることができます。 この例では、反射した写像にだけ異なるテクスチャを適用する方法を説明しています。 この手法には、2つ目のサーフェスシェーダVOPが必要になります(MtlX Standard Surface VOPでもMtlX OpenPBR Surface VOPでも動作します)。

球の反射写像にはチェッカーボードを使用し、元のオブジェクトには異なるサーフェスシェーダを使用するとします。 これを行なうには、 raytype 出力をMtlX Mix VOPのマスクとして使用することで、オブジェクトと反射を分けることができます。

  • 新しいKarma Material Builderから始めて、そのサブネットをダブルクリックして中に入ります。 そこで、既存のmtlxstandard_surfaceシェーダを調整します。 どんなマテリアルタイプを作成しても構いません。 このシーンでは、球も完全な鏡(Metalnessパラメータを1に設定)にしています。

  • 球の反射写像用となる2つ目のサーフェスシェーダを追加します。 このサーフェスシェーダにはチェッカーボードを適用することにします。 その新しいサーフェスシェーダの base_color 入力にMtlX Checkers 2D VOPを接続します。 元の球でそのパターンを表示させるには適切なUVが必要であることに注意してください。

  • Karma Ray Switch VOPも必要です。

サーフェスシェーダを混在させる方法

上記の3個のノード(既存のmtlxstandard_surfaceシェーダ、チェッカーボードが適用された2つ目のサーフェスシェーダ、Karma Ray Switch VOP)を取り込むために、MtlX Mix VOPを配置して、その3つの入力を次のように接続します。

  • 元の球のシェーダ(既存のmtlxstandard_surfaceシェーダ)の out 出力をMtlX Mix VOPの fg 入力に接続します。

  • 2つ目のサーフェスシェーダの出力を bg 入力に接続します。

  • Karma Ray Switch VOPの raytype 出力を mix 入力に接続します。

  • 最後に、MtlX Mix VOPの out 出力をシェーダネットワークのMaterial_Outputs_and_AOVsノードの surface 入力に接続します。

プレビューレンダリングを行なうと、マテリアルの適用順序が正反対になっていることがわかります。 これを修正するために、MtlX If Equal Node VOPを追加します。 Karma Ray Switch VOPの raytype 出力をそのMtlX If Equal Node VOPの value1 入力に、そのMtlX If Equal Node VOPの out 出力をMtlX Mix VOPの mix 入力に接続します。

Karma Ray Switch VOPの raytype 出力は、利用可能な光線タイプを示した整数を返します。 例えば、0はカメラ光線、2は拡散反射光線を示します。 完全なリストは、Karma Ray Switch VOPのヘルプに載っています。 一方、MtlX If Equal VOPには、 Signature ドロップダウンがあります。 そこから Float (I) を選択します。 この選択は、整数をMtlX Mix VOPの mix 入力で必要な浮動小数点に変換します。

最終的にマテリアルを入れ替えるために、MtlX If Equal Node VOPの Input1 パラメータを0より大きい値(例えば1)に設定します。 このノードは Value1Value2 の値を比較します。 両方の値が等しい場合は Input1 の値が、そうでない場合は Input2 の値がMtlX Mix VOPに渡されます。

これで、レンダリング結果には、鏡の球の反射にチェッカーボードが表示されるはずです。 よく見ると、その鏡の球の中でチェッカーボードが反射しているのが分かります。

SolarisとKarma

SolarisとUSD

  • USDの基本

    いくつかUSDの概念について取り上げ、それらの概念とHoudini USD対応との関係性について説明します。

  • LOPの挙動

    Solaris LOP(Lighting Operator)がUSDを生成/変更する際の挙動について説明します。

  • Solarisユーザインターフェース

    LOPネットワークとUSDデータを操作するためのユーザインターフェースの使い方を案内します。

  • プリミティブマッチングパターン

    USDプリミティブマッチング構文の使い方。

  • LOPとUSDの用語集

    USDわかりますか?

  • Solarisシーンビューア

    Houdiniオブジェクト/SOPビューアと比較したSolarisビューアの違い/拡張について説明します。

  • USDでのVEXの使い方

    スクリプトによってSolaris/USDをカスタマイズする。

  • USDへ書き出す方法

    USDデータをディスクに保存します。

  • SOP Geometry I/O

    HoudiniがSOPジオメトリをUSDに変換する方法、その工程を制御する方法の詳細。

  • Component Builder

    Component Builderツールは、マテリアル、バリアント、ペイロード、レイヤをサポートし、SOPからUSDモデルを作成するためのネットワークスニペットを配置します。

  • パフォーマンスTips

    Solarisのインタラクティブなワークフローを向上させます。

  • サンプルシーン

    SolarisとUSDを学習するのに役立つシーンとアセットを紹介します。

Karma

  • Karma

    Houdiniの物理ベースのUSDレンダラー。

  • Karma XPU

    Houdiniの高速でモダンなXPUレンダーエンジン。

  • カラーマネージメント

    OCIO、カラー空間、ガンマ、トーンマッピングについて詳しく学習します。

  • レンダリング統計

    進行中のレンダリングやレンダリング画像のレンダリングプロセスに関して、様々な統計情報を表示する方法。

Karmaユーザガイド

ルック開発

  • MaterialX

    HoudiniにはMaterialXシェーダノードに呼応させたVOPノードが用意されています。これらのノードを使用してシェーダネットワークを構築したり、既存のMaterialXベースのシェーダをインポートすることで、(HoudiniのUSDレンダラーの)KarmaでMaterialXシェーダノードを利用することができます。

  • UDIMパス

    テクスチャ空間の異なるタイルを、それぞれ別の解像度で、異なるテクスチャファイルにエンコードすることができます。その後、kaiju.exrといったテクスチャファイル名を指定すると、Houdiniがロード時にそのトークンを特定のタイルアドレスに置き換えてくれます。

  • シェーダ変換

    シェーダノードのUSDプリミティブへの変換を含む、Solarisシェーディングフレームについて説明しています。

  • Shotbuilderツール

    マルチショットパイプライン用便利ツール。

プロシージャル

補足ドキュメント