実践！
シネマティックレンズエフェクト―光学に基づいたボケ味の表現――アナモルフィックレンズエフェクト―
シリコンスタジオ株式会社
リサーチ＆デベロプメント部
川瀬 正樹
masa@siliconstudio.co.jp

本日の内容• 光学に基づいたボケ味の表現• アナモルフィックレンズエフェクト• まとめ• リアルタイムデモ

2

光学に基づいたボケ味の表現• レンズの収差とボケ味• CEDEC 2008 案• 収差マップ改良
• 口径食
• 高速化
• 実装結果3

アナモルフィックレンズエフェクト• アナモルフィック（アナモフィック）レンズ• アナモルフィックレンズの特徴• アナモルフィックレンズフレア• 楕円ボケと周辺減光• 縦横フォーカスのズレ
• その他

4

光学に基づいたボケ味の表現
従来とは一線を画す表現のために

ボケ味（Bokeh）• 主にレンズの収差に起因するボケの風味– 収差および補正しきれない残存収差による個性• 本来は歓迎されないアーティファクト
– 写真らしさを感じさせる要因の一つ

6さまざまなボケ味

7

光学に基づいたボケ味の表現• CEDEC 2008 で提案した手法の実装• なぜシミュレーションをするのか？

8なぜシミュレーションするのか？
• ボケ画像をマッピングするだけでは駄目か？
• 実際のレンズで起こるボケ味– フォーカス前後でのボケ味の変化– 複雑な口径食の変化– 絞りの状態によるボケ形状の変化– さまざまなレンズの個性の表現

9

非常に複雑な変化がある• アーティストが設定するには限界がある• シミュレーションなら比較的容易に利用できる– アニメーションを手付けしなくても良い– 誰でもある程度のリアルさを手軽に表現できる• 厳密に正しい必要はない– 変化がそれらしく自動的に起こることが重要• もちろん正確に越したことはない

10

球面収差
Spherical aberration
CEDEC 2008 復習

球面収差• Spherical aberration• レンズ中央と周辺での焦点距離のズレ– 屈折した光線が等距離に焦点を結ばない• 球面レンズで発生– レンズの屈折面が球面であるために発生

12球面収差の原理
レンズ中央以外の実際の焦点距離

近軸理論上の焦点距離• 周辺部ほど焦点距離が近くなる
13球面収差によるボケ方
光線がもっとも収束する距離（実質的な焦点面）

近軸理論上の焦点距離
光線の収束

シャープな前ボケ（輪郭強調）

ソフトな後ボケ14

球面収差の補正• ダブレットレンズ（Doublet lens）を利用– 凸レンズと凹レンズの二枚を組み合わせる• 凹レンズでは収差が逆になることを利用して打ち消す– 完全な補正はできない• トリプレットレンズ（Triplet lens）を利用– ダブレットにさらに一枚レンズを加えて過剰な補正を打ち消す– 完全ではないがかなり良好な補正が可能• 非球面レンズ（Aspherical lens）を利用– 屈折面が球面ではない特殊なレンズ– 球面収差については完全な補正が可能

15

ダブレットによる適正補正
レンズの中央以外の焦点距離

光束がもっとも収束する距離（実質的な焦点面）• 完全な補正はできない• 補正しない場合と逆に近いボケ味（より複雑）

前ボケ– 前ボケはソフトでかつ中央部がやや暗い– 後ボケはシャープでかつ中央部がやや明るい

後ボケ
16

球面収差曲線（縦収差曲線）
レンズの周辺側レンズの中心
補正無し

ダブレット

トリプレット非球面レンズ• 中央から離れた周辺光の焦点位置のズレ– レンズへの光線の入射高を縦軸に、焦点距離を横軸にとるグラフ• 横軸の揺れ幅が小さい（縦の直線に近い）ほど良好な補正– シャープなフォーカス– フラットなボケ17球面収差の方向とボケ味
レンズの周辺側

レンズ側

レンズの反対側レンズの中心
補正無し

ダブレット

トリプレット非球面レンズ

前ボケ

後ボケ

18

球面収差の方向とボケ味
レンズの周辺側

レンズ側

レンズの反対側レンズの中心
補正無し

ダブレット

トリプレット非球面レンズ

前ボケ
後ボケ•

レンズ端（グラフ上側）の焦点距離がレンズ側（グラフ左側）にずれる場合– 前ボケがシャープ（輪郭）•

レンズ端の焦点距離がレンズと反対側（グラフ右側）にずれる場合– 後ボケがシャープ（輪郭）•

適切に補正されている場合– 前ボケの中央はやや暗くなる– 後ボケの中央はやや明るくなる
19球面収差の補正とボケ味• 高度な補正ほどシャープなフォーカス– ピントがくっきりと合う• 一般に高級なレンズの方がフラットなボケ

20

軸上色収差Axial chromatic aberration
CEDEC 2008 復習

軸上色収差• Axial chromatic aberration– または Longitudinal chromatic aberration• 光の波長による焦点距離のズレ– 屈折した光が等距離に焦点を結ばない• 波長によって屈折率が異なるために発生– 分散（Dispersion）

22

軸上色収差の原理
波長ごとの焦点距離23軸上色収差のボケ方

周辺部の光線の収束

前ボケ

後ボケ

24

軸上色収差の補正• 色消しレンズ• ダブレットやトリプレットで補正– 分散特性の異なるレンズの組み合わせ– 複数の波長（色）を一定の距離に結像できる– 全波長域での完全な補正はできない• 二次スペクトルが発生（残存色収差）– レンズの枚数や素材によって大きく性能が異なる25

