다음을 통해 공유


하늘 반사

Azure Remote Rendering에서 하늘 질감은 개체를 사실적으로 조명하는 데 사용됩니다. 증강 현실 애플리케이션의 경우 이 질감은 개체가 설득력 있게 보이도록 하기 위해 실제 환경과 비슷해야 합니다. 이 문서에서는 하늘 질감을 변경하는 방법을 설명합니다. 하늘은 PBR 재료의 렌더링에만 영향을 미칩니다. 색 재료포인트 클라우드는 영향을 받지 않습니다.

참고 항목

하늘 질감을 환경 맵이라고도 합니다. 이러한 용어는 같은 의미로 사용됩니다.

개체 조명

Azure Remote Rendering은 실제 조명 계산을 위해 PBR(물리 기반 렌더링)을 사용합니다. 장면에 광원을 추가할 수 있지만 좋은 하늘 질감을 사용하면 효과가 가장 큽니다.

아래 이미지는 하늘 질감 있는 다른 표면의 조명 결과를 보여 줍니다.

Roughness 0 0.25 0.5 0.75 1
비금속 유전체, 거칠기=0 Dielectric, Roughness=0.25 Dielectric, Roughness=0.5 유전체, 거칠기=0.75 유전체, 거칠기=1
Metal Metal, Roughness=0 금속, 거칠기=0.25 Metal, Roughness=0.5 금속, 거칠기=0.75 Metal, Roughness=1

조명 모델에 대한 자세한 내용은 재질 장을 참조하세요.

Important

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 Storage에서 로드할 때 LoadTextureAsync 변형을 사용합니다.

하늘 질감 형식

cubemaps2D 질감을 환경 맵으로 사용할 수 있습니다.

모든 질감은 지원되는 질감 형식에 있어야 합니다. 하늘 질감에 대한 mipmaps를 제공할 필요가 없습니다.

큐브 환경 맵

참고로 포장되지 않은 큐브맵은 다음과 같습니다.

래핑 해제된 cubemap

TextureType.CubeMap과 함께 RenderingSession.Connection.LoadTextureAsync/ LoadTextureFromSasAsync를 사용하여 cubemap 질감을 로드합니다.

구 환경 맵

2D 질감을 환경 맵으로 사용하는 경우 이미지는 구형 좌표 공간에 있어야 합니다.

구형 좌표로 된 하늘 이미지

TextureType.Texture2D와 함께 RenderingSession.Connection.LoadTextureAsync를 사용하여 구형 환경 맵을 로드합니다.

기본 제공 환경 맵

Azure Remote Rendering은 항상 사용할 수 있는 몇 가지 기본 제공 환경 맵을 제공합니다. 모든 기본 제공 환경 맵은 cubemaps입니다.

식별자 설명 그림
builtin://Autoshop 다양한 줄무늬 조명, 밝은 실내 기본 조명 개체를 점등하는 데 사용되는 자동 쇼핑 스카이박스
builtin://BoilerRoom 밝은 실내 조명 설정, 여러 창 조명 개체를 점등하는 데 사용되는 보일러룸 스카이박스
builtin://ColorfulStudio 중간 조명 실내 설정에서 다양한 색상의 조명 개체를 비추는 데 사용되는 ColorfulStudio 스카이박스
builtin://Hangar 적당히 밝은 주변 홀 조명 개체를 밝게 하는 데 사용되는 SmallHangar skybox
builtin://IndustrialPipeAndValve 밝게-어둡게 대비를 사용하는 어두운 실내 설정 개체를 비추는 데 사용되는 IndustrialPipeAndValve 스카이박스
builtin://Lebombo 주간 주변 실내 조명, 밝은 창 영역 조명 개체를 비추는 데 사용되는 Lebombo 스카이박스
builtin://SataraNight 주변 조명이 많은 어두운 밤 하늘 및 지면 개체를 비추는 데 사용되는 SataraNight 스카이박스
builtin://SunnyVondelpark 밝은 햇빛 및 그림자 대비 개체를 비추는 데 사용되는 SunnyVondelpark 스카이박스
builtin://Syferfontein 적당한 지면 조명이 있는 맑은 하늘 조명 개체를 밝게 하는 데 사용되는 Syferfontein skybox
builtin://TearsOfSteelBridge 적당히 변화하는 태양 및 그늘 개체를 비추는 데 사용되는 TearsOfSteelBridge 스카이박스
builtin://VeniceSunset 황혼에 근접한 저녁 일몰 조명 개체를 비추는 데 사용되는 VeniceSunset 스카이박스
builtin://WhippleCreekRegionalPark 밝고, 푸르스름한 녹색 및 흰색 광채, 흐릿한 지면 개체를 비추는 데 사용되는 휘플CreekRegionalPark 스카이박스
builtin://WinterRiver 밝은 주변광 조명이 있는 주간 개체를 비추는 데 사용되는 WinterRiver 스카이박스
builtin://DefaultSky TearsOfSteelBridge와 동일 개체를 밝게 하는 데 사용되는 DefaultSky skybox

API 설명서

다음 단계