Table of Contents

スカイボックス ライト

初級 デザイナー プログラマー

スカイボックス ライトは、スカイボックスによって放射されるアンビエント ライトです。Stride は、スカイボックスのキューブマップを分析し、イメージベースのライティング (Wikipedia) を使用してライティングを生成します。

media/SkyboxLightOverview.png

スカイボックスを光源として使用するために、シーンにスカイボックスを実際に表示する必要はありません。たとえば、屋内の場所から空が一部分しか見えない場合 (部屋の窓を通して見る場合など)、スカイボックスを使用してシーンをライティングするのが望ましくないことがあります。アンビエント ライトはシャドウの影響を受けないので、屋内のスペースを含む、シーンのすべての部分をライティングします。

スカイボックスによるシーンのライティング方法

次の画像では、2 つの純粋な拡散マテリアルに対するアンビエント ライティングとスカイボックス ライティングの違いを示します。

| アンビエント ライティング | スカイボックス ライティング
| ---------------------------------------------------- | ------------------------------- | Ambient lighting | Skybox lighting.png | |
次の図では、金属プロパティと光沢プロパティが異なるマテリアルに対するスカイボックス ライティングの効果を示します。

マテリアル プラスティック 金属 100% 光沢 50% 金属 100% 光沢 100%
Material plastic Material 100% Gloss 100% Metal 100% Gloss 100%

スカイボックス テクスチャの色の反映に注目してください。

スカイボックス ライトをセットアップする

スカイボックスをライトとして使用するには、スカイボックス アセットを追加した後、ライト コンポーネントでそれを選択する必要があります。

  1. [Asset view]で Add asset をクリックします。

  2. [Miscellaneous] >[Skybox]の順に選択します。

    Choose asset type

    アセット ピッカーが開きます。

  3. プロジェクト アセットからスカイボックス テクスチャ (.dds ファイル) を選択し、[Ok]をクリックします。

    Choose texture

    指定したテクスチャでスカイボックス アセットが追加されます。

  4. スカイボックス ライトにするエンティティを選択します。

  5. [Properties grid] (既定では右側) で、[Add component]をクリックし、[Light] を選択します。

    Background component properties

  6. [Light]コンポーネントのプロパティで、[Light]の[Skybox]を選択します。

    Light component property

  7. 手のアイコンをクリックして、アセット ピッカーを開きます。

    No skybox asset selected

  8. 光源として使用するスカイボックス アセットを選択し、[OK]をクリックします。

    Asset picker

ライト コンポーネントは、スカイボックス アセットを使用してシーンをライティングします。

スカイボックス アセットのプロパティ

スカイボックスをライトとして使用すると、Stride はそれを、圧縮形式 (球面調和 (Wikipedia)) と、異なる種類のマテリアルをライティングするためのテクスチャの両方として使用します。両方の詳細を、スカイボックス アセットのプロパティで制御できます。

Skybox lighting properties

プロパティ 説明
CubeMap スカイボックスに対して使用されるキューブマップ アセットです
Specular Only スカイボックスを鏡面反射ライティングに対してのみ使用します
Diffuse SH Order 圧縮されたスカイボックスの詳細のレベルです。拡散ライティング (光沢のないマテリアル) に対して使用されます。Order5Order3 より詳細です
Specular CubeMap Size 鏡面反射ライティングに使用されるテクスチャのサイズです。テクスチャが大きいほど詳細になります。

スカイボックス ライトのプロパティ

media/SkyboxLightProperties.png

プロパティ 説明
Intensity ライトの強度です。
Culling Mask ライトによって影響を受けるエンティティ グループです。既定では、すべてのグループが影響を受けます。

コード例

次のコードは、スカイボックス ライトとその強度を変更します。

public Skybox skybox;
public void ChangeSkyboxParameters()
{
    // エンティティからライト コンポーネントを取得する
	var light = Entity.Get<LightComponent>();

	// ライト コンポーネントからスカイボックス ライトの設定を取得する
	var skyboxLight = light.Type as LightSkybox;

	// 既存のスカイボックスを置き換える
	skyboxLight.Skybox = skybox;

	// スカイボックス ライトの強度を変更する
	light.Intensity = 1.5f;
}

関連項目