Q100384:ExrCombineを介し Katana チャネル/ AOVをマージすると、レンダリングが失敗します

フォローする
症状

Katana 1つのマルチチャネルEXRファイルにマージしようとするKatanaがEXRイメージをマージするために使用するツールExrCombineに影響を与えるOpenEXRの既知の制限により、レンダリングの失敗とエラーが発生する場合があります。

エラーは次のようになります。

The render failing might even result in a Katana crash with the following error in the stack trace:

 

原因

異なるデータウィンドウで画像をマージしようとすると、ExrCombineユーティリティが失敗します。

これは、マージされるEXRイメージのデータウィンドウヘッダー属性が一致しない場合、特に最初にマージされたAOVのピクセルデータウィンドウがその後にマージされたAOVよりも小さい場合にエラーが発生することを意味します。

これを解決するには、次のトラブルシューティング手順を実行してみてください。

  • 「プライマリ」レンダリング出力が出力タイプ「raw」に設定されていることを確認するか、マージされた出力に「プライマリ」パスを含めないでください
  • マージされるすべてのAOVが同じデータウィンドウ属性値を持っていることを確認してください
  • 「raw」出力タイプとexrOptimize設定を使用して、レンダリング後のEXR最適化をバイパスします
  • Katanaはタイル化された出力をマージできないため、レンダリングされたEXRがタイル化されていないことを確認します

これらの各提案の詳細については、以下をお読みください。

デフォルトでは、 Katanaは、画像データを操作するときに4つのチャネル(RGBA)のみを読み取ってレンダリングできます。ただし、ユーザーはExrCombineと呼ばれるKatanaユーティリティを介して、複数の画像をマージしてマルチチャネルEXRを作成できます。

ExrCombineユーティリティは元々、画像を同じサイズのピクセルデータウィンドウとマージするために作成されました。これは、OpenEXRには複数のチャネルを1つのEXRファイルに書き込む場合の制限があるためです。

画像のピクセルデータウィンドウのサイズは、データウィンドウEXRヘッダ属性に格納され、EXRファイルは、唯一のような属性を含むことができます。これは、すべてのチャネル/ AOVが同じデータウィンドウ属性値を共有する必要があり、マージされたEXR内で独自の値を保持できないことを意味します。

したがって、 Katanaは、異なるピクセルデータウィンドウサイズの画像のマージをサポートしていません。

選択したdataWindow属性値に、マージされるすべてのAOVのデータウィンドウサイズが含まれていないKatanaがクラッシュする可能性があります。

OpenEXRが同じファイル内の複数のデータウィンドウヘッダー属性の拡張サポートを提供すると、ExrCombine機能を改善するKatanaに対する既存の機能要求があります。これは次のように記録されます: ID 75636-ExrCombine:異なるピクセルデータウィンドウを持つ画像のサポートが向上

これに関する詳細と、マルチチャネルの設定に応じて、マージに関する問題を解決できると思われる上記の回避策の詳細については、以下をお読みください。


さらに詳しい情報

EXRデータウィンドウ

各OpenEXRファイルは、ファイルのヘッダーにある属性のリストを通じて記述されます。サンプルの.exrファイルで「exrinfo」のようなコマンドを実行すると、次のようにこれらの属性の値が出力されます。

> exrinfo image.exr

image.exr:

ファイル形式バージョン:2、フラグ0x0
チャネル(タイプchlist):
B、16ビット浮動小数点、サンプリング1 1
G、16ビット浮動小数点、サンプリング1 1
R、16ビット浮動小数点、サンプリング1 1
圧縮(タイプ圧縮):piz
データウィンドウ(タイプbox2i):( 0 0)-(511 511
displayWindow(タイプbox2i):( 135 125)-(377 409)
lineOrder(タイプlineOrder):yを増やします
pixelAspectRatio(タイプfloat):1
screenWindowCenter(タイプv2f):( 0 0)
screenWindowWidth(タイプfloat):1

この場合のdataWindow属性の値は(0 0)-(511 511)であり、画像ファイルに512x512ピクセルが保存されていることを意味します。

displayWindowはそれを見たときに表示される画像の領域を記述する。この領域は、OpenEXRファイルにデータが存在する領域よりも大きい場合と小さい場合があります。

で「マージ」出力用のデータウィンドウの定義Katana

タイプの出力をレンダリングする「マージ」、ドロップダウンパラメータRenderOutputDefineノードのmergeOutputsにおける最初の選択された入力のウィンドウの属性値を使用して異なるデータ・ウィンドウの画像を組み合わせる場合、最終的な出力のウィンドウとして使用されます

pasted_image_0.png

RenderOutputDefineノードの例のこのスクリーンショットでは、 mergeOutputsパラメーターの最初に選択された入力は「プライマリ」出力です。これは、ExrCombineユーティリティによって作成された最終的にマージされたEXRに対して、「primary」パスのdataWindowヘッダー属性が使用されることを意味します。

このデータウィンドウヘッダー属性が、マージする予定の残りのレンダー出力のデータウィンドウよりも小さい場合、ExrCombineマージプロセスが失敗して、上記のレンダーエラーがトリガーされる可能性があります。

回避策

この問題の解決に役立つ可能性のあるいくつかのオプションを試すことができます。

「プライマリ」レンダリング出力が出力タイプ「raw」に設定されていることを確認するか、マージされた出力に「プライマリ」パスを含めないでください

注: Katanaは、専用のRenderOutputDefineノードを介して作成を要求するかどうかに関係なく、デフォルトで常に「プライマリ」パスを生成します。

「プライマリ」パスは最初のエントリとしてmergeOutputsリストに追加され、追加のチャネルはすべてそのリストにマージされます。 「プライマリ」パスデータウィンドウに、マージするすべてのAOVの全体的なデータウィンドウサイズが含まれていない場合、マージ操作は失敗します。

これは、「プライマリ」パスにRenderOutputDefineノードを追加し、typeパラメータを「raw」に設定することで解決できる場合があります

プライマリパスが必要ない場合は、RenderOutputDefineノードのmergeOutputsリストから明示的に無効にすることができます。リストの2番目のパスのデータウィンドウは、マージされたEXRに使用されます。上記のスクリーンショットの例では、「primary」が選択解除された場合に使用されるデータウィンドウ値は、「diffuse」パスから取得されます。

マージされるすべてのAOVが同じデータウィンドウ属性値を持っていることを確認してください。

マージされるすべてのAOVに同じサイズのデータウィンドウがある場合、マージ操作は成功するはずです。または、最初にマージされる出力には、他のすべての出力を包含するのに十分な大きさのデータウィンドウ属性値が必要です。

マージプロセスでAOVの順序を定義するときにこれを覚えておくと、幅の広いデータウィンドウを小さなデータウィンドウに収めようとすることによるExrCombineのレンダリングの失敗を回避できます。

RenderOutputDefineノードの設定を使用してAOVのデータウィンドウサイズに影響を与える2つの方法を以下に説明します。

「raw」出力タイプとexrOptimize設定を使用して、レンダリング後のEXR最適化をバイパスします

デフォルトでは、 Katanaレンダリングされたカラー出力を後処理します。この内部2D画像処理では、EXRヘッダー属性は保持されませんが、関連する属性が元の画像から後処理された画像にコピーされます。

これらの属性は、RenderOutputDefineノードのconvertSettingsパラメーターを介して定義されます。これらの設定の詳細については、 KatanaオンラインヘルプのRenderOutputDefineノードリファレンスを参照してください。

exrOptimizeパラメーターを「No」に設定します

convertSettings.exrOptimizeパラメータは、主にエッジの周りの画素データなしの領域を除去することにより、画像データウィンドウと「シュリンクラップ」画像を最適化するために使用されます。

exrOptimizeCompare.png

exrOptimizeのオンとオフでレンダリングされたEXR画像とメタデータの比較( Nuke

exrOptimizeパラメータを「No」に設定すると、画像データウィンドウ全体がレンダリングされ、最適化手順がスキップされ、元のデータウィンドウが強制的に使用されます。これにより、レンダリングされたAOV内の異なるデータウィンドウ属性値が回避され、それらを正常にマージできるようになります。

pasted_image_0__1_.png

exrOptimize操作は、タイル内の画像を処理するプログラムのメモリ使用量とパフォーマンスを向上させることを目的としているため、画像の処理中のパフォーマンスがサイズによってはわずかに影響を受ける場合があります。

レンダリング出力のタイプを「raw」に設定します

RenderOutputDefineノードのタイプを「raw」に設定すると、レンダラーから受信した画像をレンダリングし、後処理ステップをバイパスできます。 Katanaは、出力に対して色変換や画像最適化を実行しません。これにより、レンダラーによって定義されたヘッダー属性を使用してファイルが書き込まれるようになり、 Katanaの内部画像処理によってデータウィンドウ属性が変更されるのを防ぎます。

pasted_image_0__2_.png

Katanaはタイル化された出力をマージできないため、レンダリングされたEXRがタイル化されていないことを確認します

これは、Arnoldなどの一部のレンダラーのデフォルト設定です。 ArnoldOutputChannelDefineなどのレンダラー固有の出力定義ノードを確認し、 driverParameters.tiled設定が無効になっていることを確認してください。

助けを得る

これらの提案のいずれでも問題が解決しない場合は、サポートリクエストを送信し、発生している問題とこれまでに実行したトラブルシューティング手順について詳しくお知らせください。

サポートリクエストを開く方法の詳細については、次の記事を参照してください。Q100064:サポートチケットを発行する方法

私たちはそれを聞いて申し訳ございません

理由をお聞かせください