キューブマップ (Cubemap) は、周囲の環境のリフレクションを表現する正方形テクスチャが 6 つで一組になったものです。オブジェクトを囲む仮想の立方体の面である 6 つの正方形は、 それぞれの面が、ワールド軸の各方向 (上・下・左・右・前・後) の景観を表します。
キューブマップは、オブジェクトの反射や周囲環境を表すためによく使用されます。例えば、スカイボックス や リフレクションプローブ にはキューブマップが頻繁に用いられます。
キューブマップの作成方法は、専用にレイアウトされたテクスチャ からインポートすることが望ましいです。
テクスチャのインポートの種類を Cubemap
に設定すれば、後は Unity が処理を行ってくれます。一般的に使用されるキューブマップのレイアウト
に対応しています。(ほとんどの場合、自動的に検知されます。)
縦横のクロス・レイアウトに加え、キューブマップ面の行と列の形式も使用可能です。
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 | スクリプトがピクセルデータにアクセスできるようにキューブマップを設定するかどうか |
キューブマップを作成するには、キューブマップテクスチャのインポートタイプ (上を参照) を使用することが望ましいと言えます。そのように設定すると、キューブマップのテクスチャデータが圧縮され、端の処理や光沢リフレクションのコンボリューションが実行でき、HDR キューブマップもサポートされます。
この他に、スクリプトを使用して Unity のシーンのコンテンツからキューブマップを生成する方法もあります。 関数 Camera.RenderToCubemap は、シーン内の好きな位置から6面の画像を記録することができます。 この関数のスクリプトレファレンスにあるサンプルコードを使用すれば、メニューコマンドを追加できるので、タスクをより簡単にすることができます。