アクロマート（Achromat）レンズ• Achromatic doublet– 低分散（クラウンガラス）の凸レンズ– 高分散（フリントガラス）の凹レンズ– ２つの波長を同じ距離に結像できる• 例えば赤／青• 他の波長（緑など）は補正できない26

アクロマートダブレットによる補正
波長ごとの焦点距離• 赤と青の焦点距離を一致させた場合– 緑その他を一致させることはできない• もし赤と緑を一致させると– 青は補正され過ぎて赤と緑の焦点距離からずれる27

アクロマートダブレットによる補正

周辺部の光線の収束

前ボケ

後ボケ

28

補正なし

周辺部の光線の収束

前ボケ

後ボケ

29

アクロマートダブレットによる補正

周辺部の光線の収束

前ボケ

後ボケ

30

色消しレンズによる補正• 一般に球面収差の補正も同時に行う• それぞれの特徴が組み合わさったボケ味となる– 球面収差の残存収差• ソフト／シャープなエッジ• 中央の暗部（穴）／鋭いピーク（芯）– 軸上色収差の残存色収差• 同心円状の着色• ⇒着色されたエッジや芯31

収差が補正されたボケ• アクロマートによる補正– 広く利用されている– 典型的な補正• 前ボケに赤や紫のソフトな輪郭が出やすい• 後ボケに緑や黄のシャー
プな輪郭が出やすい

前ボケ

後ボケ

32

赤いソフトな輪郭の前ボケ

33

緑のシャープな輪郭の後ボケ

34

収差が補正されたボケ• 絞りが大きくピンボケが少ないボケ– 大きな絞りで微妙にピントの外れたボケ– 残存収差が目立つ• フォーカスから遠い（大きな）ピンボケ– 大きなピンボケほど残存収差は軽減される

35

実装へ
CEDEC 2008 での設計

テクスチャとしての設計• ボケ形状は一般に二次元の情報– 二次元フィルタのカーネル• レンズからの距離方向と合わせると三次元必要– 金太郎飴のようなボリュームテクスチャ– できれば二次元テクスチャに抑えたい• つまりはボケカーネルを一次元に抑えたい• 等方的なカーネルなら一次元で良い– 円形絞り（同心円状のボケ）– ボケの中心からの距離だけで決まる• ⇒まずは円形絞りに限定
37

収差の反映• 球面収差と軸上色収差を考慮– 色収差のために波長ごとにレイキャスト• 収差情報は波長別に用意– 球面収差曲線は入射高と収束距離の関係を示す– レンズの屈折位置と結像点を結ぶ直線が光線の軌跡

38テクスチャのマッピング• 縦一列がレンズから等距離の光束の分布を表す– 縦一列を切り出して環状にマッピング– これが実際のボケの画像となる

39

スペクトルをもっと細かく適用• 数十種類以上の波長に分離– 収差の程度とテクスチャ上の分解能による– 収差パラメタはとりあえずＲＧＢから線形補間• 本来は波長で滑らかに変化するパラメタを用意すべき• 最後にＲＧＢ値に変換

40

収差によるボケ味の再現• 球面／色収差によるボケの特徴の再現– ソフトフォーカス• 完全にはフォーカスしない– 赤いシャープなエッジをもつ前ボケ– 青～紫のソフトなエッジをもつ後ボケ• 右側はフォーカス付近の拡大

41

ダブレットレンズのテクスチャ• 適当に作った収差曲線を使用• 目的のレンズのデータがあればそれを利用– 波長ごとの屈折後の光路さえ判れば生成可能

42

ダブレットレンズの収差マップ• 右側はフォーカス付近の拡大

43

ダブレット補正によるボケ味の再現• よく見られるタイプの補正レンズ（写真との比較）– 前ボケに赤～紫のソフトなエッジと中央部の減衰– 後ボケに緑～黄のシャープなエッジと芯

前ボケ

後ボケ
44

ダブレットによる補正（1/3″ＣＣＤ）• コンパクトデジカメなどの小型ＣＣＤカメラ用レンズ– グラフは縮尺が異なる（35㎜フィルムの1/6程度）– 球面収差に比べ色収差の割合を大きくした• これはあくまで私的な経験則による判断

45

ダブレットによる補正（1/3″ＣＣＤ）• 基本的な性質は大型のダブレットと同じ– 前ボケに赤～紫のソフトなエッジと中央部の減衰– 後ボケに緑～黄のシャープなエッジと芯• 色収差によるエッジ部の着色がやや強い46

ダブレットによる補正（1/3″ＣＣＤ）• コンパクトデジカメの写真との比較

前ボケ

後ボケ
47

改良
より実用的な方法へ

CEDEC 2008 案の問題点• 円形（開放）絞り限定– 多彩な絞りの状態を表現できない• テクスチャに無駄が多い– もっとも重要なフォーカス付近の情報が少ない– フォーカス付近に詳細なテクスチャが別途必要

49

テクスチャの無駄を少なく• 深度ごとに光束の最大の広がり（ボケのサイズ）で正規化– 収差が大きいタイプのフォーカス付近は依然やや無駄が多い• この画像はフォーカス付近をかなり拡大しているので無駄が多く見える• 実際にはあまり気にするほどではない50

