トラブルシューティング: mental ray for Maya レンダリングの一般的な問題

.mi 形式で書き出す場合、フレームごとにジオメオトリが振動する

mental ray standalone でのレンダリング用に .mi 形式で書き出されたファイルで、フレームごとにジオメトリが振動しているように見えることがあります。この場合は、次の 3 つの解決方法があります。

方法 1

.mi ファイルに書き出すときに、ASCII の代わりにバイナリ ファイル フォーマットを使用して書き出し、変換によるデータ損失を防ぎます。

方法 2

精度が下がるのは、mental ray for Maya が浮動小数点の精度 6 桁、倍精度浮動小数点の精度 15 桁で書き出しているためです。たとえば、浮動小数点の値 1000.2249 は、書き出す時に 1000.22 に丸められます。

精度を上げるためには、浮動小数点で書き出し(Export Float Precision) および倍精度で書き出し(Export Double Precision)といったユーザ定義のアトリビュートを使用することができます。

ステータス ラインで次の値を入力して、これらのアトリビュートを作成します。

addAttr -type short -ln “exportFloatPrecision” mentalrayGlobals
addAttr -type short -ln “exportDoublePrecision” mentalrayGlobals

これらのアトリビュートを以下のように設定します。

setAttr mentalrayGlobals.exportFloatPrecision <value>
setAttr mentalrayGlobals.exportFloatPrecision <value>

ここで、<value> は、使用する精度の桁数です。

方法 3

大きいオブジェクト オフセットを非常に小さいシェイプのデフォメーションとともに使用することを避け、頂点位置が 1000.000001 のような結果にならないようにします。これは一般的に浮動小数点で表現できる精度を超えており、また .mi フォーマットには頂点位置の倍精度表現がありません。既定の精度が .mi ファイルでシーンを表現するのに十分でない状況では、Maya モデルを確認して極端な値にならないようにする必要があります。

  • シーン要素のグローバルな配置では、インスタンス変換行列のみを使用します。
  • ローカルの機能とデフォメーションでは、そのシェイプの頂点 / ポイントのデータのみを使用します。

スキニングなど、Maya モデリング機能の一部は、最終的なシェイプ プロパティへのベイク処理グローバル変換で確認されるので、極端なケースでは記述の問題が起きる場合があります。

mental ray for Maya レンダリングのエラー

mental ray for Maya のレンダリング エラーが発生した場合は、Maya シーンを保存し、シーンを即座に再レンダーしないようにしてください。代わりに、Maya を終了して再起動します。

エラー メッセージ try -memory エラーが表示される

シーンをレンダーするのに十分なメモリがない場合は、「MEM 0.3: TRY -MEMORY 314」に似たエラー メッセージが表示されることがあります。トラブル シューティングするには、レンダー > 現在のフレームのレンダー(Render > Render Current Frame)を選択し、メモリ制限(Memory Limit)をエラー メッセージに表示されるメモリ量以上に増やします。ただし、一般的には、メモリ不足が発生する場合には、シーンの最適化を再検討することも必要です。

一次可視性をオフにしてもオブジェクトがレンダリングされる

オブジェクトがイメージ プレーンなどの透明なオブジェクトによって隠れている場合、オブジェクトの一次可視性(Primary Visibility)のフラグ(オブジェクトのアトリビュート エディタ(Attribute Editor)レンダリング詳細(Render Stats)セクション)がオフになっていても、オブジェクトはレンダリングされます。

代わりに、透明度の可視(Visible in Transparency)フラグ(オブジェクトのアトリビュート エディタ(Attribute Editor)mental ray セクション)をオフにします。

この動作は、mental ray for Maya でのみ発生します。これは mental ray for Maya が、Maya レンダラと異なり一次可視性(Primary Visibility)透明度(Transparency)を区別するからです。一次可視性(Primary Visibility)をオフにしても、mental ray は前面の透明なオブジェクトの後ろにあるジオメトリを認識し、レンダリングに含めます。このジオメトリを除外するには、透明度の可視(Visible in Transparency)を無効にしてください。

注:

この動作はまた、前面のオブジェクトが透明(Transparent)な場合にのみ発生します。前面のオブジェクトの一次可視性(Primary Visibility)をオフにしてシーンをセットアップすると、この動作は発生しません。

mental ray for Maya のレンダー結果が Maya のレンダー結果と異なる

以下のセクションで、Maya と mental ray for Maya 間の明らかな違いを説明し、その対処方法に関するヒントを提供します。

スキャンラインのみのレンダリング

スキャンラインのみのレンダリングは、Maya の既定のレンダー モードです。スキャンラインのレンダリングにさまざまな制約があるため、モーション ブラー、ボリューム レンダリング、シャドウ トレーシングなどと一緒に使用すると、アーティファクトが生じる可能性があります。レンダーに問題が生じた場合には、レイ トレーシング(Raytracing)をオンにする必要があります。

ディスプレイスメント

mental ray は、ディスプレイスメント マップのディテールにうまく適合するように条件判断型テッセレーションを使用しています。一次テッセレーション(NURBS の場合: サーフェス計算後)は、ディスプレイスメントの概算の設定によって制御される、二次基準に合わせて更に分割されます。mental ray for Maya は、既定で、曲率に応じて三角形に分割する適切な設定値を設定します。これは、フィーチャベースのディスプレイスメント マッピングの 1 つの方法です。近似エディタ(Approximation Editor)でカスタム ディスプレイス近似ノードを作成または選択してこれらの設定を変更することができます。近似ノードの詳細については、近似ノードを参照してください。

シャドウ マッピング

