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

キューブマップ

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

その他のテクニック

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

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