적절한 조명 사용하기

플랫폼별 가이드

사실적인 AR 경험을 만들기 위한 핵심은 적절한 조명을 사용하는 것입니다. 가상 객체에 그림자가 없거나 주변 공간을 반사하지 않는 반짝이는 머티리얼이 있는 경우 사용자는 이유를 설명하지 못해도 객체가 잘 맞지 않는다고 느낄 수 있습니다. 이는 인간이 주변 환경에서 물체에 조명이 어떻게 비치는지에 관한 신호를 무의식적으로 인지하기 때문입니다. Lighting Estimation API는 이러한 신호를 찾기 위해 주어진 이미지를 분석하여 장면의 조명에 대한 자세한 정보를 제공합니다. 그러면 가상 객체를 렌더링할 때 이 정보를 사용하여 가상 객체를 배치하고 있는 장면과 동일한 조건에서 조명을 비울 수 있으므로 사용자의 안정과 참여를 유지할 수 있습니다.

조명 신호

Lighting Estimation API는 가상 객체를 렌더링할 때 다양한 광원 신호를 모방할 수 있는 자세한 데이터를 제공합니다. 이러한 신호에는 그림자, 주변광, 음영, 반사 하이라이트, 반사 등이 있습니다.

그림자

그림자는 방향을 제시하고 시청자에게 광원이 어디에서 비롯되는지 알려줍니다.

주변광

주변광은 환경 주변에서 들어오는 전체 확산광으로, 모든 것을 볼 수 있습니다.

음영

음영은 빛의 강도입니다. 예를 들어 뷰어를 기준으로 한 각도 및 광원에 대한 근접도에 따라 같은 물체의 여러 부분이 동일한 장면에서 서로 다른 수준의 음영을 가질 수 있습니다.

반사 하이라이트

반사 하이라이트는 광원을 직접 반사하는 표면의 반짝이는 조각입니다. 객체의 하이라이트는 장면에서 뷰어의 위치를 기준으로 변경됩니다.

기분 변화

표면에 반사성 (고반사) 또는 확산 (반사성 아님) 속성이 있는지에 따라 표면에서 빛이 다르게 반사됩니다. 예를 들어 금속 공은 반사도가 높으며 주변 환경을 반사하는 반면, 흐릿한 회색 공을 칠한 공은 확산됩니다. 실제 물체는 대부분 이러한 속성이 복합적으로 작용합니다. 흠집 있는 볼링공이나 잘 쓰이는 신용카드를 예로 들 수 있습니다.

반사 표면은 주변 환경에서 색상도 선택합니다. 객체의 색상은 환경의 색상에 직접적으로 영향을 받을 수 있습니다. 예를 들어 파란색 방에 있는 흰색 공은 푸른 빛을 냅니다.

주변광 HDR 모드

이러한 모드는 방향 광원, 그림자, 반사 하이라이트, 반사에 대해 상세하고 사실적인 광원 추정을 허용하는 별도의 API로 구성됩니다.

환경 HDR 모드는 머신러닝을 사용하여 실시간으로 카메라 이미지를 분석하고 환경 조명을 합성하여 가상 객체의 사실적인 렌더링을 지원합니다.

이러한 광도 추정 모드는 다음과 같은 기능을 제공합니다.

  1. 기본 방향 표시등. 기본 광원을 나타냅니다. 그림자를 드리우는 데 사용할 수 있습니다.

  2. 주변 구면 조화. 장면에 남아 있는 주변광 에너지를 나타냅니다.

  3. HDR 큐브맵 반짝이는 금속성 물체에 반사를 렌더링하는 데 사용할 수 있습니다.

이러한 API는 다양한 조합으로 사용할 수 있지만, 가장 현실적인 효과를 내기 위해 함께 사용하도록 설계되었습니다.

기본 방향 표시등

기본 방향 광원 API는 장면에 있는 기본 광원의 방향과 강도를 계산합니다. 이 정보를 통해 장면의 가상 객체는 적절한 위치에 있는 반사 하이라이트를 표시하고 보이는 다른 실제 객체와 일치하는 방향으로 그림자를 드리울 수 있습니다.