最適化した収差マップ• 収差およびその補正タイプ– 円形にマップした際の明るさが一定になるように正規化して格納– 実際の格納値はさらにそれを二乗根して精度を有効活用• このスライドの画像は判りやすいようにさらに一部を少し明るく補正

球面収差補正なし

非球面レンズ（色収差補正なし）

ダブレット補正（過剰補正）
51最適化した収差マップ
ダブレット補正

ダブレット補正（タイプ２）

トリプレット補正

収差なし（現実には存在しない）
52

多彩な絞り形状の表現• 絞り形状の表現は重要– ５～８枚程度の絞りが一般的– 絞りの状態によって円形から変化• 三次元テクスチャにする？
– 金太郎飴のようなテクスチャ– 絞り形状との組み合わせが多彩– できれば二次元のままに抑えたい• つまりボケカーネルは一次元のままに保ちたい53

光軸からの距離で依存フェッチ• 絞り形状から収差マップを間接参照– ルックアップテーブル生成– 絞り形状テクスチャに光軸からの距離を格納• 絞りの中心からの距離？

• 幾何光学では色変化は同心円状になるはず– 実際には絞り形状に依存して変化している？
• 回折の影響を考慮？

– 厳密には波動光学が必要– 両方の組み合わせ• 同心円状の収差• 回折による絞り形状依存の模様––

本来は回折の模様は絞るほど顕著になる
絞るほど減少する収差とは逆の性質– 実用上は波動光学はほぼ不用• 絞りの形に参照距離を歪ませるだけでも充分54

光軸からの距離で依存フェッチ• 中心からの距離を格納するのではなく– 絞りのエッジ部分までの距離の比率を格納• これでほぼ充分な画像にマップできる• 実装の都合上白黒反転して格納している

55

収差マップの間接参照マップ• あらゆる絞り形状に対応できる– ボケ（収差）マップとは独立に用意できる– 絞り具合による羽根のカーブも再現可能• 絞りの状態ごとにそれぞれ用意– さらには星型やハート型など何でも可能

56

収差マップの間接参照マップ• 各種絞り羽枚数と絞りの状態
開放絞り

少し絞った状態絞り込んだ状態

４枚絞り

５枚絞り

６枚絞り

７枚絞り
57

収差マップの間接参照マップ• 開口部分だけをマスクしたもの（確認用）
開放絞り

少し絞った状態絞り込んだ状態

４枚絞り

５枚絞り

６枚絞り

７枚絞り
58

口径食
Optical Vignetting

口径食• 口径食（Optical Vignetting）– 画面の端のボケの一部が欠ける• ボケがレモン形や半月形のようになる

60

口径食の原因• レンズの鏡筒によって光が遮られるため– 斜めから来た光がフィルムに届かない– その分光量が落ち周辺減光を引き起こす61

レンズ後部による口径食（前ボケ）
f の 3.0 倍の距離にフォーカス
f の 2.0 倍の距離の光点のボケ

合焦位置
a’

f

b’

欠けない範囲部分蝕

f

前ボケ（実際の大きさ）

フィルム位置完全蝕

レンズの絞り62

レンズ後部による口径食（後ボケ）
f の 3.0 倍の距離にフォーカス
f の 6.0 倍の距離の光点のボケ 合焦位置
a’
f

b’

欠けない範囲部分蝕

f

後ボケ（実際の大きさ）

フィルム位置完全蝕

レンズの絞り63

レンズ後部による口径食（前ボケ）
f の 3.0 倍の距離にフォーカス
f の 2.0 倍の距離の光点のボケ

合焦位置
a’

f

b’

欠けない範囲部分蝕

f

前ボケ（実際の大きさ）

フィルム位置完全蝕

レンズの絞り64

レンズ後部による口径食（後ボケ）
f の 3.0 倍の距離にフォーカス
f の 6.0 倍の距離の光点のボケ 合焦位置
a’
f

b’

欠けない範囲部分蝕

f

後ボケ（実際の大きさ）

フィルム位置完全蝕

レンズの絞り65

口径食の比較• レンズ前部による口径蝕とケラレ– 後ボケどうしの大小による比較• レンズの条件はまったく同じ– 同じ近距離にフォーカス• 少し離れた距離の光点の後ボケ（小さい後ボケ）• さらに離れた距離の光点の後ボケ（大きい後ボケ）66

レンズ前部による口径食（後ボケ）
f の 2.0 倍の距離にフォーカス
f の 3.0 倍の距離の光点のボケ

フィルム位置

合焦位置
f

a’
b’

欠けない範囲f部分蝕

後ボケ（実際の大きさ）
レンズの絞り完全蝕
67

レンズ前部による口径食（後ボケ）
f の 2.0 倍の距離にフォーカス
f の 5.0 倍の距離の光点のボケ

フィルム位置合焦位置a’f
欠けない範囲f部分蝕

後ボケ（実際の大きさ）
レンズの絞り完全蝕
68口径食の比較• レンズ前部による口径蝕とケラレ– 前ボケと後ボケの比較• レンズの条件は同じ– 同じ距離にフォーカス• フォーカスより近い光点（前ボケ）• フォーカスより遠い光点（後ボケ）• ボケの大きさは同じ（前ボケ／後ボケだけの違い）

69

レンズ前部による口径食（前ボケ）
f の 3.0 倍の距離にフォーカス
f の 1.5 倍の距離の光点のボケ

フィルム位置合焦位置a’f
欠けない範囲部分蝕

f完全蝕

