カスタム mental ray シェーダを統合する

以下に記載される情報を参照すると、カスタム mental シェーダを次のように表示できます。

カスタム mental ray シェーダの記述構文の詳細については、mental ray シェーダ言語拡張を参照してください。

ファイル スウォッチとインタラクティブ スウォッチ

シェーディング ノードの分類文字列によって、スウォッチがファイル スウォッチとインタラクティブ スウォッチのどちらであるかが定義されます。ファイル スウォッチはスタティックなアイコンとして、インタラクティブ スウォッチはダイナミックに更新されるアイコンとして、それぞれハイパーシェード(Hypershade)に表示されます。

スウォッチのタイプ 分類文字列の内容

ファイル スウォッチ

mentalRaySwatchGen

インタラクティブ スウォッチ

swatch/mentalRaySwatchGen

分類文字列は、Maya の起動時、シェーディング ノードが登録されるときに登録されます。特定シェーディング ノードの分類文字列を変更するには、Maya を起動する前に、mentalrayCustomNodeClass.mel ファイルを編集する必要があります。このファイルは、<maya directory>/scripts/others にあります。

シェーディング ノードの分類文字列をチェックするには、次の MEL コマンドを使用します。

getClassification <nodeType>

ここで <nodeType> は、チェックするシェーディング ノードです。例:

getClassification mib_illum_lambert;

レンダー時にカスタム mental ray シェーダを表示する

カスタム シェーダ ライブラリを読み込む方法については、シェーダをロードするを参照してください。

さらに、シェーダを mayabase.lib に対してリンクする場合、mayabase.dll を PATH 環境変数に設定する必要があります。次の行を Maya.env ファイルに追加します。

PATH = $MAYA_LOCATION/mentalray/shaders;$PATH

ハイパーシェード(Hypershade)またはアトリビュート エディタ(Attribute Editor)で、カスタム mental ray シェーダをスウォッチとして表示する

$MAYA_LOCATION/scripts/others/ にある mentalrayCustomNodeClass.mel ファイルを編集してシェーダを追加します。このファイルは mental ray シェーダの分類用の文字列を定義します。シェーダの分類用の文字列に swatch/mentalRaySwatchGen が含まれていることを確認します。mental ray を使用してシェーダのスウォッチをレンダーします。カスタム アトリビュート エディタ テンプレートを定義すると、このスウォッチがハイパーシェード(Hypershade)とアトリビュート エディタ(Attribute Editor)に表示されます。

カスタム mental ray シェーダをシェーディング モードでシーン ビューに表示する

シーン ビューは、簡単な Phong シェーディング モデルを実装して、カスタム シェーダを表示しようとします。ハードウェア シェーダは、Phong シェーダ モデルの要件を満たす特定のアトリビュートを検索します。少なくとも、拡散(Diffuse)チャネルの要件は満たす必要があります。

Phong シェーダ モデルの拡散チャネルは、以下のアトリビュートがシェーダに存在する場合、そのアトリビュートによってドライブされます(複数存在する場合は、リストの 1 番目のアトリビュートが使用されます)。このアトリビュート タイプは、カラーであることが必要です。

以下のアトリビュートが存在する場合、アンビエント(Ambient)チャネルはそのアトリビュートによってドライブされます。このアトリビュートはカラーであることが必要です。

アンビエンス(Ambience)アトリビュートは、アンビエント値をスケールするために使用します。このアトリビュートはカラーであることが必要です。

Phong シェーダ モデルのスペキュラ(Specular)チャネルは、以下のアトリビュートがシェーダに存在する場合、そのアトリビュートによってドライブされます(複数存在する場合は、リストの 1 番目のアトリビュートが使用されます)。このアトリビュート タイプは、カラーであることが必要です。

Phong シェーダ モデルの指数(Exponent)チャネルは、以下のアトリビュートがシェーダに存在する場合、そのアトリビュートによってドライブされます(複数存在する場合は、リストの 1 番目のアトリビュートが使用されます)。これらはスカラー(float)アトリビュートであることが必要です。

以下のアトリビュートが存在する場合、Phong シェーダ モデルのアルファ値はそのアトリビュートによってドライブされます。これらはスカラー(float 値)アトリビュートであることが必要です。

ハードウェア テクスチャリングを有効にした状態で、カスタム mental ray シェーダをシーン ビューに表示する

シェーダでテクスチャリングを有効にするには、シェーダ ノードのカスタム アトリビュート エディタを作成する必要があります。カスタム コントロールをカスタム アトリビュート エディタに追加するには、次のように MEL プロシージャをコールします。

AEhardwareTextureTemplate(string $nodeName, string $attrTokens)

次のパラメータを使用します。

このプロシージャによって、コントロールがアトリビュート エディタに追加されます。これでハードウェア テクスチャリングで使用するチャネルを選択できるようになります。

サンプル シェーダ

上記のすべてを実装したシェーダの例については、$MAYA_LOCATION/mentalray/devkit/docs/writingShaders/lightlink を参照してください。

関連項目