작동 원리를 알아보기 위해 동일한 가상 로켓의 두 이미지를 살펴보겠습니다. 왼쪽 이미지에서 로켓 아래에 그림자가 있지만 그 방향이 장면의 다른 그림자와 일치하지 않습니다. 오른쪽 로켓에서 그림자가 올바른 방향을 가리킵니다. 미묘하지만 중요한 차이이며, 그림자의 방향과 강도가 장면의 다른 그림자와 더 잘 어울리기 때문에 장면에 로켓이 그라운딩됩니다.

     

주 광원이나 조명이 있는 물체가 움직이면 물체의 반사 하이라이트가 광원을 기준으로 해당 위치를 실시간으로 조정합니다.

방향 그림자도 실제와 마찬가지로 주 광원의 위치를 기준으로 길이와 방향을 조정합니다. 이 효과를 설명하기 위해 가상 마네킹과 실제 마네킹을 살펴보겠습니다. 왼쪽에 있는 마네킹은 가상의 마네킹입니다.

주변 구면 조화

ARCore는 주 방향성 빛의 빛 에너지 외에도, 장면의 모든 방향에서 들어오는 전반적인 주변광을 나타내는 구면 고조파를 제공합니다. 렌더링 중에 이 정보를 사용하여 가상 객체의 정의를 가져오는 미묘한 신호를 추가합니다.

동일한 로켓 모델의 두 이미지를 생각해 보세요. 왼쪽의 로켓은 기본 방향 광원 API에서 감지한 광원 추정 정보를 사용하여 렌더링됩니다. 오른쪽의 로켓은 주 방향 광원과 주변 구면 고조파 API에서 감지한 정보를 사용하여 렌더링됩니다. 두 번째 로켓은 명확하게 더 선명한 화질을 제공하며 장면에 더 매끄럽게 어우러집니다.

     

HDR 큐브맵

HDR 큐브맵을 사용하면 반짝이는 금속 표면과 같이 중간 또는 고광택의 가상 객체에 사실적인 반사 효과를 렌더링할 수 있습니다. 큐브맵은 객체의 음영과 모양에도 영향을 미칩니다. 예를 들어 파란색 환경에 둘러싸인 반사 물체의 머티리얼은 푸른 색조를 반사합니다. HDR 큐브맵을 계산하려면 약간의 추가 CPU 계산이 필요합니다.

HDR 큐브맵 사용 여부는 객체가 주변 환경을 어떻게 반영하는지에 따라 다릅니다. 가상 로켓은 금속성이므로 주변 환경을 직접 반사하는 강력한 반사 구성 요소가 있습니다. 따라서 큐브맵의 이점을 활용할 수 있습니다. 반면에 흐린 회색 매트 소재가 있는 가상 객체에는 반사 구성요소가 전혀 없습니다. 색상은 주로 확산 구성요소에 따라 달라지므로 큐브맵을 사용하면 도움이 되지 않습니다.

아래 로켓을 렌더링하는 데 세 가지 환경 HDR API가 모두 사용되었습니다. HDR 큐브맵은 반사 신호를 가능하게 하고 장면에 객체를 완전히 그라운딩하는 것을 추가로 강조합니다.

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

           

주변 강도 모드

주변 강도 모드는 특정 이미지의 평균 픽셀 강도와 색상 보정 스칼라를 결정합니다. 베이킹된 조명이 있는 객체와 같이 정밀한 조명이 중요하지 않은 사용 사례를 위해 설계된 대략적인 설정입니다.

픽셀 강도

장면 내 조명의 평균 픽셀 강도를 캡처합니다. 이 광원은 전체 가상 객체에 적용할 수 있습니다.

색상

각 개별 프레임의 화이트 밸런스를 감지합니다. 그런 다음 가상 객체의 색상을 보정하여 장면의 전반적인 색상에 더 부드럽게 통합되도록 할 수 있습니다.

환경 프로브

환경 프로브는 360도 카메라 뷰를 큐브 맵과 같은 환경 텍스처로 구성합니다. 그런 다음 이러한 텍스처를 사용하여 가상 물체가 있는 방을 '반사'하는 가상 금속 공과 같은 가상 물체를 사실적으로 빛낼 수 있습니다.