前ボケ（実際の大きさ）
レンズの絞り70レンズ前部による口径食（後ボケ）
f の 3.0 倍の距離にフォーカス
フィルム位置
無限遠の光点のボケ
合焦位置a’f
欠けない範囲部分蝕

f

レンズの絞り完全蝕

後ボケ（実際の大きさ）

71レンズ前部による口径食（絞り：大）
前ボケ

後ボケ

画像の中心方向

絞りの状態

フォーカス

画像の周辺方向72

レンズ前部による口径食（絞り：小）
前ボケ

後ボケ

画像の中心方向

絞りの状態

フォーカス

画像の周辺方向73

レンズ後部による口径食（絞り：大）
前ボケ

後ボケ

画像の中心方向

絞りの状態

フォーカス

画像の周辺方向74

レンズ後部による口径食（絞り：小）
前ボケ

後ボケ

画像の中心方向

絞りの状態

フォーカス

画像の周辺方向75口径食の動き方についての考察• 鏡筒によるもう一つの絞りとみなせる– 絞りと口径食の重った部分が有効なボケ形状• 絞りも鏡筒（による口径食）も同じ光軸をもつ– ボケが画面中央にあれば口径食も中央にある– ただし• ボケとは大きさが異なる• ボケとは異なる速度比で移動する• 具体的にはどのように動くのか？
76口径食の動きの前提• レンズの状態が同じなら周辺減光の状態は同じ• ボケの大きさによって欠ける距離は異なる• ボケが画面中央なら口径食も中央絞り後部での口径食

前ボケ

後ボケ

絞り前部での口径食

前ボケ

後ボケ
77

口径食の動きの前提• 周辺減光は口径食を起こす鏡筒の影– つまり鏡筒部分のピンボケ– 半分欠ける画面中央からの距離は同じ• 欠け始めと欠け終わりの距離が絞りによって変化
絞り：大

絞り：小

鏡筒のピンボケ78

ほぼ開放絞り（前ボケ）f の 2.0 倍の距離の光点のボケ
f の 3.0 倍の距離にフォーカス フィルム位置 合焦位置
f

b’

部分蝕

a’

欠けない範囲af

前ボケ（実際の大きさ）

鏡筒の縁のピンボケ範囲完全蝕

レンズの絞り部分蝕

b

絞りのどこを通っても鏡筒に遮られない

絞りのどの部分を通っても鏡筒に遮られるため、外部の光は一切届かない79

さらに絞った状態（前ボケ）f の 2.0 倍の距離の光点のボケ
f の 3.0 倍の距離にフォーカス フィルム位置 合焦位置fa

絞りのどこを通っても鏡筒に
遮られない

部分蝕

f

欠けない範囲

b

b’

部分蝕

a’

鏡筒の縁の
ピンボケ範囲完全蝕

レンズの絞り前ボケ（実際の大きさ）
絞りのどの部分を通っても鏡筒に遮られるため、外部の光は一切届かない

80口径食の動きの前提• 周辺減光の始まる位置と終わる位置– 画面中央からの距離• 鏡筒のピンボケなのでボケサイズの計算で求まる– 半分欠ける位置とピンボケとしての半径
絞り：大

絞り：小

鏡筒のピンボケ81

口径食の動きの考察• 口径食の大きさ– ボケに対する相対的な大きさも一定ではない– ボケの大きさと後ボケ／前ボケかによって変化

82

レンズ前部による口径食（前ボケ）
f の 3.0 倍の距離にフォーカス
f の 1.5 倍の距離の光点のボケ

フィルム位置合焦位置a’

欠けない範囲口径食のサイズ

口径食に対する
ボケのサイズ

f

部分蝕

f

完全蝕

前ボケ（実際の大きさ）
レンズの絞り83

レンズ前部による口径食（後ボケ）
f の 3.0 倍の距離にフォーカス
フィルム位置
無限遠の光点のボケ
合焦位置a’f
欠けない範囲口径食に対する
ボケのサイズ

口径食のサイズ部分蝕

f

レンズの絞り完全蝕

後ボケ（実際の大きさ）

84口径食の大きさと動き• これらの条件から– 口径食の大きさと動きが求まる

85口径食の大きさと動き• 前ボケの上端が青い破線より下がると– ボケの上端から欠け始める（口径食の上端が青い破線に一致）• 前ボケの下端が灰色の破線より上がると– ボケの下端から見え始める（口径食の上端が灰色の破線に一致）• 後ボケの場合– ボケが負の大きさと考えれば同じ絞り前部での口径食

前ボケ

後ボケ

86

口径食の大きさと動き• 前ボケの上端が青～（灰マイナス錯乱円径）まで移動– 口径食の上端が青～灰まで移動する• かつ、ボケが画面中央にある場合– ボケの中心と口径食の中心は一致（同じく画面中央）
絞り前部での口径食

前ボケ

後ボケ
87

ここから方程式を解くと•レンズの状態で固定されるパラメタ– r: 口径食（鏡筒の影）のボケ半径• 周辺減光開始から終了までの距離の半分– d: 画面中央から周辺減光の中央までの距離• ピンボケが無い場合のイメージサークルの半径•

ボケ半径に依存するパラメタ– b: ボケ半径（後ボケは負のスケールとする）– e: 口径食半径（後ボケでは負のスケールとなる）– P(x,y): 画面中央を原点とするボケ（処理中のピクセル）の中心座標•

口径食半径は

e=
•

db
r-b

d

口径食の中心座標はr
Pe ( x, y ) = P ( x, y )
r-b

r
r

88

