Version: 2020.2
言語: 日本語
スクリプタブルレンダーパイプラインバッチャー
複数のカメラを使用する

カメラ

Unity のシーンは、3次元空間内にオブジェクトを配置し、移動することで作成されます。視る人の画面は 2次元ですので、ビューをキャプチャし、それを「平ら」にした上で表示する必要があります。これは、Camera を使って行います。

カメラはシーン空間でビューを定義するオブジェクトです。オブジェクトの位置は視点を定義します。また、オブジェクトの前方向 (Z軸) と上方向 (Y軸) は、視線の方向とスクリーンの上をそれぞれ定義します。Camera コンポーネント は、ビュー内の領域の大きさと形も定義します。これらのパラメーターを設定すると、カメラに現在「映る」ものをスクリーンに表示することができます。カメラオブジェクトが移動し回転すると、それに応じて、表示されるビューも移動し回転します。

透視投影カメラと平行投影カメラ

同じシーンの透視投影モード (左) と平行投影モード (右)
同じシーンの透視投影モード (左) と平行投影モード (右)

現実世界のカメラや人間の目では、視点から離れている物体ほどより小さく見えます。この効果は 透視投影 としてよく知られており、芸術やコンピューターグラフィックスで広く使用され、リアルなシーンを作成するために重要です。当然、Unity は透視投影カメラをサポートしています。しかし目的によっては、透視投影でないビューをレンダリングしたい場合があります。例えば、あえて現実の見え方とは違う表現方法の地図や情報画面を作成したい場合などです。距離が増加してもオブジェクトを縮小しないカメラは 平行投影 と呼ばれます。Unity のカメラは、平行投影もサポートしています。シーンを見るための perspective と orthographic 各モードは、カメラの 投影 としても知られています。(上のシーンは BITGEM から出典)

表示領域の形

透視投影カメラも平行投影カメラも、両方とも現在の位置からどこまで「映す」ことができるのかという制限があります。この制限はカメラの前方 (Z) 方向に対して垂直な面によって、定義されます。これは、カメラからより離れたオブジェクトを「クリップ」したので、ファークリップ面 と呼ばれます (すなわち、レンダリングからは除外)。これに対応するカメラに近い ニアクリップ面 もあります。カメラが表示可能な範囲は、2つの面の間です。

透視投影でない場合、オブジェクトはそれらの距離に関係なく、同じサイズのように見えます。これは、つまり平行投影カメラの視界の範囲が、2つのクリップ面を延長して作った直方体によって定義されているということです。

透視投影が使用される場合、オブジェクトはカメラから離れるにつれてサイズが小さくなっていくように見えます。これは、距離が増加すると、シーンの見える範囲全体の高さと幅が増加することを意味します。透視投影カメラの視野容積は、ボックス型ではなく、カメラの位置を天頂とし、ファークリップ面を底面とする四角錐型になります。実際には、上部がニアクリップ面でカットされるので、正確には四角錐ではありません。この種の先端を切った四角錐の形状は、錐台 として知られています。その高さは一定ではないので、錐台は、高さと幅の比率 ( アスペクト比 ) と、天頂部における上部と下部の間の角度 ( 視野角FOV ) で定義されます。詳細な説明は、視錐台を理解する を参照してください。

スクリプタブルレンダーパイプラインバッチャー
複数のカメラを使用する