After EffectsでOpenEXR - DataWindowとDisplayWindow

February 8, 2013
以前(といっても2年前!)書いた記事で、After EffectsでOpenEXRを取り扱う際にDataWindowが正しく解釈されないという問題を紹介しました。久々にこの問題が身近に発生したので、その後のAfter EffectsとOpenEXRの状況などを含めてまとめてみたいと思います。

これまでの記事は「ProEXR」と 「AfterEffectsでOpenEXR」を参照してください。

[更新]この問題はfnord software ProEXR 1.9で解決されています。こちらの記事も参照してください。

上記の2つの記事を参照してもらうとわかるのですが、After Effects単体ではOpenEXRにDataWindowが設定されているかすら判別できません。Nukeではノードによっては作業者が意図的で行わなくても自動でクロップをしてしまうものもあるので、Nukeが出力したOpenEXRを他の人がAfter Effectsで受け取ると、「もらった画像のサイズが間違っている」ということになり、Nuke側では「こちらでは問題ない」という主張になりかねません。これはOpenEXRをPhotoshopで開いてもAfter Effects同様DataWindowでクロップされてしまった状態で開かれます。

以前の記事にも書きましたが、After Effectsで採用されているOpenEXRプラグインの開発会社fnord softwareが販売するProEXRプラグインの「Create ProEXR Layer Comps」を使用するとDisplayWindowサイズのコンポを作成し、DataWindowサイズのフッテージを配置してくれる機能があります。

ただしこの機能はDataWindowがフレーム単位でアニメーションしている場合には対応しておらず、最初のフレームのDataWindowで固定されてしまい、アニメーションを正しく再現することができません。

この問題はfnord softwareでも認識しており、それに対する対処方法がfnord softwareのブログに掲載されています。

fnord software blog - dataWindow and displayWindow in OpenEXR files
http://fnordware.blogspot.jp/2012/06/datawindow-and-displaywindow-in-openexr.html

上記の記事の方法はAfter EffectsにバンドルされるOpenEXRプラグインだけでは利用不可能で、別途ProEXRプラグイン(9,500円)を購入する必要があります。

fnord software - ProEXR
http://www.fnordware.com/ProEXR/

ProEXRを使用した対処方法は以下の通り。 (今回のサンプルにはTheFoundryのNukeのチュートリアル「NUKE Getting Started Guide Assets 」の素材を使用しています)

まずOpenEXRシーケンスをシーケンスではなく、それぞれ個別のフッテージとして読み込みます。OpenEXRシーケンス読み込み時にすべてのファイルを選択して「OpenEXRシーケンス」のチェックボタンを外して読み込みます。

proexrdiaplsywindow_1.png
次にすべてのOpenEXRフッテージのアイテム選択し、option(またはalt)キーを押しながらファイルメニューを開きます。すると「Create ProEXR Layer Comps」の代わりに「ProEXR DisplayWindow Comp」というメニューが現れます。

proexrdiaplsywindow_2.png
これを実行すると、すべてのOpenEXRフッテージをDisplayWindowサイズのコンポジション内に正しく配置し、さらにその個別のフッテージをシーケンスレイヤーにしてコンポジション内に自動で配置してくれます。

proexrdiaplsywindow_3.jpg
OpenEXRが単一のチャンネルであればこの方法で対応可能です。

複数のチャンネルが存在する場合、DataWindowはOpenEXRファイル内では1つしかないのですが、チャンネルが複数にわたるためAfter Effectsではそれぞれのレイヤーに対してチャンネルの取り出しを行わないといけません。使い勝手がいいとは言えませんのでRGBA以外のチャンネルは別ファイルで出力してAfter Effectsに読み込ませたほうがいいと思います。

先にも書いたようにOpenEXRをAfter Effectsで読み込んだだけの状態では、それがDataWindowとDisplayWIndowを別でもっているのが、サイズを間違えているのかを判断できません。ぱっと見て明らかにクロップされているものならわかりやすいのですが、端の数ピクセルだけがクロップされているような場合には注意が必要です。

この他にもRVや先日紹介したJefeCheckはDisplayWindowを正しく読み込むことができますので、それらを使いチェックし、必要であればRVの場合はRVIO、JefeCheckならレンダリングして再出力するという方法もあります。ちょっと面倒ですけど。

...というか、そもそもNukeなどでOpenEXRで出力する人に「DataWindowでクロップはしないで」と頼んでおくのが一番いいです。


[関連記事]
ProEXR 1.6
ProEXR
AfterEffectsでOpenEXR
JefeCheck
Tweak Software RV