サポートチケットを作成する
フォローする

Q100170:カタナのテクスチャ処理

概要

テクスチャはシェーダライブラリとスタジオパイプラインによってさまざまな方法で処理され、Katanaはいくつかの一般的な規則に従って、テクスチャを割り当てるための柔軟なフレームワークを提供します。

以下は、ArnoldとRenderManの両方で機能するこれらのオプションのいくつかの要約です。ここで説明されている両方のアプローチを示す添付のサンプルシーンもご覧ください。

詳しくは

テクスチャを宣言するためのマテリアル属性の使用

各オブジェクトに独自のテクスチャを付与する最も簡単な方法は、オブジェクトごとにマテリアルを作成し、テクスチャをシェーダで文字列パラメータとして明示的に宣言することです。その後、各オブジェクトに関連品目が割り当てられます。

このアプローチは、特に多数のオブジェクトを含むシーンを扱うときには最も手間がかかり、マテリアルを変更する必要があるときには柔軟性に欠けます。

多くのオブジェクトは同じマテリアルを共有できますが、異なるテクスチャを割り当てる必要があります。この場合、各オブジェクトが独自のテクスチャを拾うようにシーンを設定することが可能です。

テクスチャを宣言するためのオブジェクト属性の使用

マテリアルにテクスチャを設定するのではなく、レンダリングされるオブジェクトは任意の属性を介して関連するテクスチャファイルを指すことができます。

RenderManプリムバー

RenderManを使用する場合は、テクスチャファイルをRenderMan primvarとしてレンダラに渡すことができます。

Katanaでは、 textures.xxx という名前の文字列属性 は、 xxx という名前のprimvarとして自動的にRenderManに書き込まれ ます。シェーダに同じ名前の文字列パラメータがある場合、RenderManは、このシェーダパラメータをrendertimeに設定するために、ジオメトリから渡されたprimvarの値を使用します。

テクスチャの名前がジオメトリの任意の属性に含まれている場合は、OpScriptを使用して、これらの texture.xxx 属性をRenderManによって認識される形式 に設定できます

RenderManプリムバーを使用してサンプルシーンを設定するには、次の手順に従います。

  1. [ ヘルプ ] > [ ポニーが欲しい ]をクリックして、CameraCreateと2つのポニーノードを追加し ます。あなたがポニーに名前を付けることを確認してください。
  2. AttributeSetノードを使用して、属性 'geometry.arbitrary.texFile'を作成します。一方のポニーでは「flag_uk.tx」に、もう一方のポニーでは「flag_usa.tx」に設定してください。
  3. マージノードを使用してすべてのノードをマージします。
  4. マテリアルを作成し、それにRMSGPSurfaceシェーダを追加します。
  5. MaterialAssignノードを使用して、マテリアルをroot / world / geo // *に割り当てます。
  6. PxrStdAreaLightを使用してGafferThreeノードを追加します。
  7. 今度はテクスチャを処理するOpScriptノードを作成します。
    - カスタムCELの場所(/ root / world / geo // *)に適用します。つまり、OpScriptはgeoの下にあるすべてのオブジェクトに再帰的に適用されます。
    - texturePathという名前のユーザーパラメータを追加し、Katanaに含まれるデモのテクスチャが保存されている場所に値を設定します。
    Linuxでは /opt/Foundry/Katana2.5v3/demos/tx_files/ 、または
    C:/ Program Files / Katana 2.5 v3 / demos / tx_files / Windowsの場合
    - 以下のluaコードを追加してください。
    local texPath = Interface.GetOpArg( 'user.texturePath')
    ローカルファイル名= Interface.GetAttr( 'geometry.arbitrary.texFile')
    ローカルファイルパス=(texPath:getValue()..ファイル名:getValue())

    Interface.SetAttr( 'textures.SurfaceMap'、StringAttribute(filePath))



  8. これをレンダリングすると、各ポニーにはgeometry.arbitrary.texFileで指定されたテクスチャが割り当てられることがわかります。

この場合のSurfaceMapのように、Katanaでパラメータの内部名を確認するには、それを中マウスボタンでドラッグしてScript Editorのテキストフィールドに移動します。結果のコマンドは、属性に使用する名前を教えてくれます。

</s></s></s></s></s></s></s></s>

テクスチャの名前またはファイルパスを含むタグをgeometry.arbitraryに追加する方法の詳細については、 パイプラインデータを使用したテクスチャの設定 に関するKatanaオンラインヘルプを参照してください

シェーダパラメータの{attr:xxx}構文

ArnoldとRendermanの両方で機能するもう1つのオプションは、シェーダパラメータに{attr:xxx}構文を使用することです。これは、マテリアルを作成するときに、マテリアルの任意のパラメータを、たとえば{attr:tex.SurfaceMap}に設定することによって機能します。

</s></s></s></s></s></s></s></s>

レンダラーは、レンダリング時に、レンダリングされるジオメトリ上でtex.SurfaceMapという属性を探します。シェーダパラメータは、geometry属性から読み取られる値に設定されます。 </s></s></s></s></s></s></s></s>

このアプローチでは、上の例で説明したようにシーンを設定しますが、Surface Mapパラメータの値として{attr:tex.SurfaceMap}を追加し(テクスチャではありません)、プリムバーを使用していないことを示します。 OpScriptコードの最後の行

Interface.SetAttr( 'tex.SurfaceMap'、StringAttribute(filePath))

詳細は、 "Texture Handling - Overview"サンプルプロジェクトと Katanaオンラインヘルプの Texture Handling Options セクション を参照してください

この記事は役に立ちましたか?
/

We're sorry to hear that!

Please tell us why.
4人中1人がこの記事が役に立ったと言っています

コメント