Odbicia nieba
W usłudze Azure Remote Rendering tekstura nieba jest używana do realistycznego oświetlenia obiektów. W przypadku aplikacji rzeczywistości rozszerzonej ta tekstura powinna przypominać rzeczywiste otoczenie, aby obiekty wydawały się przekonujące. W tym artykule opisano sposób zmiany tekstury nieba. Niebo wpływa tylko na renderowanie materiałów PBR. Nie ma to wpływu na materiały kolorowe i chmury punktowe .
Uwaga
Tekstura nieba jest również określana jako mapa środowiska. Te terminy są używane zamiennie.
Oświetlenie obiektu
Usługa Azure Remote Rendering wykorzystuje renderowanie fizyczne (PBR) na potrzeby realistycznych obliczeń oświetlenia. Chociaż możesz dodać źródła światła do sceny, użycie dobrej tekstury nieba ma największy wpływ.
Na poniższych obrazach przedstawiono wyniki oświetlenia różnych powierzchni tylko z teksturą nieba:
Chropowatości | 0 | 0.25 | 0.5 | 0.75 | 1 |
---|---|---|---|---|---|
Bez systemu operacyjnego | |||||
Metal |
Aby uzyskać więcej informacji na temat modelu oświetlenia, zobacz rozdział materiały .
Ważne
Usługa Azure Remote Rendering używa tekstury nieba tylko dla modeli oświetlenia. Nie renderuje nieba jako tła, ponieważ aplikacje rzeczywistości rozszerzonej mają już odpowiednie tło - świat rzeczywisty.
Zmiana tekstury nieba
Aby zmienić mapę środowiska, wystarczy załadować teksturę i zmienić sesję 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");
}
});
}
Wariant LoadTextureFromSasAsync
jest używany powyżej, ponieważ jest ładowana wbudowana tekstura. Podczas ładowania z połączonych magazynów obiektów blob użyj wariantu LoadTextureAsync
.
Typy tekstur nieba
Mapy modułów i tekstury 2D można używać jako map środowiskowych.
Wszystkie tekstury muszą być w obsługiwanym formacie tekstury. Nie musisz dostarczać map mipmap dla tekstur nieba.
Mapy środowiska modułu
Aby uzyskać informacje na ten temat, oto rozpakowana mapa modułu:
Użyj polecenia RenderingSession.Connection.LoadTextureAsync
/ LoadTextureFromSasAsync
, TextureType.CubeMap
aby załadować tekstury mapy modułu.
Mapy środowiska sfery
W przypadku używania tekstury 2D jako mapy środowiska obraz musi znajdować się w przestrzeni współrzędnych sfericznych.
TextureType.Texture2D
Służy RenderingSession.Connection.LoadTextureAsync
do ładowania map środowisk sfericznych.
Wbudowane mapy środowiska
Usługa Azure Remote Rendering udostępnia kilka wbudowanych map środowiskowych, które są zawsze dostępne. Wszystkie wbudowane mapy środowiska to mapy modułów.
Identyfikator | opis | Ilustracja |
---|---|---|
builtin://Autoshop | Różne światła paskowe, jasne oświetlenie wewnętrznej bazy | |
builtin://BoilerRoom | Jasne ustawienie światła wewnętrznego, wiele świateł okiennych | |
builtin://ColorfulStudio | Różne kolorowe światła w średnim świetle w pomieszczeniu | |
builtin://Hangar | Umiarkowanie jasne światło sali otoczenia | |
builtin://IndustrialPipeAndValve | Przygaszone ustawienie wnętrz z jasnym ciemnym kontrastem | |
builtin://Lebombo | Pokój otoczenia w ciągu dnia, jasny obszar okna światła | |
builtin://SataraNight | Ciemne nocne niebo i ziemia z wieloma otaczającymi światłami | |
builtin://SunnyVondelpark | Jasny kontrast światła słonecznego i cienia | |
builtin://Syferfontein | Jasne światło nieba z umiarkowanym oświetleniem naziemnym | |
builtin://TearsOfSteelBridge | Umiarkowanie różne słońce i cień | |
builtin://VeniceSunset | Wieczorne światło zachodu słońca zbliża się zmierzch | |
builtin://WhippleCreekRegionalPark | Jasne, bujne zielone i białe odcienie światła, przyciemniony grunt | |
builtin://WinterRiver | Dzień z jasnym oświetleniem gruntowym | |
builtin://DefaultSky | Tak samo jak TearsOfSteelBridge |
Dokumentacja interfejsu API
- Właściwość C# RenderingConnection.SkyReflectionSettings
- C++ RenderingConnection::SkyReflectionSettings()