空の反射

Azure Remote Rendering では、オブジェクトをリアルに照明するために空のテクスチャが使用されます。 拡張現実アプリケーションでは、オブジェクトを説得力のあるものにするために、このテクスチャは現実世界の環境に似ている必要があります。 この記事では、空のテクスチャを変更する方法について説明します。

Note

空のテクスチャは、"環境マップ" とも呼ばれます。 これらの用語は同じ意味で使用されます。

オブジェクトの照明

Azure Remote Rendering では、リアルな照明の計算を行うために "物理ベース レンダリング" (PBR) が採用されています。 ご利用のシーンに光源を追加することはできますが、適切な空のテクスチャを使用すれば、最大の効果を得られます。

次の図に、空のテクスチャのみを使用してさまざまな表面に照明をあてた結果を示します。

Roughness 0 0.25 0.5 0.75 1
金属以外 Dielectric, Roughness=0 Dielectric, Roughness=0.25 Dielectric, Roughness=0.5 Dielectric, Roughness=0.75 Dielectric, Roughness=1
金属 Metal, Roughness=0 Metal, Roughness=0.25 Metal, Roughness=0.5 Metal, Roughness=0.75 Metal, Roughness=1

照明モデルの詳細については、「素材」の章を参照してください。

重要

Azure Remote Rendering で空のテクスチャが使用されるのは、照明モデルの場合のみです。 拡張現実アプリケーションでは既に適切な背景 (現実世界) が用意されているので、空が背景としてレンダリングされることはありません。

空のテクスチャの変更

環境マップを変更するには、テクスチャを読み込んで、セッションの を変更するだけです。

async void ChangeEnvironmentMap(RenderingSession session)
{
    try
    {
        Texture skyTex = await session.Connection.LoadTextureFromSasAsync(new LoadTextureFromSasOptions("builtin://VeniceSunset", TextureType.CubeMap));
        session.Connection.SkyReflectionSettings.SkyReflectionTexture = skyTex;
    }
    catch (RRException exception)
    {
        System.Console.WriteLine($"Setting sky reflection failed: {exception.Message}");
    }
}
void ChangeEnvironmentMap(ApiHandle<RenderingSession> session)
{
    LoadTextureFromSasOptions params;
    params.TextureType = TextureType::CubeMap;
    params.TextureUri = "builtin://VeniceSunset";
    session->Connection()->LoadTextureFromSasAsync(params, [&](Status status, ApiHandle<Texture> res) {
        if (status == Status::OK)
        {
            ApiHandle<SkyReflectionSettings> settings = session->Connection()->GetSkyReflectionSettings();
            settings->SetSkyReflectionTexture(res);
        }
        else
        {
            printf("Texture loading failed!\n");
        }
    });
}

組み込みのテクスチャが読み込まれるため、上記の LoadTextureFromSasAsync バリアントが使用されることにご注意ください。 リンクされた BLOB ストレージから読み込む場合は、 バリアントを使用します。

空のテクスチャの種類

" キューブマップ " と "2D テクスチャ" を環境マップとして使用できます。

テクスチャはすべて、サポートされているテクスチャ形式とする必要があります。 空のテクスチャに対して mipmap を指定する必要はありません。

キューブ環境マップ

参照用に、ラップされていないキューブマップを次に示します。

An unwrapped cubemap

キューブマップ テクスチャを読み込むには、TextureType.CubeMapRenderingSession.Connection.LoadTextureAsync/ LoadTextureFromSasAsync と一緒に使用します。

球環境マップ

2D テクスチャを環境マップとして使用する場合、球座標空間にイメージを置く必要があります。

A sky image in spherical coordinates

球環境マップを読み込むには、TextureType.Texture2DRenderingSession.Connection.LoadTextureAsync と一緒に使用します。

組み込みの環境マップ

Azure Remote Rendering には、常に使用可能な組み込みの環境マップがいくつか用意されています。 組み込み環境マップはすべてキューブマップです。

識別子 説明
builtin://Autoshop さまざまなストライプ ライト、明るい室内ベース照明 Autoshop skybox used to light an object
builtin://BoilerRoom 明るい室内ライト設定、複数のウィンドウ ライト BoilerRoom skybox used to light an object
builtin://ColorfulStudio 中程度の室内ライト設定でのさまざまな色付きライト ColorfulStudio skybox used to light an object
builtin://Hangar 適度に明るいアンビエント ホール ライト SmallHangar skybox used to light an object
builtin://IndustrialPipeAndValve 明暗のコントラストを使用した薄暗い室内設定 IndustrialPipeAndValve skybox used to light an object
builtin://Lebombo 昼間のアンビエント ルーム ライト、明るいウィンドウ エリア ライト Lebombo skybox used to light an object
builtin://SataraNight 暗い夜の空と地面、周囲に多くのライトがある SataraNight skybox used to light an object
builtin://SunnyVondelpark 明るい太陽の光と影のコントラスト SunnyVondelpark skybox used to light an object
builtin://Syferfontein 澄んだスカイ ライトと、適度な地面照明 Syferfontein skybox used to light an object
builtin://TearsOfSteelBridge 適度に変化する太陽と日陰 TearsOfSteelBridge skybox used to light an object
builtin://VeniceSunset 夕暮れに近づく夕日のライト VeniceSunset skybox used to light an object
builtin://WhippleCreekRegionalPark 明るく、緑がかっている、白色の明るい色調、淡色の地面 WhippleCreekRegionalPark skybox used to light an object
builtin://WinterRiver 明るい周囲光がある昼間 WinterRiver skybox used to light an object
builtin://DefaultSky TearsOfSteelBridge と同じ DefaultSky skybox used to light an object

API のドキュメント

次のステップ