ProEXR 1.8

April 5, 2013
ProEXRの1.8がリリースされました。今回のアップデートではAfter EffectsでOpenEXRの読み込みを高速化するキャッシュ機能が追加され、その他マイナーなバグフィックスや最適などが行われました。

fnord software blog - ProEXR 1.8
http://fnordware.blogspot.jp/2013/04/proexr-18.html

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

キャッシュについての詳しい説明は別の記事にまとめられています。

How to read an OpenEXR file quickly
http://fnordware.blogspot.jp/2013/04/how-to-read-openexr-file-quickly.html

OepnEXRのキャッシュ機能を有効にするには、OpenEXRフッテージを選択して「ファイル」メニュー(またはフッテージアイテムで右クリックしてコンテキストメニュー)から「フッテージの変換」→「メイン」を実行し、「メインオプション」パネル下にある「詳細オプション」をクリックします。

proexr18optiondialog.jpg
キャッシュを有効にすることでEXRのすべてのチャンネルがメモリに読み込まれ、速度が大幅にアップするとのこと。ただしそれと引き換えにメモリを消費し、1920x1080、47チャンネルのEXRファイルを読み込んだ場合、1フレームあたり198MB必要になったとのこと。「 最近はRAM安いから5倍速くなると思えばいいよねッ」って言ってますけど。

ダイアログのCache Sizeを大きくすると、より多くのキャッシュを作成します。0(ゼロ)に設定するとキャッシュが無効化します。このキャッシュはプロジェクトごとではなく、コンピュータごとの設定になります。キャッシュは30秒アクセスされないと消去されます(環境設定ファイルを編集することで調整可能とのこと)。


ブログにはAfter EffectsでのEXRが遅くなる理由についても書かれています。ざっと抄訳というか意訳すると...;

OpenEXRファイルはRGB(A)の以外のチャンネルを持つ事ができて、それらはAfter EffectsではEXtractoRとIDentifier プラグインでアクセスが可能。

これらのチェンネルにアクセスする場合、それが4チャンネルだろうと50チャンネルだろうと、それほど読み込み速度は変わらない。ボトルネックになっているのは、チャンネル数ではなくてOpenEXRの構造によるもの。これらの追加チャンネルをソートする部分で時間がかかる。

ちなみにスキャンライン方式でデータを格納しているOpenEXRよりもブロックのほうが時間がかかる。

Nukeはマルチチャンネルアーキテクチャなので、Readノードでこれらのチャンネルを一発で読み込んでしまうけど、AEの場合はそれぞれのチャンネルに対してEXtractoRのインスタンスがそれぞれ起動して読み込んでる。つまりその回数だけソートしてるってことで、只でさえ遅いソートを何回も繰り返すからすごく遅くなる。


使ってみた感想としては、確かに速くなったけどストレスを解消してくれるほどは速くなっていません。Nukeのような使用感を期待すると駄目かも。

あとメモリの食いっぷりが半端ないです。そもそもOpenEXR使わなくてもAfter Effects CS6はとんでもない容量のメモリを食ってしまいます。それにこのキャッシュが加わるとあっという間にメモリ使用量が45GBとか行っちゃってます。Nukeだと多少複雑なことをしても12GBくらいなんで、After Effectsのメモリ使用もう少し効率化してもらえないかなと思ってますけど。


[関連記事]
After EffectsでOpenEXR - DataWindowとDisplayWindow
ProEXR 1.6
DPX 10bitは重いのか?
CompositeでマルチレイヤーのOpenEXR