Отражения неба
В Удаленной отрисовке Azure для реалистичного освещения объектов применяется текстура неба. Для приложений дополненной реальности эта текстура должна убедительно имитировать обстановку реального мира. В этой статье описано, как изменить текстуру неба. Небо влияет только на отрисовку материалов PBR. Цветовые материалы и облака точек не влияют.
Примечание.
Текстура неба также называется картой среды. Эти термины являются взаимозаменяемыми.
Освещение объекта
Удаленная отрисовка Azure использует физически корректную отрисовку для вычисления реалистичного освещения. Вы можете добавлять в сцену разные источники света, но хорошая текстура неба дает самый лучший результат.
На рисунках ниже показаны результаты освещения разных поверхностей только текстурой неба:
Неровность | 0 | 0,25 | 0,5 | 0.75 | 1 |
---|---|---|---|---|---|
Неметаллические | |||||
Металл |
Дополнительные сведения о модели освещения см. в главе о материалах.
Внимание
Удаленная отрисовка 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
вариант.
Типы текстур неба
Вы можете использовать в качестве карты среды cubemap или двухмерную текстуру.
Все текстуры должны иметь поддерживаемый формат текстуры. Для текстур неба не нужно предоставлять MIP-карты.
Кубические карты среды
Для справки ниже приведена распакованная карта куба:
Используйте RenderingSession.Connection.LoadTextureAsync
/ LoadTextureFromSasAsync
с TextureType.CubeMap
для загрузки текстур кубической карты (cubemap).
Сферические карты среды
При использовании двухмерной текстуры в качестве карты среды изображение должно находиться в пространстве сферических координат.
Используйте RenderingSession.Connection.LoadTextureAsync
с TextureType.Texture2D
для загрузки сферических карт среды.
Встроенные карты среды
Удаленная отрисовка Azure предоставляет несколько встроенных карт среды, которые всегда доступны. Все встроенные карты среды являются кубическими (cubemap).
Идентификатор | Description | Иллюстрация |
---|---|---|
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 |
Документация по API
- Свойство C# RenderingConnection.SkyReflectionSettings
- C++ RenderingConnection::SkyReflectionSettings()