キューブマップ (Cubemap) は、周囲の環境のリフレクションを表現する正方形テクスチャが 6 つで一組になったものです。オブジェクトを囲む仮想の立方体の面である 6 つの正方形は、 それぞれの面が、ワールド軸の各方向 (上・下・左・右・前・後) の景観を表します。
キューブマップは、オブジェクトの反射や周囲環境を表すためによく使用されます。例えば、スカイボックス や リフレクションプローブ にはキューブマップが頻繁に用いられます。
キューブマップを作成する最も簡単な方法は、特別にレイアウトされた テクスチャ からそれらをインポートすることです。Project ウィンドウでテクスチャを選択し、Inspector ウィンドウで Import Settings を表示します。Import Settings で、Texture Type を Default、Normal Map、Single Channel のいずれかに設定します。そして、 Texture Shape で Cube を選択します。すると、Unity は自動的にテクスチャをキューブマップに設定します。
いくつかのよく使用されるキューブマップレイアウトがサポートされています (大抵、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面の画像を記録することができます。 この関数のスクリプトレファレンスにあるサンプルコードを使用すれば、メニューコマンドを追加できるので、タスクをより簡単にすることができます。
2018–01–31 限られた 編集レビュー で修正されたページ