天空反射
在 Azure 遠端轉譯中,會使用天空紋理來實際照亮物件。 針對擴增實境應用程式,此紋理應類似於您的真實世界周圍,讓物件看起來更有說服力。 本文說明如何變更天空紋理。 Sky 只會影響 PBR 材質的轉譯。 色彩材質和點雲端不會受到影響。
注意
天空紋理也稱為「環境對應」。 這些詞彙可交換使用。
物件光源
Azure 遠端轉譯會採用「以物理為基礎的轉譯」(PBR) 來進行實際的光源計算。 雖然您可以將光源新增至場景,但是使用良好的天空紋理會有最佳的影響。
下列影像顯示僅使用天空紋理時,不同表面的光源結果:
粗糙度 | 0 | 0.25 | 0.5 | 0.75 | 1 |
---|---|---|---|---|---|
非金屬 | |||||
Metal |
如需光源模型的詳細資訊,請參閱材質章節。
重要
Azure 遠端轉譯僅針對光源模型使用天空紋理。 不會將天空轉譯為背景,因為擴增實境應用程式已經有適當的背景,也就是真實世界。
變更天空紋理
若要變更環境對應,您只需要載入紋理並且變更工作階段的 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。
Cube 環境對應
如需參考,以下是未包裝的立方體貼圖:
使用 RenderingSession.Connection.LoadTextureAsync
/ LoadTextureFromSasAsync
與 TextureType.CubeMap
來載入立方體貼圖紋理。
球體環境對應
使用 2D 紋理作為環境對應時,影像必須在球面座標空間中。
使用具有 TextureType.Texture2D
的 RenderingSession.Connection.LoadTextureAsync
來載入球面環境對應。
內建環境對應
Azure 遠端轉譯提供一些永遠可供使用的內建環境對應。 所有內建的環境對應都是立方體貼圖。
識別碼 | 描述 | 範例說明 |
---|---|---|
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 相同 |