今回は現実のカメラ設定値を利用して、Unityちゃんを撮影していきます。
Cameraはライティングにも大きく関わってくる重要な要素です。
Unity HDRPでは実際のカメラでも存在する設定値の露出度、絞り、シャッター速度などを設定することによってライティングを設定することができます。
これらの変化を確認しつつ、各種Camera周りの設定にも触れていこうと思います。
環境
Unity2019.4.10f1
HDRP7.4.1
※ビルトイン,URP, HDRPでCameraコンポーネントのプロパティが違うので注意。今回の記事で行うことはHDRPでのみ実現可能です。
用語
カメラ用語や基礎知識は以下のサイトで学べます。
デジタル一眼カメラ α(アルファ)で写真撮影を楽しむ | 活用ガイド | デジタル一眼カメラ α(アルファ) | サポート・お問い合わせ | ソニー
当記事で出てくるのは露出 | 絞り | シャッター速度 | ISO感度あたりです。
吹き出し出せるようになりました!
こういうのもっと覚えてカメラも上手になりたい...
Unityの用語とカメラ用語を区別するために、UnityはInsperctorで表示される項目名、カメラ用語はカタカナか漢字で表示します。
Unityの準備
それではPhysical Cameraが利用できるように設定していきます。
1. Global Volumeに「Exposure」をOverride
2. Exposure → Pysical Cameraに変更
3. Projection → Perspectiveに変更
4. Camera>FOV Axis → Horizontalに変更
5. Link FOV to Physical Cameraにチェックを入れます
これらの説明は後ほど行います。
これで準備完了です。Unityちゃんを可愛く撮影していきましょう!
画角を変更
画角の変更をするためには以下の項目が関わってきます
Sencor Type
Sencor Sizeを含め、各設定のプリセットを選択することができます
現実のカメラでは簡単に変えられるような物ではありません。
Sensor Size
Sensor Sizeを設定可能
私の考えではイメージセンサー ≒ Sensorだと思っています。
現実のイメージセンサーはレンズから取り込んだ光を画像に変換する装置で、センサーが大きいほど光を取り込む量が多いです。
しかしUnityのSencer Sizeは大きくしたからといって光を取り込む量は変わらないので、Field of View(以下FOV)の計算にしか使われていないような気がします。
Sensor Sizeを変更するとCamera>General>Field of View
の値も変わります。これは先ほどLink FOV to Physical Cameraにチェックを入れたため値の変化がリンクしています。
FOVとSensor Sizeの関係は以下のようになっています。
Unity:
https://docs.unity3d.com/ja/2019.4/Manual/PhysicalCameras.html
イメージセンサーと画角の計算は以下のサイトで行えます。
Focal Length(焦点距離)
カメラレンズとイメージセンサーの距離です。値を小さくするほど画角が大きくなります。上記の計算式からFocal Lengthを変更した時もField of Viewが連動して変化します。
露出度(Exposure)を変更する
露出度を決定するために必要な項目はISO、シャッタースピード、絞りです。
各項目を説明した後に、それらを組み合わせてどう露出値が決まるのか説明していきます。
ISO
光を取り込む感度で、ISO感度をあげると明るくなります。
現実カメラでもこの値を上げることで、暗いところでもある程度明るく撮れます。
Unityではisoが同じ項目になります。
シャッタースピードが200, 絞り(Aperture)が16のときのisoの変化
シャッタースピード
イメージセンサーに光を取り込むためにシャッターが開いている時間のこと。
シャッタースピードが早いほうがぶれにくくなります。
UnityではShutter Speedが同じ項目です。
絞り(F値)
絞りでは光を取り込む量を調整します。現実カメラではボケや被写体深度(ピントが合って見える範囲)も変わってきますが、このままでは「ぼけ」を表現することはできません。後で説明します。
UnityではApertureが同じ項目です。
EV計算方法
上記の3項目がどのように計算されてExposure Value(EV)が算出されるか、簡単に説明したいと思います。
ここでは絞りのことをAv(Aperture Value)
シャッタースピードのことをSSとして説明を進めます。
ISO:100, Av:F1.0, SS:1.0secondのとき、EVは0になります。
式で表すと以下になります。
EV0 = ISO100 + AvF1.0 + SS1.0second
これだと単位が意味わからないですよね笑
これは各項目に基準値があり、その増減値がEVだからです。
どういうことかというと
ISOは100が基準 = ±0
AvはF1.0が基準 = ±0
SSは1.0secondが基準 = ±0
この増減値の和がEVの値になります。
じゃあどのくらい値を上げることでプラス1になるのかというと、これも項目ごとに異なります。
プラスされていく間隔が一番覚えやすいのは、ISO感度で前の値を2倍にすることでプラスされていきます。
50=-1, 100=±0, 200=+1, 400=+2, 800=+3 ・・・
絞りとシャッタースピードの増減幅は計算式があるみたいですが、覚えるのは慣れないと難しいかもしれません。
以上、簡単ですけど自分なりにまとめました。
絞りやシャッタースピードの間隔など、もっと詳しく知りたい方は以下のサイトがおすすめです。今回参考にさせていただきました。
また、こちらのサイトで簡単に計算をすることができます
項目の値が違っても同じEVになるの?
なります!以下の画像を見比べてください。
ISO、Av、SSが違ったとしても増減値の合計(EV)が一緒なら明るさも同じ!
Exposureとの違い
ではExposureをVolumeで設定する場合とカメラで設定する場合は何が違うのか説明します。
Sceneビューに適用されるかどうか
VolumeのExposureは非Run Time上でもExposureの値が適用されます。
つまりSceneビューでもGameビューでも設定した値になるということです。
Physical CameraではGameビューだけに適用されます。
自動露出設定ができる
Volume側でAutomaticを設定することで、シーンの光量が変更されたときに自動で露出値を設定してくれます。これはPhysical Cameraではできないことです。
現実の値を反映できる
これが一番のPhysical Cameraを利用するメリットだと思います。撮った写真(シーン)を忠実に再現したい場合、Camera設定をそのまま入力するだけですぐに映り方を再現できます。
背景をぼかす
先ほど絞りはボケや被写体深度を調節できると言いました。それはVolumeのDepth Of Fieldを設定することで実現可能です。
被写体やそれ以外をぼかせることが可能になります。
やり方
GlobalのVolumeに以下の項目をOverrideします。Focus ModeはUse Physical Cameraに変更します。
以下はDepth of Fieldをつけた状態で2パターンの13EVの画像です。
調節が下手で上手くUnityちゃんにピントを合わせきれてないですが、Physical Cameraでボケ感なども再現することが可能になりました。
ちなみにDepth of FieldのFocus Distanceでピントを合わせることができます。むしろピントはこっちで合わせるのが正解なのかも?もう少しカメラの勉強が必要になりそうです。
Unityちゃんを可愛く撮影することができました!
感想
今回Physical Cameraを触ってみた感想としては、各値に対する露出度計算の再現度はすげー!とは思いました。
ただ、普段はあまり使わないだろうなと思います笑
ボケ感もDepth of Fieldで設定できるし、VolumeのExposureのほうが自動で設定できて正直楽です。
とはいえ、今まで適当にいい感じにしていたExposureの算出方法もわかって勉強になりました。
今回も長い記事にお付き合いいただき、ありがとうございました。
リアルでも写真撮るの上手くなりたいです。
それでは