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

Cubemap

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

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

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

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

キューブマップを作成する最も簡単な方法は、特別にレイアウトされた テクスチャ からそれらをインポートすることです。Project ウィンドウでテクスチャを選択し、Import ウィンドウで Import Settings を表示します。Import Settings で、Texture TypeDefaultNormal MapSingle Channel のいずれかに設定します。そして、 Texture ShapeCube を選択します。すると、Unity は自動的にテクスチャをキューブマップに設定します。

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

よく使用されるキューブマップレイアウトのいくつかがサポートされます (たいてい、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 面の画像を記録することができます。 この関数のスクリプトレファレンスページにある参考コードを使用すれば メニューコマンドを追加できるので、タスクをより簡単にすることができます。


2018–01–31 限られた 編集レビュー で修正されたページ

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