前方と後方の口径食の違い• 絞り前部と後部での口径食の違い– 前ボケと後ボケを逆にするだけ• つまりボケサイズの符号を反転して計算するだけ
絞り後部での口径食

前ボケ

後ボケ

絞り前部での口径食

前ボケ

後ボケ
89

口径食の適用• 生成するボケスプライト上の座標系に変換• テクスチャあるいは円の公式でマスクを生成• ボケにマスクを適用することで口径食を表現

90

口径食の適用• 俗にぐるぐるボケなどと呼ばれる状態

91

回折リング？
• ボケに現れる同心円状の模様

92

前ボケ f/1.4• 一見内側からケラレているようだが– 絞ってみると…

93前ボケ f/2.8• 実は外側からケラレていることが判る– つまりこのレンズは絞りの後方でケラレている94前ボケ f/1.4• 絞り（ボケ径）よりも鏡筒の口径の方が小さい– 実質的に鏡筒によるケラレが絞りになっている95

ボケに見える同心円状の模様• 一見絞りによる回折リングに見えるが…

96ボケに見える同心円状の模様• 実はケラレに対して同心円になっている• 絞りによる回折リングはもっと細かい– 外周部以外はほぼ見えない97

口径食の回折リング• 口径食テクスチャにリングを付けるだけ– 実装は非常に簡単• それほど効果的ではない– 縮小バッファの解像度などの問題– 場合によってはアーティファクトが発生する

98

高速化
実用化のためにパフォーマンスの問題• 極めて負荷が高い– 大量のスプライトを描画するため• 特に解像度の与えるインパクトが大きい– 一般的なポストプロセス（主にギャザーベース）• おおよそ面積に比例した負荷となる• サイズが倍になるとおおよそ4倍（面積の2乗）の負荷– スキャッターベース• 面積に比例したサイズを面積に比例して描画– おおよそ面積の2乗の負荷• サイズが倍になるとおおよそ16倍（面積の4乗）の負荷

100

仮にフルＨＤにそのまま描画すると• 仮に1920×1080に対して処理すると– 全体が30ピクセル程度に均等にボケている場合– 1920×1080に対してそれぞれ30×30を生成– フルＨＤ画面全体を900回フィルする負荷となる– 100×100ピクセルのボケなら10000回相当！

• 如何にＧＰＵが速くなっても高速化は必須

101

縮小バッファの活用• ½×½以下のサイズのバッファを使用– フルＨＤではもう少し小さい方が良い– 解像度が1.5倍変わるだけでも負荷は5倍になる• ボケの大きさに応じて階層化– ½×½、¼×¼ 、…
• 通常2レベル～3レベル程度– それぞれの解像度ごとにスプライト生成を実行• これだけでも数十～数千倍の高速化
102縮小バッファの弊害• 小さなボケを表現できない– 収差の目立つフォーカス付近のボケ– 収差が大きいため重要度も高い• フォーカス付近はコンポジット時に処理– フル解像度で数十点をサンプリング• ギャザーベース• 決して軽い処理ではない– スプライト生成処理と比較すると誤差レベル– エッジ処理は行わなくてもあまり問題はない• 大きいボケは処理しないため
103

縮小バッファの限界• 縮小バッファの解像度には限界がある– ボケ形状の表現力を維持する必要があるため• 特に小さなボケの表現が難しい– いたずらに解像度を下げることはできない• 縮小バッファを使ってもまだ負荷が高い– 解像度切り替わり付近の大きなボケがネック• 同解像度でもボケが2倍になると負荷は4倍になる

104

もう少し高速化したい• 全ピクセルに対してボケ生成する必要はあるか？
– 各解像度に対してある程度以上大きいボケ• アーティファクトがそれほど目立たない• もっとまばらな生成でも大丈夫？

• 高速化処理– 各解像度に対してある程度以上大きいボケの場合• 明るさを4倍にして2×2ブロックに1回だけ生成• この場合の色ソースは一つ下の階層を使用– ミップマップと同等の処理• これでもっとも負荷の高い部分が4倍高速化される– ボトルネック部分が集中的に高速化

105その他の高速化案• 重要度の低い部分も2×2ブロックに1回生成– 色の変化の少ない（周波数の低い）領域– 色がある程度以上暗い領域• 最初に縮小バッファを生成する際にマーク– 縮小元2x2ブロック内の色の変化をチェック• ボックスフィルタではなくポイントサンプル• ある程度以下のスケールでしか変化しないならマーク– 解像度ごとにそれぞれマスクを生成• マスクされたピクセルは簡略化– 2×2ブロックに1回だけボケのスプライト生成
106重要度の低い領域の簡略化
元画像

明るさの差の多いピクセルのマスク

最終結果（簡略化ピクセルを緑に着色）

107

重要度の低い領域の簡略化• 効果はやや微妙– もともと負荷の低い領域• 大きなボケは既に簡略化で高速化済み• それほど高速化には寄与しない• アーティファクトが比較的目立つ– 小さなボケを2×2ブロックに1回生成– モザイク状のノイズが発生しやすい• 色の変化の少ない領域でも目立ちやすい• 結果的にはあまり有効ではなかった
108

結果紹介

５枚絞り（後ボケ）• ダブレット補正110５枚絞り（後ボケ）• ダブレット補正（タイプ２）111

５枚絞り（後ボケ）• 非球面レンズ（軸上色収差補正なし）

112

５枚絞り（後ボケ）• トリプレット補正113

７枚絞り（後ボケ）•

