【Unity】Depth of Field(被写界深度)の使い方【Post Processing】
- 2020.01.31
- PostProcessing
- Depth of Field, Unity, ポストプロセシング
UnityにはPost-Processing(ポストプロセシング)という画面の見栄えをグレードアップさせてくれるツールがあります。
ここに含まれているエフェクトとしてDepth of Field(デプス・オブ・フィールド: 被写界深度)があるのですが、これを使うと焦点の合っているオブジェクトに注目させたり、際立たせたりする効果が生まれます。
例えば以下のような違いがあります。上の画像では全てのオブジェクトに焦点が合っていてはっきり描画されているのに対し、下の画像ではテーブルの上の茶色いビンに焦点を合わせて背景はぼやけています。
2枚の画像を見ると印象が違いますね。Depth of Field(被写界深度)の違いでこうした演出を生み出しています。
この記事では以下の点に触れています。
- Depth of Field(被写界深度)の使い方
- 各設定値が何を表しているか
- 使用したサンプル
これが使えると演出の引き出しがひとつ増えるので覚えておいて損はありません。
環境
macOS 10.15 Catalina
Unity2019.2.9f1
Unity Hub 2.2.2
Post Processing 2.1.7
参考文献
公式のマニュアル
公式のパッケージ解説
公式のバッケージ解説の方は英語で書かれていますが、自動翻訳すれば概要を掴みやすくなります。
Post-Processing(ポストプロセシング)とは
Post-Processing(ポストプロセシング)とは、画面に描画する前の画像に対して処理を行うことで、最終的に描画される画像の見栄えを良くする機能です。インスタのフィルターのようなイメージです。
ポストプロセシングの概要や導入方法については以下の記事で解説しているので、こちらもご参照ください。
この記事の中ではポストプロセシングが導入されている状態で進めていきます。
Depth of Field(被写界深度)とは
Depth of Field(被写界深度)とは、焦点の合っている(ピントの合っている)距離の範囲のこと。この距離はカメラからの距離を指しています。
- 被写界深度が「浅い」=焦点の合う範囲が狭い
- 被写界深度が「深い」=焦点の合う範囲が広い
焦点が合っているとオブジェクトがはっきりと見え、焦点が合っていないとオブジェクトがぼやけて見えます。
どんな効果が得られるか
焦点を合わせたオブジェクトに注目させる効果があります。対象のオブジェクト以外の部分がぼやけるため、自然とはっきり描画されたオブジェクトに目がいくようになるのです。
プレイヤーが操作している画面でぼやけた箇所があると単純に操作がしにくくなるため、イベントシーンやオープニングなど、演出を目的としたシーンで使用すると良いでしょう。
演出という観点だと、ゲームオーバーになった時に被写界深度を変えて画面全体をぼやけさせることで、主人公が気絶する演出ができます。逆にぼやけた画面をはっきりとさせることで、目が覚める様子を演出することもできます。
Depth of Fieldを追加する
「Depth of Field」のエフェクトを追加する場合は、「Post Process Volume」のコンポーネントで [Add effect…] ボタンをクリックし、[Unity] -> [Depth of Field] を選択します。
ポストプロセシングを使うための設定は以下の記事をご覧くださいな。
Depth of Fieldの設定項目
Depth of Fieldの設定項目は以下のようになっています。Depth of Fieldの左にあるチェックボックスを外すとエフェクトが適用されなくなります。チェックを外すと全体がグレーアウトされて設定値を変更できなくなるため、うっかり値を変更するのを防ぎたい時はこちらで。
また、右側にあるOn/Offのボタンで切り替えてもOKです。On/Offで切り替える時は値を変更できるので、エフェクトは表示しないけど値は変えておきたい、なんて時にはボタンで切り替えると良いでしょう。
設定値を変える場合は、各項目の左側にあるチェックを入れます。チェックを外した状態だとデフォルトの値が使用されます。
Focus Distance
Focus Distanceは撮影距離(被写体までの距離)の設定です。カメラからどれくらいの位置に焦点を合わせるかを決めます。値が小さくなるとカメラに近い位置に、値が大きくなるとカメラから遠い位置に焦点が合うようになります。
Gameウィンドウで焦点を合わせたいオブジェクトを見ながら設定値を変えていくと良いでしょう。
Aperture
Apertureはレンズの口径を指していて、値を小さくすると被写界深度が浅くなり焦点が合う範囲が狭くなります。逆に値を大きくすると被写界深度が深くなり焦点が合う範囲が広くなります。
カメラを触ったことのある人は「F値」でおなじみかもしれません。
Focal Length
Focal Lengthは焦点距離の設定です。Focus Distanceと名前が似ていて紛らわしいですが、こちらはカメラのレンズとフィルムの間の距離を表しています。
値が小さくなると被写界深度が深くなってはっきりとした画面に、値が大きくなると被写界深度が浅くなってぼやけた画像になります。
設定値ごとに値の大小と被写界深度の浅い深いが違う部分があるので注意してください。
Max Blur Size
Max Blur Sizeはボケの大きさを設定する項目です。
セレクタから大きさを選択することができるので、画面を見ながらお好みで……と言いたいところですが、ボケの大きさが大きくなるほどパフォーマンス的には重くなるため、ゲームをリリースするプラットフォームと相談して決めます。
モバイルだったらSmallかMediumまでにしておいて、PC向けなどハイエンドの端末だったらそれ以上も選択肢に入ります。もちろんPC向けでもパフォーマンスに影響があることは変わらないので、そこは見た目とのトレードオフで考えましょう。
Depth of Fieldのデモ
いくつかのデモを作成したのでこちらもご覧ください。
デフォルトのオブジェクト
デフォルトのオブジェクトを使ってDepth of Fieldのエフェクトを適用するとこのようになります。
手前の黄色い球体に焦点を合わせています。Focus DistanceとFocal Lengthをいじっています。これだけでもいつもの画面と違った雰囲気になります。
冒険者の宿
上の方でも紹介した画像です。冒険者の宿にある酒場で、目の前の飲み物とパンに気持ちが向いている印象を受けます。目の前のことに集中しているときは、周りの景色ってこんな感じですよね。
屋外
例えば画像真ん中にある大きな屋敷に敵のボスがいるとして、そのボスを倒しにいくイベントで屋根にいる感じです。
ここからDepth of FieldのFocus Distance(被写体までの距離)をスクリプトで変更し、中央の大きな屋敷に焦点を合わせると「今からあの場所に向かうんだな」とプレイヤーに伝えることができます。
フォーカスイン/フォーカスアウト
これは昔作ったカメラワークの解説動画ですが、動画の中でDepth of Fieldを操作しています。
気絶するとき、起きたときの演出もできるのが便利です。カメラワークについてはこのブログでも紹介しているので雰囲気は掴んでもらえるかも。
あるいはGoogleなどで映画関係の演出に関する情報を調べるのもいいと思います。
サンプルで使ったアセット
サンプルで使ったアセットも紹介します。もし同じ雰囲気で画面を作ってみたい場合は試してみてください。
冒険者の宿は『Village Interiors Kit』を使っています。使ってみた感想やレビューについてはこちらの記事もご参照ください。
アセットストアはこちら。
屋外のサンプルとして使った村は『Village Exteriors Kit』を使っています。同様に使ってみた感想やレビューについてはこちらの記事もご参照ください。
アセットストアはこちら。
村のライトや樽はこちら。
まとめ
Depth of Fieldの使い方と設定値の紹介でした。
個人的なおすすめとしては上でもお伝えした通り、イベントシーンや演出の一環で使いたいところです。もしキャラクターを操作しているシーンで使うなら、画面が見辛くないか確認した上で使うようにすると良いでしょう。
あなたの演出の選択肢として持っておくと表現の幅が広がると思うので、試してみてくださいな。
以下のページでポストプロセシングのエフェクト一覧をまとめてあるので、もしよかったらこちらもご参照ください。
ゲーム開発の攻略チャートを作りました!
-
前の記事
【Unity】正式版になったVisual Effect Graphの導入方法【ばり簡単】 2020.01.29
-
次の記事
【Unity】Vignette(ビネット)の使い方と効果【Post Processing】 2020.02.01
コメントを書く