Reflektioner av himmel
I Azure Remote Rendering används en skystruktur för att tända objekt realistiskt. För program för förhöjd verklighet bör den här strukturen likna din verkliga omgivning för att få objekt att verka övertygande. Den här artikeln beskriver hur du ändrar himlens struktur. Himlen påverkar bara återgivningen av PBR-material. Färgmaterial och punktmoln påverkas inte.
Kommentar
Himlens struktur kallas även för en miljökarta. Dessa termer används omväxlande.
Objektbelysning
Azure Remote Rendering använder fysiskt baserad rendering (PBR) för realistiska ljusberäkningar. Även om du kan lägga till ljuskällor till din scen, har användning av en bra himmelsstruktur störst inverkan.
Bilderna nedan visar resultat av belysning av olika ytor endast med en himmelsstruktur:
Strävhet | 0 | 0.25 | 0,5 | 0.75 | 1 |
---|---|---|---|---|---|
Icke-metall | |||||
Metall |
Mer information om belysningsmodellen finns i materialkapitlet .
Viktigt!
Azure Remote Rendering använder endast himlens struktur för belysningsmodeller. Det återger inte himlen som en bakgrund, eftersom Augmented Reality-program redan har en riktig bakgrund - den verkliga världen.
Ändra himlens struktur
Om du vill ändra miljökartan behöver du bara läsa in en struktur och ändra sessionens 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");
}
});
}
Varianten LoadTextureFromSasAsync
används ovan eftersom en inbyggd struktur läses in. Använd varianten LoadTextureAsync
när du läser in från länkade bloblagringar i stället.
Sky-strukturtyper
Du kan använda både kubkartor och 2D-texturer som miljökartor.
Alla texturer måste ha ett texturformat som stöds. Du behöver inte tillhandahålla mipmaps för sky-texturer.
Kubmiljökartor
Här är en oöppnad kubkarta som referens:
Använd RenderingSession.Connection.LoadTextureAsync
/ LoadTextureFromSasAsync
med TextureType.CubeMap
för att läsa in kubkartans texturer.
Sfärmiljökartor
När du använder en 2D-struktur som en miljökarta måste bilden vara i sfäriskt koordinatutrymme.
Använd RenderingSession.Connection.LoadTextureAsync
med TextureType.Texture2D
för att läsa in sfäriska miljökartor.
Inbyggda miljökartor
Azure Remote Rendering innehåller några inbyggda miljökartor som alltid är tillgängliga. Alla inbyggda miljökartor är kubkartor.
Identifierare | beskrivning | Illustration |
---|---|---|
builtin://Autoshop | Variation av randljus, ljus inomhusbasbelysning | |
builtin://BoilerRoom | Ljus inomhusljusinställning, flera fönsterljus | |
builtin://ColorfulStudio | Varierande färgade lampor i medelljus inomhusmiljö | |
builtin://Hangar | Måttligt ljust omgivande hallljus | |
builtin://IndustrialPipeAndValve | Dim inomhusinställning med ljus-mörk kontrast | |
builtin://Lebombo | Dagtid omgivande rum ljus, ljust fönster område ljus | |
builtin://SataraNight | Mörk natthimmel och mark med många omgivande ljus | |
builtin://SunnyVondelpark | Starkt solljus och skuggkontrast | |
builtin://Syferfontein | Klar himmelsljus med måttlig markbelysning | |
builtin://TearsOfSteelBridge | Måttligt varierande sol och skugga | |
builtin://VeniceSunset | Kvällssolens ljus närmar sig skymningen | |
builtin://WhippleCreekRegionalPark | Ljusa, grönskande och vita ljustoner, nedtonad mark | |
builtin://WinterRiver | Dagtid med starkt omgivande markljus | |
builtin://DefaultSky | Samma som TearsOfSteelBridge |
API-dokumentation
- C# RenderingConnection.SkyReflectionSettings-egenskap
- C++ RenderingConnection::SkyReflectionSettings()