f/2（開放絞り）– 鏡筒前方による口径食が発生している

114

７枚絞り（後ボケ）•f/3.5– 少し絞ったことにより口径食が減る

115

７枚絞り（後ボケ）•

f/10– 口径食がなくなり収差もかなり少なくなる

116

５枚絞りダブレット補正•

フォーカス付近の後ボケ– ３線ボケと呼ばれるタイプのボケ方

117

５枚絞り（前ボケ／後ボケ）• 球面収差補正なし

118

５枚絞り（前ボケ／後ボケ）• ダブレット補正119５枚絞り（前ボケ／後ボケ）• ダブレット補正（タイプ２）120

５枚絞り（前ボケ／後ボケ）• 非球面レンズ（色収差補正なし）

121

５枚絞り（前ボケ／後ボケ）• トリプレット補正122

５枚絞り（後ボケ）• 球面収差補正なし

123

５枚絞り（前ボケ）• 球面収差補正なし

124

５枚絞り（後ボケ）• ダブレット補正125

５枚絞り（前ボケ）• ダブレット補正126５枚絞り（後ボケ）• ダブレット補正（タイプ２）127

５枚絞り（前ボケ）• ダブレット補正（タイプ２）128

５枚絞り（後ボケ）• 非球面レンズ（色収差補正なし）

129

５枚絞り（前ボケ）• 非球面レンズ（色収差補正なし）

130５枚絞り（後ボケ）• トリプレット補正131

５枚絞り（前ボケ）• トリプレット補正132

５枚絞り（後ボケ）• 球面収差補正なし

133

５枚絞り（後ボケ）• ダブレット補正134５枚絞り（後ボケ）• ダブレット補正（タイプ２）135

５枚絞り（後ボケ）• 非球面レンズ（色収差補正なし）

136

５枚絞り（後ボケ）• トリプレット補正137

５枚絞り（前ボケ）• 球面収差補正なし

138

５枚絞り（前ボケ）• ダブレット補正139

５枚絞り（前ボケ）• ダブレット補正（タイプ２）140

５枚絞り（前ボケ）• 非球面レンズ（色収差補正なし）

141

５枚絞り（前ボケ）• トリプレット補正142

アナモルフィックレンズエフェクト
Anamorphic Lens
流行りすぎ？

アナモルフィックレンズとは？
• アナモル（アナモフィック）フィックレンズ– Anamorphic Lens

• 横方向のみを圧縮／伸長する特殊なレンズ– 円柱レンズ– 標準的なフィルムでワイド撮影／投影する仕組み• 映画でよく使われる– 横方向を圧縮して撮影• フィルムに映った像は横が圧縮されて縦長になる– 映写機でスクリーン投影時に伸長• 元のアスペクト比に伸ばして再生する• 結果としてアスペクト比の正しいワイド映像となる144

何故アナモルフィックレンズ？
• 映画フィルムの有効活用– 上下のトリミングよりもフィルムを無駄なく使える– 画質面で有利• 当時の撮影装置／上映装置を流用できた– アナモルフィックレンズを装着するだけで対応可145

映画のアスペクト比•

スタンダードサイズ– 1:33～1.37程度– 昔の標準映画• 1:37あるいは1:33のフィルムで撮影• 一般には縦送りの35mm標準フィルム– 写真用35mmフィルムの半分の面積（＝画質）– IMAXもアスペクト比は1.33:1• ただし70mmでさらに横送りなので遥かに（数倍）高画質•

ビスタサイズ– 1.66:1～2:1程度– ビスタビジョン• 特殊な横送りの35mmで撮影• 写真用フィルムと同画質• これを標準の1.5:1程度にトリミング– 上映用の縦送りの35mmに縮小焼付け– 上映は1.85:1（1.66:1～2:1）程度– その他のビスタサイズ• 単に35mm標準サイズからトリミングしたもの

146

映画のアスペクト比• スコープサイズ– いわゆるワイドスクリーン• 2:1以上のかなりの横長• 主にアナモルフィックレンズを利用– シネマスコープ（シネスコ）• 2.35:1• 元祖アナモルフィック方式• 他社にも類似の方式がいくつか– パナビジョン• 2.4:1• シネスコより優れたアナモルフィックレンズで主流に– 現在でもよく使われている147

アナモルフィックレンズ（撮影用）• レンズ先端に接続• 画像が左右に圧縮される– このレンズの場合1.33x

148

アナモルフィックレンズの特徴
特にＳＦ映画でよく見られる149

アナモルフィックレンズの特徴•

レンズフレア– 横方向に伸びる特徴的な（青白い）レンズフレア– 複雑なレンズゴースト– 周辺に楕円形（横長）の明るいフレア• 映画ではあまり見られない–

自主制作映像などでよく見られる• アナモルフィックレンズの鏡筒内のスペキュラー反射• 周辺減光と同じ原因だが反射によって逆に明るくなる•

歪曲収差– 横方向に強く発生– 特に左右の端の方で顕著に歪む•

色収差– 横方向に強く発生– 特に左右の端で着色が起きやすい•

フォーカスのズレ– 完全にはフォーカスしないことがある• 特に近距離フォーカス時– フォーカス前後で上下や左右に伸びたボケが入れ替わるように発生する
150

アナモルフィックレンズの特徴•

グレアが横方向に扁平– グレアがレンズの比率に従って全体的に横長になる•

周辺減光– 画面の左右端で周辺減光が起きやすい– 複数の要因でアスペクト比の異なる周辺減光が発生•

