플랫폼별 가이드
Android (Kotlin/자바)
Android NDK (C)
Unity (AR Foundation)
Unreal Engine

현실적인 AR 환경을 만드는 데 중요한 부분은 조명을 올바르게 설정하는 것입니다. 가상 객체에 그림자가 없거나 주변 공간을 반영하지 않는 반짝이는 머티리얼이 있는 경우 사용자는 이유를 설명할 수 없더라도 객체가 제대로 맞지 않는다고 느낄 수 있습니다. 이는 인간이 환경에서 객체가 조명되는 방식에 관한 단서를 무의식적으로 인식하기 때문입니다. 밝기 추정 API 는 이러한 단서를 위해 지정된 이미지를 분석하여 장면의 조명에 관한 세부정보를 제공합니다. 그런 다음 가상 객체를 렌더링할 때 이 정보를 사용하여 배치된 장면과 동일한 조건에서 조명하여 사용자의 몰입도를 높일 수 있습니다.
조명 단서
밝기 추정 API는 가상 객체를 렌더링할 때 다양한 조명 단서를 모방할 수 있는 세부 데이터를 제공합니다. 이러한 단서는 그림자, 주변광, 음영, 반사 하이라이트, 반사입니다.
그림자
그림자는 종종 방향성이 있으며 시청자에게 광원이 어디에서 오는지 알려줍니다.
주변광
주변광은 환경 주변에서 들어오는 전반적인 확산광으로 모든 것을 볼 수 있게 해줍니다.
음영
음영은 빛의 강도입니다. 예를 들어 동일한 객체의 여러 부분이 시청자를 기준으로 하는 각도와 광원과의 근접성에 따라 동일한 장면에서 다양한 수준의 음영을 가질 수 있습니다.
반사 하이라이트
반사 하이라이트는 광원을 직접 반사하는 표면의 반짝이는 부분입니다. 객체의 하이라이트는 장면에서 시청자의 위치에 따라 변경됩니다.
기분 변화
표면에 반사 (반사율이 높음) 또는 확산 (반사율이 낮음) 속성이 있는지에 따라 빛이 표면에서 다르게 반사됩니다. 예를 들어 금속 공은 반사율이 높고 주변 환경을 반사하는 반면, 무광택 회색으로 칠해진 다른 공은 확산됩니다. 대부분의 실제 객체는 이러한 속성의 조합을 가지고 있습니다. 긁힌 볼링공이나 많이 사용한 신용카드를 생각해 보세요.
반사 표면은 주변 환경의 색상도 포착합니다. 객체의 색상은 환경의 색상에 직접적인 영향을 받을 수 있습니다. 예를 들어 파란색 방에 있는 흰색 공은 푸르스름한 색조를 띱니다.
환경 HDR 모드
이러한 모드는 방향성 조명, 그림자, 반사 하이라이트, 반사에 대한 상세하고 현실적인 밝기 추정을 허용하는 별도의 API로 구성됩니다.
환경 HDR 모드는 머신러닝을 사용하여 카메라 이미지를 실시간으로 분석하고 환경 조명을 합성하여 가상 객체의 현실적인 렌더링을 지원합니다.
이 밝기 추정 모드는 다음을 제공합니다.
기본 방향성 조명. 기본 광원을 나타냅니다. 그림자를 드리우는 데 사용할 수 있습니다.
주변 구면 조화 함수. 장면에 남아 있는 주변광 에너지를 나타냅니다.
HDR 큐브맵. 반짝이는 금속 객체에서 반사를 렌더링하는 데 사용할 수 있습니다.
이러한 API는 다양한 조합으로 사용할 수 있지만 가장 현실적인 효과를 위해 함께 사용하도록 설계되었습니다.
기본 방향성 조명
기본 방향성 조명 API는 장면의 기본 광원의 방향과 강도를 계산합니다. 이 정보를 사용하면 장면의 가상 객체가 적절하게 배치된 반사 하이라이트를 표시하고 다른 보이는 실제 객체와 일관된 방향으로 그림자를 드리울 수 있습니다.
작동 방식을 보려면 동일한 가상 로켓의 다음 두 이미지를 참고하세요. 왼쪽 이미지에는 로켓 아래에 그림자가 있지만 방향이 장면의 다른 그림자와 일치하지 않습니다. 오른쪽 로켓에서 그림자는 올바른 방향을 가리킵니다. 미묘하지만 중요한 차이점이며 그림자의 방향과 강도가 장면의 다른 그림자와 더 잘 일치하므로 로켓이 장면에 배치됩니다.

