ゲーム開発者向け最新技術論文の解説・実装講座 レンダリストのためのカメラ(光学)理論とポストエフェクト 五反田 義治 株式会社トライエース 研究開発部
目次 はじめに HDRとレンズに関する基礎知識 フィルムに関する基礎知識 その他の知識 実装 デモ
なぜポストエフェクトか? カメラによって発生するエフェクトの再現 特にレンズによって発生するエフェクトは物理的に再現するのは負荷が高い レイトレーシング 事前計算+GPUでのレンダリング(PRT的手法) フィルムで起こるエフェクトはポストエフェクト的 現行ハードウェアでの現実的な実装解
HDRレンダリングの有効利用 HDRレンダリングが有効活用されていない 負荷の高い高精度バックバッファへのレンダリング その割にはブルームとトーンマップだけ? せっかくなのでもっと有効利用したい せっかくHDRレンダリングしているのに フォーカスブラー(DOF)やモーションブラーの処理がLDRバッファ(トーマップ後)で行われている
ポストエフェクトの重要性 ポストエフェクトあり ポストエフェクトなし
物理的なエフェクト 物理的なエフェクトがどこで起きているのか考える 受光体(フィルムなど)に光が当たるまではHDR領域である 受光体に光が当たったあとはLDR領域と見なせる フィルムなどはそれでもRGB8bitよりは高精度
なぜ物理的? 現実的でないエフェクト 物理的に不可能な撮影状態になり、ユーザーが違和感を感じる 広角レンズや遠いピントなのに深い被写界深度 暗い場所を撮影しているのに絞りが絞られている 長時間露光? モーションブラーは? 暗い場所なのにノイズやグレインがない 手ぶれ、モーションブラー必要では? 動画ではシャッタースピードを長くできない 非常に明るい場所に回折現象がおきていない などなど…
物理的なエフェクト処理の前に レンダリングはリニア空間で行う リニアでないと物理的に正しい処理が難しい 色空間を意識する テクスチャがsRGBならリニアに変換 理想はスペクトルレンダリング? 最後にガンマ補正を行う ディスプレイにあわせたガンマ補正
エフェクトの種類 レンズによって起こる(光学的な)エフェクト フォーカスブラー モーションブラー(カメラ座標系におけるオブジェクトの移動) グレア、スター(光の回折現象) レンズゴースト レンズフレア(ハレーション) ザイデル収差(球面収差、コマ収差、非点収差、像面歪曲、歪曲) 色収差(軸上色収差、倍率色収差) ケラレ(フォーカスブラーの蝕、周辺減光) コサイン4乗則(周辺減光) レンズ内のチリ
エフェクトの種類 フィルム(CCD)によって起こるエフェクト トーンマップ系 スミア(デジタル) フィルム、CCDの特性 グレイン、ノイズ 色温度 スミア(デジタル)
エフェクトの種類 その他のエフェクト フィルター(カメラ) カメラで発生するもの その他、考慮すべきもの クロスフィルター PLフィルター など カメラで発生するもの オートフォーカス 自動露出 カメラ内のチリ その他、考慮すべきもの ガンマ補正 ディザ
エフェクトのサンプル いくつかの代表的なエフェクトの画像
目次 はじめに HDRとレンズに関する基礎知識 フィルムに関する基礎知識 その他の知識 実装 デモ
HDRとレンズの基礎知識 HDRとレンズ編 川瀬さん
目次 はじめに HDRとレンズに関する基礎知識 フィルムに関する基礎知識 その他の知識 実装 デモ
トーンマップ なぜフィルムなど実際に存在する物理のシミュレーションをするのか? Reinhardなどのメジャーなトーンマップの式が存在する これらのトーンマップはHDRをLDRとして情報の圧縮することが目的で決してアーティスティックではない よりアーティスティックな表現としてのトーンマップが欲しい デザイナーがトーンカーブやカラーマトリクスで調整するのも一つの手段 フィルムシミュレーションは楽にそれっぽい絵を出すための方法の一つ すでにフィルムやデジタルカメラというものは人々が見慣れている
受光体の種類 フィルム 銀塩カメラ、映画撮影などで使用 独特の質感、グレイン アナログな部分での制限 特性上、明るい部分と暗い部分のコントラストが圧縮される しかし逆に言えば、簡単に飽和(クランプ)しないでハイライトとローライトに質感が残る この特性を生かすと、ハイコントラストでも簡単に飽和しない映像にすることができる
受光体の種類 CCD, CMOS デジタルカメラ、ハイビジョンカメラ 質感はソフトウェアに依存 ノイズ フィルムに比べ暗部に強い 一般的な特性(ソフトウェア処理)ではフィルムに比べて変化がなだらか ローライトでは特にフィルムと異なる ハイライト側もフィルムよりなだらか
この曲線の傾きがガンマと呼ばれ、このフィルムのコントラストが分かる フィルムの特性グラフ 特性曲線 ある明るさ(ルクス秒)の光に対してフィルム上にどのくらいの濃度で感光するかを表した対数グラフ カラーではRGB モノクロでは一本のみ ネガとポジでは傾きが逆転 フィルムの基本的な性質 この曲線の傾きがガンマと呼ばれ、このフィルムのコントラストが分かる 肩 脚
フィルムの特性グラフ 分光感度曲線 波長における、各感色層の感度を表した対数グラフ ある一定の濃度の時のグラフなので、実際にはこのグラフが濃度ごとにあるのが理想 一つの感色層は単純に一つの波長に反応するわけではない 例えばシアンの感色層あかは赤だけに反応するわけではなく、緑や青にも多少反応する つまり最終的には非常に強い光はすべて白くなることを示している 色の鮮やかさや肌色のコントロールにわざとある程度オーバーラップさせている
フィルムの特性グラフ 分光濃度曲線 フィルムを現像した状態で、それぞれの感色層が、ある波長においてどのくらいの色素を吸収するかを表したグラフ ある特定の濃度(中性濃度1.0)になる吸収量を示している またグラフによっては視覚中性濃度(波長に対して複数の感色層の濃度の視覚的な合計濃度)や最低濃度(全く感光していない場合での濃度)が含まれていることがある ネガには元々各色の不要な感光特性を補正するための色素が入っている(オレンジマスク) 特性曲線と対応している
フィルムの特性グラフ MTF曲線(Modulation Transfer Function) ある空間周波数に対してのコントラストを示すグラフ フィルム粒状度や乳化剤の光の拡散度などで決まる レンズのMTF曲線と意味的には似たようなもの フィルムのシャープネスを表す ピクセル単位のトーンマップではうまく処理できない
フィルムの特性グラフ 拡散RMS粒状度曲線 ある濃度におけるフィルムの粒状性を示すグラフ RMS粒状度 = Sigma D×1000 グレインに影響する RMS粒状度 = Sigma D×1000
フィルムの特徴 リバーサルフィルム(ポジフィルム) そのまま見ることが出来るフィルム ネガに比べてラチチュードが狭い 印刷によく使っていた 露出にシビア スチルでは露出に難しいシーンはAEB(Auto Exposure Bracket) を使って露出ミスを防いだりする 印刷によく使っていた 主にプロフェッショナル用途 映画館で投影するときのフィルム ポジの写真をはる
フィルムの特徴 ネガフィルム ポジに比べラチチュードが広い そのままだと色が反転している ある程度露出に寛容 プリント時での補正が容易 ポジより扱いやすい そのままだと色が反転している プリントする必要がある ポジ(リバーサル)へのデュープ オレンジマスク プリント時やポジへのデュープ時に除去される ネガの写真を貼る
CCD, CMOSの特徴 デジタル的な特性 デバイス的にはリニアな特性 フィルム的なグレインではない フィルムに比べると低照度に強い データとしてはソフトウェアに依存する フィルム的なグレインではない ノイズ 暗電流 熱雑音 アンプノイズ フィルムに比べると低照度に強い
あるデジタルカメラの特性(タングステン光環境下) CCD, CMOSの特徴 特性曲線がだいぶフィルムと異なる ソフトウェアでこのような味付けをしている カーブの変化がフィルム比べてなだらか ハイライトのつぶれ方がソフトな感じになる ローライトはフィルムのように潰れない あるデジタルカメラの特性(タングステン光環境下)
フィルムを見るためには リバーサルフィルム プロジェクタ(投影機)でスクリーンに上映 撮影(感光) 現像 動画(映画)の場合 撮影(感光) 現像 スチルの場合 ライトボックスやプロジェクタで直接見る リバーサルプリントで紙上で見る フィルムスキャナでデジタル化するパターンもある
フィルムを見るためには ネガフィルム(スチル) 撮影(感光) 現像 ネガビューアーを使う(あまり利用しない) プリントして紙上で見る フィルムスキャナでデジタル化するパターンもある
フィルムを見るためには ネガフィルム(映画) 古いスタイル 撮影(感光) 現像 オプティカル合成や編集を行ったり、フィルムを加工する インターミディエイトフィルムを作成 ここからはリバーサルフィルムになる マスターフィルム(プリントフィルム)を作成 上演用フィルムを作成 2次コピーを作る(映画館による)
フィルムを見るためには ネガフィルム(映画) 最近のスタイル 撮影(感光) 現像 スキャナでデジタル化 デジタル処理(VFX, Composite, 編集, カラコレ) ここからはデジタルデータになる DI (Digital Intermediate) 上演用フィルムを作成 ここからはリバーサルフィルムになる 2次コピーを作る(映画館による)
フィルムを見るためには ネガフィルム(映画) 最新のスタイル 撮影(感光) 現像 スキャナでデジタル化 デジタル処理(VFX, Composite, 編集, カラコレ) ここからはデジタルデータになる DI (Digital Intermediate) ディストリビューション(HDD) デジタルシネマで上演
フィルムのトーンマップ フィルムの特性を再現 特性曲線 分光感度曲線または分光濃度曲線 ネガの場合はネガポジ処理が必要 情報量に限りがある ある程度の割り切りが必要 ネガの場合はネガポジ処理が必要 オレンジマスクの除去 ネガポジ反転 フィルムの色温度、感度に注意 感度は特性曲線から分かる
フィルムのトーンマップ さらにこだわるならフィルムをどう見ているかを意識 デュープ処理 最終的に見ているもの 現像処理による違い ネガからポジ ネガからネガ ポジからポジ 複数のトーンマップを経ることになる 最終的に見ているもの プリント 印画紙の特性 ポジをプロジェクター投影 光源の色温度 現像処理による違い 増感、減感 現像液
フィルムの特徴再現 MTF曲線やRMS粒状度はトーンマップでは再現できない MTF曲線はフィルタ処理 粒状度はフィルムグレインの特徴になる こだわるのであれば、実装するのもあり
フィルムの特徴の違い 違う2種類のフィルムの特性曲線を見ると、違いがあることがわかる F社リバーサルフィルムP K社リバーサルフィルムK
(明るさを近づけるためにPhotoshopで明るさ調整) トーンマップ例 Reinhard フィルムシミュレーション (明るさを近づけるためにPhotoshopで明るさ調整)
トーンマップ例 F社リバーサルフィルム F社ネガフィルム
トーンマップ例 K社リバーサルフィルム K社ネガフィルム
トーンマップ例 K社リバーサルフィルム C社デジタルカメラ
トーンマップ比較 Reinhard F社リバーサルフィルム F社ネガフィルム K社リバーサルフィルム K社ネガフィルム C社デジタルカメラ
フィルムグレイン フィルムグレインはデジタルノイズとは異なる フィルムグレインは元々フィルムが持っている粒子の形が見えている 一つの粒子が光に対して感光する つまり感光することによって初めて粒子が見える イメージとしてはレイトレースによるレイの分散パターンがフィルムグレイン ポストエフェクトと処理する場合 バックバッファがフィルムに入射する光を表している 入射した光に対してグレインパターンで各粒子が反応する 掛け算 フィルムの種類や感度によって粒子の大きさや配列が異なる
受光素子が一つしかない場合は、一つの素子では明るさしか計測できないため、カラーフィルタを配置し、ソフトウェアで各ピクセルの色を補完する デジタルノイズ デジタルノイズは電気的ノイズが追加される 受光素子(CCD等)が持つ特性的なノイズ 暗電流 熱雑音 アンプが持つノイズ アンプノイズ 1CCDの場合ベイヤー配列がある程度影響を与える ソフトウェアで補完されているので、そのままダイレクトには影響は与えない ベイヤー配列 受光素子が一つしかない場合は、一つの素子では明るさしか計測できないため、カラーフィルタを配置し、ソフトウェアで各ピクセルの色を補完する
デジタルノイズ 大きい要素としては熱雑音がアンプにより増幅されてノイズとして近くされる アンプのゲイン = 感度 感度が大きいほどノイズが強くなる 温度にノイズの量が依存する 太陽を撮影する 長時間露光 など 露光とノイズが対応しているわけではない 真っ暗な状態でもノイズがある フィルムグレインとは異なる 足し算 デジタルノイズパターンを感度に応じて足す デジタルのトーンマップはソフトウェア処理と考えると 素子でおきるノイズはトーンマップ前に行うべき
フィルムグレイン例 デジタルノイズ フィルムグレイン
フィルムグレイン例 デジタルノイズ(ISO100) デジタルノイズ(ISO800)
フィルムグレイン例 フィルムグレイン(ISO100) フィルムグレイン(ISO400)
色温度 フィルムには設計上の色温度がある デイライトフィルム タングステンフィルム 赤外フィルム など… 昼間の太陽光をターゲットにしたフィルム 実際の太陽の色温度は季節や場所、時間で変化する タングステンフィルム スタジオ撮影用フィルム スタジオでよく使われるタングステン光に合わせてある 赤外フィルム 赤外線での特殊撮影用フィルム 赤外線では可視光域とはレンズでの屈折率が異なるため、ピント合わせも若干ずらす必要がある など…
色温度 デジタルカメラでは自由に変更できる ホワイトバランス AWB(Auto White balance Bracket) オートで判断させることもできる アーティスティックな判断ができない場合もあるので味気ない画像が得られる場合もある AWB(Auto White balance Bracket) AEBの色温度版 複数の色温度で自動撮影する
色温度管理 正しい色を出すためには色温度を考慮してレンダリングパイプを設計する必要がある ライトの白の色温度は? デイライトフィルムを考慮するなら白を5,500Kに設定すべき モニタで白く見える色温度なら6,500K とにかく光源で白を設定した時の色温度の基準を決める
色温度管理 ライトの色温度が決定したらフィルムの色温度を考える フィルムの特性にすでに含まれている 最後にモニタの色温度に合わせる デイライトフィルム 5,000K~5,500K タングステンフィルム 3,200K~3,400K フィルムの特性にすでに含まれている 特性どおりに正しくトーンマップすればよい 最後にモニタの色温度に合わせる NTSCやHDなら6,500K NTSC-Jでは9,300Kを白としている 映画館での投影 キセノンランプ(5,500K)
ガンマ補正 リニアでレンダリングした結果を最終的にモニタガンマに変換する必要がある sRGBは2.2 厳密には異なる ISO IEC61966-2-1 Amendment 1 Part 2-1 Colour management – Default RGB colour space - sRGB セットアップレベル(黒レベル)がNTSC-JとNTSCでは異なる NTSC : 7.5IRE NTSC-J : 0IRE
ディザ処理 ガンマ補正と同時にディザ処理を行うと8bit変換における階調ロスを抑えることができる HDRでは8bit以上の情報を持っている(はず) シェーダ内ではfp32 ディザリングによりノイズ感が出てしまう弊害もある ディスプレイの画像処理と相性が悪い場合もある DeepColorの場合は8bit以上の情報を送ることができる アナログ伝送(D端子など)の場合はディスプレイのA/Dコンバータのビット数に依存する
はじめに HDRとレンズに関する基礎知識 フィルムに関する基礎知識 その他の知識 実装 デモ
自動露出 スチルカメラ、民生用ビデオカメラには自動露出(Auto Exposure)が付いている 実際の被写体はカメラで記録できる光の強さの範囲(ラチチュード)より広い範囲を持っている 自然に見えるように露出を調整する必要がある カメラが判断した適正露出に自動的に調整する(AE) プロの動画撮影(映画、ドラマなど)では使われない 基本的にはマニュアル露出 演出的な理由で使う場合はある(ホームビデオ撮影) ゲームのプレイアブル部分では必要な場合もある デザイナーがシーンを本物に近い光量でデザインすると一つの露出ではオーバーになったり、アンダーになったりして対応しきれない
自動露出の流れ 露出するにはまず測光が必要 ここではTTL測光を実装することを想定してみる TTL測光(Through The Lens) カメラに内臓されている露出計 レンズを通ってきた光を測定する 反射型露出計 露出計 単体の露出計 反射型と入射型 イメージベース すでに画像化されたデータを下に露出が適正かどうか判断する ここではTTL測光を実装することを想定してみる
TTL測光 レンズを通ってきた光を測定する レンズで起こるすべての光学現象込みで測定される トーンマップ前のバッファで処理するイメージ 反射光式測光 物体から反射した光を測定する そのため反射した表面は18%グレーと仮定する 極端に反射率の高い、または低いものに対しては正しく測光できない
TTL測光範囲 TTL測光では測光の範囲を選択することができる スポット測光 中央重点測光 評価測光(プログラム測光) 露出補正 画面の中央の一部(3%程度)のみを測光する 中央重点測光 中央に重みをつけて全体を測光する 評価測光(プログラム測光) 画面をいくつかの部分に分解し、複雑なアルゴリズムで適正な露出を判断する カメラメーカーの独自技術 選択しているAFフレームに連動する ヒストグラムを利用する 極端に明るく小さい被写体の影響度を排除する 露出補正 必ずしも測光した結果が正しいとは限らないので、カメラが測光した結果の露出に対してマニュアルで補正することができる 測光結果そのものが誤っている(反射率の問題) カメラマンが意図した露出と異なる
露出 測光した結果を元にEV (Exposure Value)を決定し、露出を行う 実際に明るさをコントロール 絞り シャッタースピード レンズによって異なる シャッタースピード スチルか動画か? カメラの性能 デジタルカメラであれば感度も瞬時にコントロール可能(ゲインアップ) NDフィルタでも減光可能 ビデオでは、実際にその露出になるまでラグがある 明順応と暗順応の再現 人間の眼は明るいところには暗いところに比べて速く順応する
露出モード カメラには露出モードが搭載されている プログラムモード 絞り優先モード シャッタースピード優先モード マニュアルモード カメラがシャッタースピードも絞りも決定する 感度もコントロールすることもある 絞り優先モード 絞りは撮影者が決定し、シャッタースピードをカメラが決定する 被写界深度をコントロールしたい シャッタースピード優先モード シャッタースピードを撮影者が決定し、絞りはカメラがコントロールする モーションブラーの量をコントロールしたい マニュアルモード すべて撮影者が決定する 測光結果は参考として表示される
オートフォーカス ピントをカメラが自動的に調整する 自動露出と同じようにプロフェッショナルな撮影ではあまり使われない 家庭用ビデオのような演出には利用可能 カットシーンの作成ツールにはあると便利? ピントあわせは写実的な演出には重要 ピント送り ピンボケによる奥行き感 ピント位置による画角の変化
カメラでのフォーカス フォーカスをあわせる方法 アクティブ方式 パッシブ方式 光などを利用して実際にレーダー的に距離を測定する方法 遠い被写体でうまくいかない場合がある パッシブ方式 一般的な手法 センサーを利用してコントラスト差を用いてフォーカスを見る コントラスト差のない部分にピントが合いづらい 暗い場所では補助光を利用するものもある
フォーカス位置 カメラではピントを判断するセンサーが複数搭載されていることがある カメラが複数のセンサーを利用してピントを自動的に判断 一番手前のピント 顔を自動的に判断してピントを合わせる マニュアルでピントを合わせたい位置を選択
はじめに HDRとレンズに関する基礎知識 フィルムに関する基礎知識 その他の知識 実装 デモ
フォーカスブラーの実装 基本的なフォーカスブラー 物理的に正しいボケの半径 機械的な絞りをシミュレーション 結像方程式に基づくボケ半径 スキャッターベースが理想 ギャザーベースでもそれなりにはリアル エッジの問題は依然残る レイヤーでごまかす 疑似スキャッターベース
フォーカスブラーの実装 よりリアルなフォーカスブラー さらに現象を追加する Vignettingによるボケの口径蝕(eclipse) ボケに現れる色収差 レンズ内のダスト
口径蝕(eclipse) レンズの設計上の制限でVignettingが発生 特定の条件下でボケに食ができる 実際には複雑な現象
Vignettingは複雑 本物のレンズの場合ケラレる場所は一定ではない
口径蝕の実装 レンズの完全なシミュレーションは難しい レイトレーシングが必要 正しいレンズ設計データが必要 負荷が高すぎる 事前計算でテーブル化 なんらかの圧縮が必要 次元数が高い 正しいレンズ設計データが必要 ズームやピント、絞りなども正しくシミュレーションしなければいけない
口径蝕の実装 レンズのデータを近似する レンズデータベースを用意 Vignettingはレンズの設計や光学的限界によっておこるものなので、ある程度物理的に正しいレンズによる画面が作られないと不自然な絵になる Vignettingが起こりやすいレンズとそうでないレンズがある 起こりやすいレンズでも起こりやすい条件とそうでない条件がある
近似されたデータ どのようなデータを利用するか Vignettingに影響するパラメータ 基本パラメータ 動的パラメータ 設計パラメータ F値範囲 焦点距離範囲 最低焦点距離 動的パラメータ ピント位置、ズーム 焦点距離に影響する F値 設計パラメータ 完全には持てないので近似 Vignettingを起こしやすいと推測される鏡筒の位置と半径 絞りの位置と半径 バックフォーカス(フランジバック)に注意
Vignettingを起こす投影された鏡筒 口径蝕シェーダ Vignettingを起こす投影された鏡筒 レンズデータベースをもとにシェーダで処理 実際のレイトレースは負荷が高い 光跡は絞りとフォーカス位置を結ぶ直線で近似 あとは現在の設定による絞り開口部と鏡筒開口部のコリジョンを取るだけ 蝕を起こした最終的なボケ 本来のボケ(相対的な絞りの大きさ)
周辺減光 Vignettingは周辺減光もひきおこす ボケが欠けた分はピントの合っている位置では周辺減光になる ピントが合っているということはボケが一点に集まっているだけ 口径蝕シェーダと同じデータベースを下に口径蝕の積分を計算 二つの円の重なった部分の面積を求めるだけ 結果を利用して周辺減光処理をシェーダで行う
コサイン4乗則 ボケや周辺減光にはコサイン4乗則が適用される 光学上の理由で、レンズでは画角に応じて光が通る量がコサインの4乗に応じて減る 実際のレンズでは、レンズの外側の開口率を上げるように工夫したりして、実際には4乗まではいかない場合が多い 口径蝕と異なり、絞ることにより減光量が改善しない 常にこの現象は起きている 特に広角レンズで顕著に現れる
コサイン4乗則 コサイン4乗則だけのスクリーンショットを追加 絞った時の減光率(ほぼコサイン4乗則のみによる減光) 絞り解放の時の減光率(コサイン4乗則と口径蝕による減光) ある35mmカメラ用レンズの減光率のグラフ(f=25mm)
デモ
謝辞
ありがとうございました 以下のページでスライドはダウンロードできます http://research.tri-ace.com