フィルムグレイン／デジタルノイズ– 粒子やノイズも比率に従って横長になる•

ボケの形状の変化– ある程度絞った状態では横長の（絞り形状の）ボケ– 開放絞りに近い状態では縦長の楕円形のボケ•

フォーカスによる画角の変化– 縦横で異なる比率で変化する– 昔の映画など• 奥にフォーカスすると縦方向の画角が広角に大きく変化する•近くのものは横方向にあまり圧縮されない– 程度はおそらくレンズ依存151

アナモルフィックレンズ的なフィルタ• 擬似アナモルフィックレンズ効果– アナモルフィックレンズに似た効果を得るフィルタ– 楕円形のケラレと横フレアを起こさせる• CineMorph Filter152

アナモルフィックレンズフレア
複雑なレンズゴースト

153アナモルフィックレンズフレア• 横方向に長く伸びるフレア– 映画などではしばしば青白い横フレアが見られる

154

アナモルフィックレンズフレア• 横方向に線対称にゴーストが発生• 画面中心に点対称に並ぶゴーストも横に伸びる

Panasonic LA7200 Anamorphic Lens Flare by Andrei Jikh
http://vimeo.com/9493224#at=0
155

何故このようなフレアになるのか？
• アナモルフィックレンズの構成– シリンドリカルレンズ（円柱レンズ）の組み合わせ• カマボコ型のレンズ– 横方向のみ屈折して圧縮される– 縦方向には原則として屈折しない156

アナモルフィックレンズゴースト• レンズゴースト– スフェリカルレンズ（通常のレンズ）の場合• 画面中心を原点とした点対称に並ぶ– レンズの屈折が同心円状のため– アナモルフィックレンズ内部のゴースト• 画面中央の縦線に対して線対称に（横方向に）並ぶ– レンズの屈折が横方向のみのため

157

横方向に長く伸びるフレア• 横方向の回折とゴースト– アナモルフィックレンズ内の乱反射／屈折• 反射／屈折像には横に伸びた像が含まれる– 横長像を含む全てのゴーストが横方向に並ぶ• 結果– 全体としては非常に横長のフレアとなる

158

横フレアの（しばしば青白い）着色• 一般的なレンズゴーストの場合– レンズコーティングの色の虚像が並ぶ– 典型的には• 青／紫／緑系など• アナモルフィックレンズの場合– 同じくレンズコーティングの色• なぜ青が多いのか？
– 映画で好んで使われているレンズがそうだから– 好まれる理由はかっこいいから（本当です）• 青いコーティングの古いタイプのレンズが好んで使われている• 反射防止が弱くフレア（ゴースト）も発生しやすい159

横フレアが点対称位置にも現れる• 通常のレンズのゴースト– 画面中心を原点に点対称に虚像が並ぶ• アナモルフィックレンズの後方に通常のレンズ– アナモルフィックのフレア結果にゴーストが発生• 結果として– 横に伸びた青っぽいフレアが点対称位置にも現れる• 通常のレンズのコーティングによりさらに着色される• 多少異なる色に変調される

160

アナモルフィックレンズゴースト実装• 横長の虚像– 横方向に再帰的にブラーを適用– 適当なところで着色する

161

アナモルフィックレンズフレア• 横方向に長く伸びる青白いフレア

162

アナモルフィックレンズゴースト実装• 横に並ぶゴースト– 点対称スケーリングの代わりに線対称に• シェーダは共通化できる– 点対称の原点を画面中央から上下方向にずらす• フラグによって原点を対象ピクセルのｙ座標に移動– ｙ座標が同じ位置に揃うと自動的に線対称となる• 画面中央との間をパラメタで補間するとよい– 微妙に高さのずれた横方向のゴーストも再現できる

163

アナモルフィックレンズフレア• 横方向に線対称のゴースト– 画面中心に点対称に並ぶゴーストも横に伸びている

164

グレア全体のアスペクト比• 例えばグレア生成用の縮小バッファサイズ– 横方向を短く（縦方向を長く）する• これだけで横に扁平なエフェクトを生成可能

165

グレアのアスペクト比• 通常のレンズ166

グレアのアスペクト比• アナモルフィックレンズ– グレア全体が横方向に扁平

167

ゴーストの表現力の向上• これは通常のレンズ部分のゴースト– レンズは平面ではない• ゴーストの点対称スケールは光路によって変化• 引き伸ばされたり縮小されたりする– レンズは光軸に対して完全に対象形• スケールも画面中央からの距離に依存して変化• 同心円状に変化する• よりリアリティのあるゴースト表現– ゴースト生成時の点対称スケールを変化– 画面中央からの距離に依存して非線形に変化させる
168

ゴーストの点対称スケール• 一様なスケール

169

ゴーストの点対称スケール• 中央からの距離によって非線形スケール

170

楕円ボケと周辺減光
複雑な口径食171

ボケが楕円形になる• 主に縦長の楕円形のボケが発生する

Anamorphic Lens Shots - Before & After
http://vimeo.com/16350276

172縦長楕円ボケ• 本来ならボケも横方向に伸びるはず– アナモルフィックレンズの圧縮比率で– 絞り込んでいる場合はそうなる• 絞りが開放に近い状態– アナモルフィックレンズによる口径食が発生• レンズ前方で口径食が発生– 楕円形の口径食• レンズの状態によっても変化• 物理的には楕円ではない
173

