コンポーネントのレンダリング
オクルージョンエリア

Cubemap

キューブマップ(Cubemap) は、周囲の環境を反射する正方形テクスチャが6つで一組になったものです。 6つの正方形のそれぞれが、オブジェクトを囲む架空の立方体の面になります。 それぞれの面が、ワールド軸の各方向 (上・下・左・右・前・後)の景観を現します。

キューブマップは、オブジェクトの反射や周囲環境を表すためによく使用されます。例えば、 スカイボックスリフレクションプローブ にはキューブマップが頻繁に用いられます。

キューブマップを使用したスカイボックスと反射
キューブマップを使用したスカイボックスと反射

テクスチャからキューブマップを作成する

キューブマップの作成方法は、専用にレイアウトされたテクスチャ からインポートすることが望ましいです。 テクスチャのインポートの種類を Cubemap に設定すれば、後は Unity が処理を行ってくれます。一般的に使用されるキューブマップのレイアウト に対応しています。(ほとんどの場合、自動的に検知されます。)

キューブマップ テクスチャのインポートの種類
キューブマップ テクスチャのインポートの種類

縦横のクロス・レイアウトに加え、キューブマップ面の行と列の形式も使用可能です。

LatLong レイアウト (緯度・経度(Latitude-Longitude)、円筒形タイプ(Cylindrical)とも呼ばれる。) も頻繁に使用されます。パノラマ画像では このレイアウトがよく使用されます。

SphereMap(球状の環境マップ)画像も使用可能です。

デフォルトでは、Unity がインポートされたテクスチャのアスペクト比を判定し、上記の中からもっとも適切なレイアウトを選びます。 インポートが行われるとキューブマップが作成され、それをスカイボックスや反射に使用することができます。

Glossy Reflection は、リフレクション プローブ によって使用されるキューブマップテクスチャに便利です。 Glossy Reflection では、キューブマップのミップレベルが特殊な方法(specular convolution・鏡面反射コンボリューション)で処理されています。 これは平滑度の異なるいろいろな面からの反射をシミュレートするのにも使用できます。

平滑度の異なる面のリフレクション プローブに使用されたキューブマップ
平滑度の異なる面のリフレクション プローブに使用されたキューブマップ

旧キューブマップアセット

Unity では、6つの個々の テクスチャ からキューブマップを作成することもできます。 メニューから Assets > Create > Legacy > Cubemap を選択し、 インスペクターに6つのテクスチャをドラッグしてください。

旧キューブマップ インスペクター
旧キューブマップ インスペクター
プロパティー: 説明:
Right..Back Slots 各キューブマップ面のテクスチャ
Face Size キューブマップの各面の幅と高さ(ピクセル単位) このサイズに合うようにテクスチャのスケールが自動的に調節されます。
Mipmap ミップマップを作成するかどうか
Linear キューブマップがリニアカラーを使用するかどうか
Readable スクリプトがピクセルデータにアクセスできるようにキューブマップを設定するかどうか

(注) テクスチャのインポート種類として望ましい設定は “Cubemap” (上記参照)です。 “Cubemap” に設定すればキューブマップのテクスチャデータが圧縮され、端の処理や光沢反射のコンボリューションが実行でき、 HDR キューブマップも使用可能になります。

その他のテクニック

この他に、スクリプトを使用して Unity のシーンのコンテンツからキューブマップを生成する方法もあります。 関数 Camera.RenderToCubemap は、シーン内の好きな位置から6面の画像を記録することができます。 この関数のスクリプトレファレンスページにある参考コードを使用すれば メニューコマンドを追加できるので、タスクをより簡単にすることができます。

コンポーネントのレンダリング
オクルージョンエリア