기본 광원 또는 조명된 객체가 움직이면 객체의 반사 하이라이트가 광원을 기준으로 실시간으로 위치를 조정합니다.
방향성 그림자는 실제와 마찬가지로 기본 광원의 위치를 기준으로 길이와 방향을 조정합니다. 이 효과를 설명하기 위해 가상 마네킹과 실제 마네킹이라는 두 마네킹을 생각해 보세요. 왼쪽의 마네킹은 가상 마네킹입니다.

주변 구면 조화 함수
기본 방향성 조명의 빛 에너지 외에도 ARCore는 장면의 모든 방향에서 들어오는 전반적인 주변광을 나타내는 구면 조화 함수를 제공합니다. 렌더링 중에 이 정보를 사용하여 가상 객체의 정의를 가져오는 미묘한 단서를 추가합니다.
동일한 로켓 모델의 다음 두 이미지를 참고하세요. 왼쪽의 로켓은 기본 방향성 조명 API에서 감지한 밝기 추정 정보를 사용하여 렌더링됩니다. 오른쪽의 로켓은 기본 방향성 조명 및 주변 구면 조화 함수 API에서 감지한 정보를 사용하여 렌더링됩니다. 두 번째 로켓은 시각적 정의가 더 명확하고 장면에 더 원활하게 혼합됩니다.

HDR 큐브맵
HDR 큐브맵을 사용하여 반짝이는 금속 표면과 같이 광택이 중간에서 높은 가상 객체에 현실적인 반사를 렌더링합니다. 큐브맵은 객체의 음영과 모양에도 영향을 미칩니다. 예를 들어 파란색 환경으로 둘러싸인 반사 객체의 머티리얼은 파란색 색조를 반사합니다. HDR 큐브맵을 계산하려면 약간의 추가 CPU 계산이 필요합니다.
HDR 큐브맵을 사용해야 하는지 여부는 객체가 주변 환경을 반사하는 방식에 따라 다릅니다. 가상 로켓은 금속이므로 주변 환경을 직접 반사하는 강력한 반사 구성요소가 있습니다. 따라서 큐브맵의 이점을 누릴 수 있습니다. 반면에 무광택 회색 머티리얼이 있는 가상 객체에는 반사 구성요소가 전혀 없습니다. 색상은 주로 확산 구성요소에 따라 다르며 큐브맵의 이점을 누릴 수 없습니다.
아래 로켓을 렌더링하는 데 세 가지 환경 HDR API가 모두 사용되었습니다. HDR 큐브맵은 반사 단서를 사용 설정하고 장면에서 객체를 완전히 배치하는 하이라이트를 추가합니다.

다음은 조명이 다른 환경에서 동일한 로켓 모델입니다. 이러한 모든 장면은 방향성 그림자가 적용된 세 가지 API의 정보를 사용하여 렌더링되었습니다.

주변 강도 모드
주변 강도 모드는 지정된 이미지의 평균 픽셀 강도와 색상 보정 스칼라를 결정합니다. 정확한 조명이 중요하지 않은 사용 사례(예: 조명이 구워진 객체)에 사용하도록 설계된 대략적인 설정입니다.
픽셀 강도
장면의 조명의 평균 픽셀 강도를 캡처합니다. 이 조명을 전체 가상 객체에 적용할 수 있습니다.
색상
각 개별 프레임의 화이트 밸런스를 감지합니다. 그런 다음 가상 객체를 색상 보정하여 장면의 전반적인 색상에 더 원활하게 통합할 수 있습니다.
환경 프로브
환경 프로브는 360도 카메라 뷰를 큐브 맵과 같은 환경 텍스처로 구성합니다. 그런 다음 이러한 텍스처를 사용하여 가상 객체(예: 방을 '반사'하는 가상 금속 공)를 현실적으로 조명할 수 있습니다.