空の反射
Azure Remote Rendering では、オブジェクトをリアルに照明するために空のテクスチャが使用されます。 拡張現実アプリケーションでは、オブジェクトを説得力のあるものにするために、このテクスチャは現実世界の環境に似ている必要があります。 この記事では、空のテクスチャを変更する方法について説明します。 空は PBR 素材のレンダリングにのみ影響します。 色素材とポイント クラウドは影響を受けません。
Note
空のテクスチャは、"環境マップ" とも呼ばれます。 これらの用語は同じ意味で使用されます。
オブジェクトの照明
Azure Remote Rendering では、リアルな照明の計算を行うために "物理ベース レンダリング" (PBR) が採用されています。 ご利用のシーンに光源を追加することはできますが、適切な空のテクスチャを使用すれば、最大の効果を得られます。
次の図に、空のテクスチャのみを使用してさまざまな表面に照明をあてた結果を示します。
ラフネス | 0 | 0.25 | 0.5 | 0.75 | 1 |
---|---|---|---|---|---|
金属以外 | |||||
メタル |
照明モデルの詳細については、「素材」の章を参照してください。
重要
Azure Remote Rendering で空のテクスチャが使用されるのは、照明モデルの場合のみです。 拡張現実アプリケーションでは既に適切な背景 (現実世界) が用意されているので、空が背景としてレンダリングされることはありません。
空のテクスチャの変更
環境マップを変更するには、テクスチャを読み込んで、セッションの SkyReflectionSettings
を変更するだけです。
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 ストレージから読み込む場合は、LoadTextureAsync
バリアントを使用します。
空のテクスチャの種類
"キューブマップ" と "2D テクスチャ" を環境マップとして使用できます。
テクスチャはすべて、サポートされているテクスチャ形式とする必要があります。 空のテクスチャに対して mipmap を指定する必要はありません。
キューブ環境マップ
参照用に、ラップ解除されたキューブマップを次に示します。
キューブマップ テクスチャを読み込むには、TextureType.CubeMap
を RenderingSession.Connection.LoadTextureAsync
/ LoadTextureFromSasAsync
と一緒に使用します。
球環境マップ
2D テクスチャを環境マップとして使用する場合、球座標空間にイメージを置く必要があります。
球環境マップを読み込むには、TextureType.Texture2D
を RenderingSession.Connection.LoadTextureAsync
と一緒に使用します。
組み込みの環境マップ
Azure Remote Rendering には、常に使用可能な組み込みの環境マップがいくつか用意されています。 組み込み環境マップはすべてキューブマップです。
識別子 | 説明 | 図 |
---|---|---|
builtin://Autoshop | さまざまなストライプ ライト、明るい室内ベース照明 | |
builtin://BoilerRoom | 明るい室内ライト設定、複数のウィンドウ ライト | |
builtin://ColorfulStudio | 中程度の室内ライト設定でのさまざまな色付きライト | |
builtin://Hangar | 適度に明るいアンビエント ホール ライト | |
builtin://IndustrialPipeAndValve | 明暗のコントラストを使用した薄暗い室内設定 | |
builtin://Lebombo | 昼間のアンビエント ルーム ライト、明るいウィンドウ エリア ライト | |
builtin://SataraNight | 暗い夜の空と地面、周囲に多くのライトがある | |
builtin://SunnyVondelpark | 明るい太陽の光と影のコントラスト | |
builtin://Syferfontein | 澄んだスカイ ライトと、適度な地面照明 | |
builtin://TearsOfSteelBridge | 適度に変化する太陽と日陰 | |
builtin://VeniceSunset | 夕暮れに近づく夕日のライト | |
builtin://WhippleCreekRegionalPark | 明るく、緑がかっている、白色の明るい色調、淡色の地面 | |
builtin://WinterRiver | 明るい周囲光がある昼間 | |
builtin://DefaultSky | TearsOfSteelBridge と同じ |