縦長楕円ボケの実装• 口径食を楕円形にかけるだけ– 口径食シミュレーションの応用• 口径食によって自動的に楕円ボケが発生• 周辺減光も自動的にシミュレーションできる• 実際にはレンズの状態によって楕円も変化– シミュレーションは難しい– あまり気にしなくても問題ない

174

楕円形の口径食シミュレーション• 絞り：大– 楕円形に口径食が起こっている状態

175

楕円形の口径食シミュレーション• 絞り：小– 口径食が発生していない状態の横長のボケ

176

楕円形の口径食シミュレーション• 絞りが口径食でほぼケラレている状態– ほぼ楕円形のボケ

177

楕円形の口径食シミュレーション• 絞ると絞り形状が見えてくる– レンズ前方でケラレるので内側から絞り形状が見えてくる

178

楕円形の口径食シミュレーション• 絞ると絞り形状が見えてくる– レンズ前方でケラレるので内側から絞り形状が見えてくる

179

楕円形の口径食シミュレーション• 口径食がなくなった状態– 絞り形状がほぼ見えている状態では横長のボケとなる

180

周辺減光
• アナモルフィックレンズによる口径食– 縦長楕円の口径食による周辺減光– 左右の端の方で起こりやすい• 中央付近では常にケラレている状態• 後方の通常のレンズによる口径食– 横方向の圧縮比率によって横長の口径食• コサイン4乗則– レンズによって異なる– 強くは発生しないのであまり気にしなくても良い181

縦横フォーカスのズレ

182

完全にはフォーカスしない• アナモルフィックレンズは横方向のみを圧縮– 理想的には完全にフォーカスする– 実際には微妙にズレが生じる• 主に近距離フォーカス時• 完全にはフォーカスしない– 縦横で微妙にフォーカスがずれる• フォーカス前後で左右／上下に伸びたボケが発生– フォーカスを挟んで縦と横のブラーが入れ替わるように変化183

手前にフォーカス
• このレンズでは後ボケは横に伸びている184

中間にフォーカス
• 完全にフォーカスする場所がない

185

奥にフォーカス• このレンズでは前ボケは縦に伸びている186

アナモルフィックフォーカスの実装• 実装は非常に簡単– 縦横でフォーカスを微妙にずらす– 錯乱円（ボケ）サイズを縦横別々に計算する

187

微妙な後ピン（縦方向はフォーカス）• 横方向のみフォーカスせずに前ボケが発生

188

フォーカス付近（不完全なフォーカス）•完全にはフォーカスできない– 横方向のフォーカスが微妙に前ピンで僅かに後ボケが発生– 縦方向のフォーカスが微妙に後ピンで僅かに前ボケが発生

189

微妙な前ピン（横方向はフォーカス）• 縦方向のみフォーカスせずに後ボケが発生

190

その他
いくつかの簡単な表現

191

横方向に強い歪曲収差• 画面の左右端がより強く歪曲する– 画面中央は横方向に太く、端は横方向に潰れる– 歪曲収差処理の際• 横方向の画角をより広いとみなして処理

192

歪曲収差シミュレーション比較• 通常レンズ193

歪曲収差シミュレーション比較• アナモルフィックレンズ

194横方向に強い色収差• 画面の左右端が強く色収差を起こす– 倍率色収差処理を横方向に（より強く）適用

195

色収差シミュレーション比較• 通常レンズ

196

色収差シミュレーション比較• アナモルフィックレンズ

197

色収差シミュレーション比較• 通常レンズ

198

色収差シミュレーション比較• アナモルフィックレンズ

199

まとめ
conclusion200

光学に基づいたボケ味の表現• 収差を含んだ光路分布マップを作成• 絞り形状のルックアップテーブル経由でマップ• スプライトを錯乱円に従ってスキャッタリング• 口径食のシミュレーション

201

評価
• 従来とは一線を画すリアリティの被写界深度表現が可能– 収差を含むボケ味の再現– フォーカス位置によるボケ味の変化– 絞りの種類や状態のさまざま組み合わせの再現– 複雑な口径食の変化など• 負荷は非常に高い– ハイエンドＰＣなら充分リアルタイム– しかしゲーム中に使うにはまだ負荷が高い• カットシーンレベルなら充分利用できる– さらなる高速化の余地あり• 例えばクォリティを少し犠牲にすればかなり高速化は可能• アーティファクトがやや目立ちやすい– 収差表現とケラレによる着色– 縮小バッファ解像度の切り替わり時など• あまり極端に大きなボケは表現しない方が無難かも202アナモルフィックレンズエフェクト• アナモルフィックレンズの特徴の再現– （青白い）横フレア– 横方向へのゴースト– 横フレア結果が点対称に並ぶゴースト– 全体的に横長に扁平したグレア– 縦長楕円形のケラレが起こるボケ表現• ケラレの起こらない場所では横長ボケ– 縦横のフォーカスのズレ• フォーカス前後で縦や横方向へのブラーが発生– 横方向の強い歪曲収差– 横方向の強い色収差
203

評価• 全体的に実装は非常に簡単– 従来のポストプロセスのちょっとした応用• パフォーマンス的な問題は少ない– ボケ味のシミュレーションだけは非常に遅い– 無理なら被写界深度処理を縦に伸ばすだけでも• 縦長楕円形のボケだけでもそれらしくは見える• ＳＦ映画的なシーンには最適– 最近のＳＦ映画での過剰な演出も再現できる• 実用性は非常に高い
204

？
ご質問は？
masa@siliconstudio.co.jp

205