LoginSignup
7
9

More than 5 years have passed since last update.

3DCGに After Effects でボケ表現を加える方法

Last updated at Posted at 2017-09-30

はじめに

ボケ表現は、注視して欲しい対象を際立たせたり、自然な印象を与えるために利用されています。

Bokeh.png

本投稿では、3DCGの動画にボケ表現を加えるための方法について説明します。

環境

  • Autodesk Maya 2017 Update 5
  • Arnold 5.0.1.0 (MtoA 2.0.1)
  • AfterEffects CC 2017

ボケを加える方法

ボケ表現を加える方法として、以下の方法が挙げられます。

  • Arnold でのレンダリング
  • AfterEffects でのコンポジット

レンダリングでのボケ表現

Arnold レンダラーでのボケ表現について、SolidAngle のマニュアルに記載されています。レンダラー内蔵の機能なので、高品位なボケ表現を得ることができます。

Shot03.0001.jpeg

しかし、この方法には以下のような問題があります。

  • レンダリングに時間がかかる
  • 編集時の微調整ができない

レンダリングに時間がかかる

ボケ表現を有効にすると、レンダリング時間が長くなります。上記の例の画像を出力するのにかかった時間を比較すると以下になります。

ボケ表現 あり なし
レンダリング時間 15分14秒 10分43秒

静止画を作る場合であればそれほど問題になりませんが、動画となると枚数が多いので、レンダリングにかかるコストが跳ね上がります。

編集時の微調整ができない

レンダリング時にボケ表現を加えると、レンダリングの後工程である編集工程で、修正が加えられないという問題が発生します。
ショットの繋がった映像を見て、ボケ具合の調整を行いたいといったことはよくあります。レンダリング時にボケを加えてしまうと、そのような修正を行うにはレンダリングし直すしか方法がなくなります。

コンポジットでのボケ表現

レンダリング時にボケ表現を加える方法について問題があることが分かりました。この解決するために、コンポジットの工程でボケ処理を加えます。

3d_production_timelines.jpg

上の図は Upcoming VFX Movies から抜粋したものですが、3DCG の作業工程を分かりやすく図示しています。ボケ表現を適用する工程は、 PRODUCTION の最終工程ではなく、POST-PRODUCTION の工程で行うということです。

コンポジットでのボケ表現は、色情報と深度情報を合成することで実現します。Maya のレンダリング設定を色情報と深度情報を同時に書き出すように変更する必要があります。

手順

大まかに以下の手順でボケを実現します。

  1. Maya から深度情報を含む EXR ファイルを出力する
  2. AfterEffects で EXR ファイルを読み込む
  3. 深度情報から深度マップを生成する
  4. 深度マップを合成して DOF ブラーをかける

OpenEXR

今回使用する OpenEXR というファイルフォーマットについて説明します。Maya の Render Settings ウィンドウの Image format を確認してください。exr という選択肢があります。これを選択することで出力フォーマットが OpenEXR に変更されます。

Screen_Shot_2017-09-26_at_8_05_45.png

なお、Arnold レンダリングで書き出すことのできる画像フォーマットはマニュアルに記載があります。

OpenEXR には以下の特徴があります。

  • HDRI
  • マルチチャンネル

画像データは24bit で表されるのが一般的ですが、HDRI はより多くの色情報を含んでいるため、編集前の元データのフォーマットとして適しています。
マルチチャンネルとは、一つのファイルに複数の情報が含まれていることを意味しています。例えば、通常の色情報の他に深度情報やモーションベクターを一つの画像データとしてまとめることができます。

EXR ファイルの書き出し

OpenEXR 形式のファイルを出力する方法を説明します。

出力設定の変更

Maya の Render Settings ウィンドウを表示して、Common タブをクリックします。出力フォーマットを exr に変更します。

Screen_Shot_2017-09-20_at_22_03_11.png

AOV ブラウザの設定

深度情報を持った画像を出力するには、AOV(Arbitrary Output Variables) を変更する必要があります。
Render Settings ウィンドウ の AOVs タブをクリックします。AOVブラウザの設定を行います。AOVブラウザの詳細については、 SoridAngle のマニュアルを参照してください。Z パスを Active AOVs のリストに追加します。 
設定後は、アクティブな AOV のリストに Z が含まれているか確認してください。

