This explanation is currently available in Japanese.
ひとことで
カメラのピントが合った距離から外れるほど、像をぼかす表現です。本物のカメラでは、レンズの口径(絞り)が大きいほど、ピントの合う範囲(被写界深度)が狭くなり、背景や手前が大きくぼけます。ゲームでは、深度から画素ごとのぼけの大きさを計算し、その大きさの円の範囲を平均することで再現します。見せたい物に視線を集める、映画のような画作りの基本です。
ゲームでの使いどころ
- カットシーン・会話シーン:話している人物にピントを合わせ、背景をぼかして注目させる。
- エイムダウンサイト(照準を覗く):照準の先にピントを合わせ、手前の銃身をぼかす。
- フォトモード:プレイヤーがピントや絞りを調整して撮影する。
- ミニチュア風の演出:画面の上下を強くぼかすと、ジオラマのように見える(ティルトシフト)。
- メニュー画面:ポーズ画面の背景をぼかして、UI を読みやすくする。
しくみ
錯乱円(CoC:Circle of Confusion):ピントが合っていない点は、画面上で点ではなく円に広がって写ります。その半径は、物体までの距離 、ピントの距離 、絞り からおおよそ次のように決まります。
ぼかし方(ギャザー方式):各画素の周りを、円盤状に並べた標本点で読み、その点のぼけがこの画素まで届くなら色を加えます。
- 標本点は、黄金角で螺旋状に並べると円盤を均一に覆えます(円盤一様サンプリング)。
- 明るい点は、周りの暗い画素よりも強く寄与するので、HDR の画面から読むと丸く光るボケ(玉ボケ)になります。
手前と奥の扱い:ピントの合った物の上に、奥のぼけがにじみ出るのは不自然です。一方、手前のぼけた物は、奥のピントの合った物の上に広がって見えます(手前の物で奥が少し隠れる)。この非対称を扱うのが実装の難しいところで、デモでは「奥のぼけは、自分より手前の物の範囲には広げない」という条件で近似しています。
実装のポイント
- 低解像度で計算する:ぼけの計算は画面の半分の解像度で行い、ピントの合った部分と合成すると大幅に安くなります。
- 手前と奥を分ける:本格的な実装では、手前のぼけと奥のぼけを別々の画像で計算してから合成します。
- ピント合わせの演出:ピントの距離を急に変えず、目標に向かってなめらかに近づけると、カメラがピントを探すような自然な動きになります(デモの「ドローンを追いかけて」)。
つまずきやすい点
- 輪郭のにじみ:ピントの合った物の縁に、奥のぼけた背景がにじんで光の輪ができる、または逆に縁がくっきり切れすぎる、という問題が起きやすいです。
- かけすぎ:常に強いぼけをかけると、プレイ中に周囲の状況が分からなくなります。ゲームプレイ中は控えめにします。
- 細い物・半透明物:髪の毛や草、パーティクルは深度が 1 つに決まらないため、ぼけ方がおかしくなりがちです。
デモで試すこと
- 床をクリックすると、その距離にピントが合います。手前の球をクリックすると手前にピントが移り、奥の柱やネオンが大きくぼけます。
- 「ぼけの強さ」を上げると、ぼけが大きくなり、ネオンが丸い玉ボケになって広がります。
- 「ぼけの大きさを色で表示」で、手前(青)と奥(橙)のぼけの大きさの分布を確認できます。
- 「ドローンを追いかけてピント合わせ」をオンにすると、動くドローンにピントが追従します。