Version: 2023.2
言語: 日本語
カスタムレンダーパイプラインでのシンプルなレンダーループの作成
複数のカメラを使用する

カメラ

Unity のシーンは、3次元空間にあるゲームオブジェクトを表現しています。視る人の画面は 2 次元なので、ビューをキャプチャし、それを “平ら” にして表示する必要があります。これにはカメラを使います。Unity では、Camera コンポーネント をゲームオブジェクトに加えてカメラを作成します。

カメラが映すものを定義する

カメラが映すものは、Transform と Camera コンポーネントによって定義されます。Transform の位置で視点が決まり、前方向 (Z) 軸で表示方向が決まり、上方向 (Y) 軸で画面の上端が決まります。Camera コンポーネントの設定は、ビュー内に入る領域のサイズと形状を定義します。これらのパラメーターを設定することで、カメラが現在 “見ている” ものを画面に表示することができます。ゲームオブジェクトが移動回転すると、それに合わせて表示されるビューも移動回転します。

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

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

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

表示領域の形

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

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

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

カメラビューに背景を設定する

カメラがシーンを描画する前に、オブジェクト間の空き領域に見える背景をカメラにどう処理させるかを設定することができます。

例えば、背景をフラットカラーで塗りつぶしてからその上にシーンをレンダリングしたり、空や遠くの背景を描いたり、前のフレームの内容を残したりすることもできます。この設定の詳細については、カメラBackground プロパティを参照してください。空の描画については、 を参照してください。

カスタムレンダーパイプラインでのシンプルなレンダーループの作成
複数のカメラを使用する