MayaRenderingSettings-AOVs.png

Select Driver を開いてください。

Screen_Shot_2017-09-29_at_7_52_20.png

Merge AOV のチェックボックスがオンになっていることを確認します。ここにチェックが入っていないと、チャンネル毎にEXRファイルが出力されます。

Screen_Shot_2017-09-29_at_7_53_04.png

レンダリングの確認

AOV を設定すると、Arnold のプレビューを確認することができます。

Screen_Shot_2017-09-20_at_22_21_03.png

初期状態では画面は真っ白です。露出を変えることで深度情報が正しく出力していることが確認できます。

Screen_Shot_2017-09-20_at_22_21_52.png

EXR ファイルの出力

現在のフレームのみ書き出すので、File メニューの、Save Multi-Layer EXR を選択することでEXRファイルを書き出すことができます。

Screen Shot 2017-09-21 at 0.12.48.png

AfterEffects 上での操作

これまで、Maya 上で EXR ファイルを出力するところまで説明しました。ここからは、EXR ファイルを AfterEffects でマルチチャンネルのデータとして読み込み、深度情報を用いてボケ表現を加える方法を説明します。

AfterEffects に ProEXR をインストール

AfterEffects は標準では EXR のチャンネル別の読み込みはサポートしていませんが、 ProEXR という優れたプラグインが fnord software から無償で提供されているので、こちらを利用します。

ProEXR のサイトからインストーラを入手してください。インストーラを実行してから、 AfterEffects を起動してメニューを確認してください。File メニューに Create ProEXR Layer Comps が表示されていたら準備完了です。

Screen_Shot_2017-09-20_at_22_50_26.png

EXR ファイルの読み込み

Maya で出力した EXR ファイルを AfterEffects に読み込みます。フッテージの読み込み方法については AfterEffects のマニュアルの「フッテージアイテムを読み込む」の項目を確認してください。
プロジェクトパネルで、EXRのフッテージを選択した状態で、メニューの Create ProEXR Layer Comps を実行します。すると、チャンネル毎にコンポジションが生成されます。このコンポジション群の中で [Z] source という名前のものが深度情報の画像になります。

Screen Shot 2017-09-20 at 23.00.03.png

深度情報の調整

プロジェクトパネルから深度情報のコンポジションを選択してみます。真っ白な画像が表示されているだけです。これは、深度情報は色情報とは値の範囲が異なるためです。フッテージを選択して、エフェクトパネルを確認してみてください。

Screen Shot 2017-09-20 at 23.04.39.png

ExtractoR というエフェクトが既に適用されていて、Black Point が 0、 White Point が 1 という値になっています。
上のパラメータを調整することで、合成に必要な深度マップを作ることが出来ます。

ExtractoR_Parameter.png

ブラーの適用

深度マップが作成できたら、RGB 画像に DOFブラーを適用します。OpenEXR プラグインが生成したコンポジションに、各チャンネルをまとめたものがありますので、こちらを選択します。

Screen Shot 2017-09-20 at 23.22.13.png

RGBコンポジションを選択した状態で、エフェクトパネルから Camera Lens Blur を検索します。

Screen Shot 2017-09-20 at 23.26.44.png

Blur MapLayer に深度マップを割り当てます。

Screen_Shot_2017-09-20_at_23_29_25.png

これで深度マップをブラーとして適用できました。ピントのずれは各種パラメータを調整する必要があります。パラメータの詳細については、Adobe のマニュアルを参照してください。

プラグインの紹介

今回の説明に使用した Camera Lens Blur で十分なボケ表現が得られるのですが、Lenscare というプラグインを使用することで、より高品位な結果が得られます。体験版を利用できますので気軽に効果を確認することができます。

作例

今回の方法で制作した作品を Vimeo で公開しています。

Screen Shot 2017-09-26 at 9.36.19.png 8Ball on Vimeo

課題

なお、この方法でのボケ表現にはまだ欠点があります。透過している物体の裏側にまでボケ表現を適用できないことです。
シンプルなシーンであれば、レンダリング時に前景と背景のレンダーレイヤーを分けることで問題を回避できそうです。しかし、複雑なシーンでは出力するレンダーレイヤーが膨大になるため現実的ではありません。今後はこの問題を回避する方法を模索していきたいと思います。

関連記事

7
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
9