Maya ライトの mental ray シャドウ マップ アトリビュートが無効の場合、mental ray for Maya では、シャドウ マップのほとんどのパラメータが Maya の深度マップ設定から導き出されますが、コントロールの値はほとんど該当しません。このため、特にフィルタの値を変更してソフト シャドウを生成したときに、異なる結果が生じます。シャープなシャドウの場合は、フィルタ サイズ(Filter Size)を 0 に設定する必要があります。中間距離の使用(Use Mid Dist)自動焦点の使用(Use Auto Focus)など、その他のコントロールは mental ray シャドウマップの値には適用されません。

mental ray for Maya のシャドウ マッピングの処理方法については、Maya のシャドウを参照してください。

バンプ マッピング

mental ray シェーダにバンプ マッピングを導入する場合は、バンプ ノードのフィルタ(Filter)設定を Maya とは若干変更する必要があります。このフィルタでは、通常、ビューに依存したバンプ マッピングのディテールが生成されますが、これは、アニメーションには適さない場合があります。Maya と mental ray の両方で、フィルタ(Filter)の値を 0 にしてこのフィルタを無効にすると、フィルタのオフセット(Filter Offset)によってバンプ マップのルックアップが決まります。これによって、ビューに依存しない正しいバンプ マッピングのレンダー結果が得られます。

マットの不透明度(Matte Opacity)

透明なオブジェクトでは、Maya のマットの不透明度(Matte Opacity)の設定に従って、最終イメージに適切なアルファ チャネルが生成されます。ただし、以下のような制約があります。

  • mental ray のカラー クリップ モードとプリマルチプライの設定がマット結果に影響します。既定のカラー クリップ モード Raw では、Maya との完全な互換性が保証されています。特に、BlackHole 不透明度モードを使用したとき、または、OpacityGainSolidMatte モードでマットの不透明度(Matte Opacity)の値を 0 にしたときです。
  • Raw 以外の mental ray のカラー クリップ モードでは、より良いエフェクトを生成するために、フレームバッファに格納される前にカラー値またはアルファ値が変更されることがあります。
  • BlackHole 不透明度モードでは、mental ray でレンダーしたときにカラー チャネルで異なる結果が生成されることがあります。つまり、反射が表示されたままになってしまいます。

透明度の詳細については、サーフェス テクスチャを参照してください。

被写界深度(Depth of Field)

このエフェクトは、Maya での出力フィルタとは異なり、mental ray のレンズ シェーダでサポートされています。このため、mental ray ではグローバルなサンプリング設定の影響を受けます。サンプリング レベルの最小値または最大値を上げると画質が向上しますが、その分、レンダリング スピードが低下します。一方、出力フィルタでは正しい深度オブ フィールド ブラーを生成できないような難しいシーンでも、この真の 3D エフェクトではアーティファクトが生じることはありません。

レンダー レイヤ(Render Layers)

グループをレンダー レイヤに割り当てると、mental ray for Maya では、そのグループのメンバもすべてそのレイヤに属し、そのアトリビュートを継承するものとみなされます。ただし、Maya では、グループのメンバをグループの親とは別のレイヤに割り当てることができます。

パーティクル システムのトランスレーションとレンダリング

ソフトウェア レンダリングのパーティクル タイプは、mental ray によるレンダリング用のすべてのプラットフォームでサポートされています。パーティクルをレンダーするには、新しい Maya ベースのシェーダ ライブラリが必要です。これも、すべてのプラットフォームで使用可能です。パーティクル データは、.mi ファイルに書き出すこともできます。これらのファイルは、Maya を使用していたマシンとバイトの並び順(ビッグ エンディアン/リトル エンディアン)が異なるマシン上ではレンダーできません(たとえば、Linux と Windows の両方で使うことはできません)。パーティクルのトランスレーションとレンダリングには制限があり、大量のパーティクルは処理できない可能性があります。ライト リンクはパーティクルではサポートされていません。ただし、ソフトウェア パーティクルとパーティクルのインスタンス化はシームレスに連携するはずです。

mental ray for Maya のレンダー(Render)メニューをティアオフすると Maya がクラッシュする

Maya の レンダー(Render)メニューをティアオフしてから mental ray for Maya プラグインをロードし、mental ray for Maya のレンダー メニューをティアオフすると、Maya がクラッシュする場合があります。

解決方法

mental ray for Maya をロードする前に、メニューを閉じてください。

ファイアウォールが動作していると、Maya がクラッシュするかロードされない

ファイウォール ソフトウェアにより、コマンドのポートが遮断される場合があります。mental ray for Maya をロードする際に、ファイアウォールから「Maya アプリケーションにインターネット: IP アドレス 127.0.0.1 ポート 1333 へのアクセスを許可するか」という問い合わせがあります。ここで「いいえ」を選択すると、警告やエラーのメッセージは表示されず、Maya は即座に終了します。「はい」を選択すると、mental ray for Maya が通常どおりに起動します。

解決方法

ファイアウォール ソフトウェアを使用している場合は、Maya に対してポート 1333 での通信を許可しなければ、mental ray for Maya が正しく動作しません。

mental ray for Maya での 3D ペイントに関する問題

3D ペイントでテクスチャをペイントする際に、mental ray for Maya で新しいペイント ストロークが自動では検出されません。

解決方法

mental ray でレンダーする前に、ペイントしたテクスチャまたはシーン全体を保存しておき、すべてのストロークが正しくレンダーされるようにします。

mental ray images フォルダ

既定では、mental ray のバッチ レンダーされたイメージは、プロジェクトの images フォルダに保存されます。

マルチコアのマシンで複数レンダーを実行すると、レンダリングの処理速度が予想より遅くなります。

マルチコアのマシンで複数レンダーを実行すると、メモリの消費量が非常に多くなります。一方、マルチコアのマシンで単一のレンダーを実行すると、メモリが共有されるため、レンダリングの処理速度が改善します。