NVIDIA .miファイルは、NVIDIA シーンの記述言語で作成され、ASCII ファイルまたはバイナリ ファイルになります。
mental ray for Maya では、Maya 内のカスタム mental ray シェーダのテキストのみの統合の書き出しと挿入が可能です。この統合により、カスタマイズされた NVIDIA(.mi)テキストを保持した特殊用途の Maya ノードを作成できます。
これらのノードは、カスタム テキスト エディタ(Custom Text Editor)と特殊なカスタム テキスト コントロールを使用して、特定の Maya シーン構成要素に割り当てることができます。
mental ray for Maya で生成された mi ファイルには、レンズ シェーダ、ボリューム シェーダ、環境シェーダ、ライト シェーダ、マテリアル シェーダ、テクスチャ シェーダあるいはユーティリティ シェーダ、そしてオブジェクト定義といった、カメラ出力ステートメントのカスタマイズ済みバージョンを収めることができます。さらに、書き出しの特定の段階で書き込まれたテキストを生成できます。
詳細については、オブジェクトやシェーダへのカスタム テキストの割り当てを参照してください。
mental ray for Maya プラグインには、専用のノード タイプである mentalrayText ノードが用意されています。このプラグインには、ASCII テキストを編集できるシンプルなユーザ インタフェースが搭載されています。詳細については、オブジェクトやシェーダへのカスタム テキストの割り当てを参照してください。
これらのノードは、特定の状況において、カスタム テキスト エディタ(Custom Text Editor)を使用してシーン内の別のノードに接続できます。
mentalrayText ノードの Maya ノードへの割り当ては、追加のアトリビュート(Extra Attributes)セクションの .mi テキストで行われます。mental ray for Maya はシーンとシェーダ グラフを横断するときにこの新規アトリビュートをチェックします。新規アトリビュートが見つかった場合には、接続された mentalrayText のコンテンツはそれ以上チェックされずに書き込まれます。
テキスト モードのアトリビュートに応じて、カスタム テキストは生成された .mi テキストで既存テキストの後に追加されるか、前に追加されるか、既存テキストを完全に置き換えます。
Maya レンダラはこれらの追加のアトリビュートを無視します。このため、シーンを通常どおり支障なくレンダーできます。その一方で、変更されたシーンは、ライト、オブジェクト、マテリアル間の依存リレーションシップが壊れたために、mental ray でそれ以上レンダーできない場合もあります。一般的な注意事項を参照してください。
テキスト ノードおよびその接続を保持するには、シーンを Maya Binary(mb)ファイルとして保存する必要があります。
カスタム テキスト エディタ(Custom Text Editor)には、プルダウン リストとボタンから構成される 2 つの行があります。これらの行は既定で選択不可になっています。
Maya のオブジェクトやシェーダを選択すると、選択された構成要素に応じてカスタム テキスト エディタ(Custom Text Editor)が更新され、現在の選択でカスタムmi テキストで既存テキストの後に追加されるか、前に追加されるか、既存テキストを完全に置き換えます。
以下に 2 つのコントロール グループがサポートするものを示します。
初期バリアントを除く、いずれかのライト、カメラ、シェーディング グループを選択したときや、Maya の既定である lambert1 と particleCloud1 を除き、あらゆるシェーダを選択したときに有効になります。
メッシュまたは NURBS のシェイプが選択されたときに有効になります。シェイプの直接トランスフォームが選択された場合は、基礎となるシェイプが自動的に定義され、使用されます。
カスタム テキストは、移動時に認識される特殊なプレースホルダ文字や文字列を利用できます。これらの文字や文字列は書き出しで実際の値に置き換えられます。4 つのカスタム テキスト変数がサポートされています。
記号 | 修正される問題 |
---|---|
$ |
アトリビュート名の前にプレースホルダを使用して、名前をアトリビュート値に置き換えます。このアトリビュート名は存在している必要があります。カスタム テキスト エディタ(Custom Text Editor)は、すべての数値アトリビュートタイプと文字列タイプを認識します。 |
‘ |
バック アポストロフィ「'」で文字列を囲み、カスタム テキスト エディタ(Custom Text Editor)に対して、この文字列を MEL コマンドまたは Python コマンドとして評価する必要があることを示します。評価済み MEL/Python コードの場合は、文字列が返されます。詳細については、次の「!」を参照してください。 |
! |
感嘆符「!」は、「'」で囲まれた文字列が MEL と Python のどちらであるかを示すために使用します。「!」記号が含まれていない場合、カスタム テキスト エディタでは MEL コマンドであると判断されます。 例: '!mel any_mel_code'、'!python any_python_code' |
@ |
「@」記号は、パディングを示すために使用します。@ 記号の数はパディングの量を示します。たとえば、@@@@@ は最大 5 文字までゼロでパディングすることを示します。 |
カスタム テキスト ノードを作成し、それをシーン内の選択されたノードに割り当てると、アトリビュート エディタ(Attribute Editor)が更新されます。
オプション メニューには、これまで作成された使用可能なすべてのテキスト ノードが一覧表示されます。このオプション メニューで新規エントリを選択すると、現在のシーンの構成要素へのテキスト割り当ては、新規で選択したこのテキスト ノードに置き換えられます。また、シーンを Maya ファイルに保存すると、接続されたテキスト ノードも接続されていないテキスト ノードも含め、すべての既存のテキスト ノードが格納されます。カスタム テキスト エディタ(Custom Text Editor)にはカスタム テキスト ノードを削除する方法が搭載されていないので、カスタム テキスト ノードの削除は、標準の Maya メソッドで行わなければなりません。
カメラに割り当てられたテキスト ノードは、プラグインで作成される最初の出力ステートメントを適応させます。これにより、カスタマイズ済みのイメージ ファイルとフレームバッファを作成できます。さらに、レンズ シェーダ、ボリューム シェーダ、環境シェーダを追加できます。その他のカメラ パラメータは作用を受けず、Maya の設定に従って従来どおり書き込まれます。
ライトに割り当てられたテキスト ノードは、オリジナルのライト シェーダ出力に作用します。ライト パラメータは変更されることなく、従来どおり書き込まれます。標準の Maya ライト シェーダに替わる機能を使用すると、Maya マテリアルのイルミネーションが壊れます。Maya マテリアルのイルミネーションは特殊な light ディペンデンシー ノードに依存するからです。
シェーディング グループに割り当てられたカスタム テキスト ノードは、mental ray マテリアルの書き出しに作用します。テキストが置換モードで適用された場合は、接続されたサーフェス、ボリューム、ディスプレイスメント シェーダはまったく書き出されません。その他のモードで適用された場合は、こういったシェーダは依存リレーションシップのあるノードを含めて従来どおり書き込まれます。
カスタム テキスト エディタは、構成要素の使用目的が分かるように、現在選択されている構成要素名に material というプリフィックスを付けます。
移動プロセスでサポートされているその他のあらゆるシェーディング ノードにもテキスト ノードを割り当てることができます。エディタは、サポートされているノードが選択された場合などにコントロールを有効にして、選択された構成要素名の前にノードのタイプ名を配置します。このアクションはすべてのテクスチャ ノードとユーティリティ ノードに対して行われます。この機能を使えば、カスタム テキスト ノードのグラフを作成し、書き出すことができます。mental ray for Maya は、グラフが適切に書き出されることを保証します。つまり、リーフ ノードにカスタム テキストが含まれている場合でも、依存リレーションシップにあるノードの前にリーフ ノードが書き出されます。このようにして、カスタム テキスト自体にグラフのノードに対するリファレンスを記載することができます。ここで 1 つ制限事項があります。カスタム テキストは、構造を返すシェーダでの使用を想定していないということです。接続では、シェーダは常にそのノード名だけで書き込まれます。たとえば.outColorなどの出力プラグ名が追加されることはありません。
シェイプ ノードに割り当てられたカスタム テキストは、オブジェクトの名前とそのフラグを除いてオブジェクト定義全体に作用します。テキスト置換モードでは Maya の設定に応じてフラグが書き込まれますが、さらにフラグをカスタム テキストに適合させることができます。さらに、書き出されたオブジェクトは既定でタグが付けられるので、カスタム オブジェクト定義はマテリアル名の代わりにマテリアルのタグ番号を使用することになります。
実際のマテリアルはインスタンス ステートメントに割り当てられています。インスタンス ステートメントはすべてのタグ番号に対し 1 つずつ存在し、マテリアルの一覧を返します。このようにして、同一オブジェクトの異なるインスタンス、さらにメッシュ オブジェクトの中のポリゴンは異なるマテリアルを保持できます。
シーンが Maya ファイルに保存され、後で復元される場合には、削除不能な既定の lambert1、particleCloud1、initialShadingGroup、initialParticleSE の各ノードは追加のテキスト割り当ての格納を拒否します。これは、これらのノードが標準でない方式で取り扱われるからです。テキスト ノードは格納されますが、これらのノードへの接続は失われるため、再格納する必要があります。その他の Maya サーフェス ノードはすべて予想どおりに保存され、復元されます。
カスタム テキスト ノードは、アニメーションを限定的にサポートします。アニメーションを書き出すとき、通常のノード アトリビュートではフレームからフレームへの変更のチェックが行われます。そして、ノードは、次に続くすべてのフレームで漸増的に書き出されます。カスタム テキストがアタッチされている場合でも、この動作は実行されます。
mi 構文が正しいかどうか、またカスタム テキストで正しい名前のリファレンスが使われているかどうかのチェックを行うことはできません。
空のテキストが入っていて、構成要素に追加されるのではなく接続されるカスタム テキスト ノードは、そのテキスト ノードが属するシェーダやオブジェクトの出力を除去します。
カスタマイズされたテキストと標準の Maya ノードの両方が含まれているシーンは、mental ray でうまくレンダーすることは不可能です。特に、カスタマイズされたライト ノードを使用しているときには、Maya ライトの依存リレーションシップに制限事項があるために、mental ray でレンダーできません。
カスタム テキストは、構造を返すシェーダの使用向けではありません。接続では、シェーダは常にそのノード名だけで書き込まれます。たとえば.outColorなどの出力プラグ名が追加されることはありません。