적절한 조명 사용하기

플랫폼별 가이드

현실감 있는 AR 환경을 만드는 데 중요한 부분은 조명을 올바르게 설정하는 것입니다. 가상 물체에 그림자가 없거나 주변 공간을 반사하지 않는 반짝이는 재질이 사용된 경우 사용자는 이유를 설명할 수 없더라도 물체가 잘 맞지 않는다고 느낄 수 있습니다. 이는 인간이 주변 환경에서 물체가 어떻게 조명되는지에 관한 신호를 무의식적으로 인식하기 때문입니다. Lighting Estimation API는 이러한 신호를 찾기 위해 주어진 이미지를 분석하여 장면의 조명에 관한 자세한 정보를 제공합니다. 그런 다음 가상 객체를 렌더링할 때 이 정보를 사용하여 가상 객체가 배치된 장면과 동일한 조건에서 가상 객체를 밝혀 사용자의 몰입도를 높일 수 있습니다.

조명 신호

Lighting Estimation API는 가상 객체를 렌더링할 때 다양한 조명 신호를 모방할 수 있는 세부적인 데이터를 제공합니다. 이러한 신호는 그림자, 주변광, 음영, 스펙큘러 하이라이트, 반사입니다.

그림자

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

주변광

주변광은 주변에서 들어와 모든 것을 볼 수 있게 하는 전체적인 확산광입니다.

음영

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

스펙큘러 하이라이트

반사 하이라이트는 광원을 직접 반사하는 표면의 반짝이는 조각입니다. 객체의 강조 표시는 장면에서 시청자의 위치에 따라 달라집니다.

돌아보기

빛은 표면의 반사광 (반사율이 높음) 또는 확산광 (반사되지 않음) 속성에 따라 다르게 표면에서 튀게 됩니다. 예를 들어 금속 공은 반사도가 높으며 주변 환경을 반사하는 반면, 흐릿한 회색 공을 칠한 공은 확산됩니다. 대부분의 실제 객체는 이러한 속성을 조합하여 갖습니다. 스크래치가 난 볼링공이나 오래 사용한 신용카드를 생각해 보세요.

반사 표면은 주변 환경의 색상도 선택합니다. 객체의 색상은 환경의 색상에 직접 영향을 받을 수 있습니다. 예를 들어 파란색 방에 있는 흰색 공은 푸르스름한 색조를 띌 것입니다.

주변광 HDR 모드

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

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

이 조명 추정 모드는 다음을 제공합니다.

  1. 주향등 기본 광원을 나타냅니다. 그림자를 만드는 데 사용할 수 있습니다.

  2. 앰비언트 구면 조화 함수. 장면에 남아 있는 주변광 에너지를 나타냅니다.

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

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

기본 방향 표시등

기본 방향 광원 API는 장면에 있는 기본 광원의 방향과 강도를 계산합니다. 이 정보를 사용하면 장면의 가상 객체가 적절하게 배치된 스펙큘러 하이라이트를 표시하고 다른 눈에 보이는 실제 객체와 일치하는 방향으로 그림자를 만들 수 있습니다.

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

     

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

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

주변 구면 조화

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

동일한 로켓 모델의 두 이미지를 살펴보세요. 왼쪽의 로켓은 기본 방향성 조명 API에서 감지한 조명 추정 정보를 사용하여 렌더링됩니다. 오른쪽의 로켓은 기본 방향 조명과 주변 구면 정리 함수 API에서 감지한 정보를 사용하여 렌더링됩니다. 두 번째 로켓은 시각적으로 더 명확하게 정의되어 있으며 장면과 더 원활하게 조화를 이룹니다.

     

HDR 큐브맵

HDR 큐브맵을 사용하여 반짝이는 금속 표면과 같이 중간에서 높은 광택이 있는 가상 객체에 사실적인 반사를 렌더링합니다. 큐브맵은 객체의 음영과 모양에도 영향을 미칩니다. 예를 들어 파란색 환경으로 둘러싸인 반사 물체의 재료는 파란색 색조를 반사합니다. HDR 큐브맵을 계산하려면 약간의 추가 CPU 계산이 필요합니다.

HDR 큐브맵을 사용해야 하는지 여부는 객체가 주변을 반사하는 방식에 따라 다릅니다. 가상 로켓은 금속이므로 주변 환경을 직접 반사하는 강한 스펙큘러 구성요소가 있습니다. 따라서 큐브맵의 이점을 누릴 수 있습니다. 반면 무딘 회색 무광 재료가 적용된 가상 물체에는 반사 구성요소가 전혀 없습니다. 색상은 주로 확산 구성요소에 따라 달라지며 큐브맵의 이점을 활용할 수 없습니다.

아래의 로켓을 렌더링하는 데 세 가지 Environmental HDR API가 모두 사용되었습니다. HDR 큐브맵을 사용하면 반사 신호를 사용 설정하고 장면에서 객체를 완전히 배치하는 추가 강조 표시를 사용할 수 있습니다.

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

           

주변 밝기 모드

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

픽셀 강도

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

색상

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

환경 프로브

환경 프로브는 360도 카메라 뷰를 큐브 맵과 같은 환경 텍스처로 구성합니다. 그런 다음 이러한 텍스처를 사용하여 가상 객체(예: 주변 공간을 '반사'하는 가상 금속 공)에 사실적인 조명을 적용할 수 있습니다.