はじめに
Mayaには標準のマテリアルが用意されていますが、自作シェーダーを使うと、標準機能だけでは難しい表現や、制作目的に合わせた独自の描画処理を実装できます。
Mayaではいくつかのシェーダー言語を使用できますが、この記事では、MayaでOSL(Open Shading Language)シェーダーを使用する手順を解説します。
ArnoldのaiOslShaderノードを使う方法と、Arnoldシェーダとして直接読み込む方法の2通りを紹介します。(OSLそのものについて解説は、他のサイトに譲ります。)
「Mayaで自作シェーダーを使う」シリーズの他の記事はこちらです。
aiOslShaderを使う方法
aiOslShader ノードを作成します。

オブジェクトに適当なマテリアル(Lambertなど)を割り当てます。

SGノードの「Surface Shader」の接続先を、aiOslShader の「Out Value」につなぎ替えます。

※ 代わりにオブジェクトに aiToon 等を割り当て、aiOslShader の Out Value を aiToon の Base Toonmap に接続したり、その他マテリアルの入力に接続して使用することも可能です。
※ OSLを書き換えれば、outValueではなく、outColorなど、任意のアトリビュートを出力することもできます。これを、aiFlatなどに接続して色を出力することも可能です。
aiOslShader ノードにOSLコードを記述し、コンパイルします。

以下は、ピンク色の陰影がつくシンプルなサンプルシェーダーです。
ビューポートをArnoldに切り替えるか、Arnold RenderViewを開きます。

ビューポートをArnoldに切り替えた場合

Arnold RenderViewを開いた場合
シーンを更新します(Arnold > Render > Update Full Scene、またはRenderViewで Ctrl+U)。


上記のサンプルを使用した場合、オブジェクトが陰影のついたピンク色に表示されれば成功です。

Arnoldシェーダとして読み込む方法
任意のフォルダに ARNOLD_PLUGIN_PATH を通します。たとえば、Maya環境ファイルに以下を追記します。
ファイル名: Maya.env
ARNOLD_PLUGIN_PATH=C:\Users\xxx
ARNOLD_PLUGIN_PATH を通したフォルダに、OSLファイル(.osl)とメタデータファイル(.mtd)を配置します。

.mtd ファイルは以下のように記述します。maya.id には他のプラグインと被らないIDを設定してください。
ファイル名: sample.mtd
[node sample]
maya.name STRING "sample"
maya.id INT 0xaaaaaaa
maya.classification STRING "Shader/surface"
maya.output_name STRING "outColor"
maya.output_shortname STRING "out"
Mayaを起動し、ノードエディタ等にシェーダーの項目が追加されていれば成功です。

まとめ
MayaでOSLシェーダーを使うには、aiOslShader ノードに直接コードを書いてコンパイルする方法が手軽です。より本格的に運用したい場合は、ARNOLD_PLUGIN_PATH にOSLファイルとメタデータを配置することで、Mayaのノード一覧から直接作成できるようになります。
OSLはArnoldレンダラー上で動作するため、結果の確認にはArnoldビューポートまたはRenderViewを使用してください。



コメント