적절한 조명 사용하기

플랫폼별 가이드

사실적인 AR 경험을 만드는 핵심은 적절한 조명을 사용하는 것입니다. 가상 객체에 그림자가 없거나 주변 공간을 반영하지 않는 반짝이는 머티리얼이 있는 경우 사용자는 이유를 설명할 수 없더라도 객체가 잘 맞지 않는다는 것을 느낄 수 있습니다. 왜냐하면 인간은 주변 환경에서 물체가 비추는 방식에 관한 단서를 무의식적으로 인식하기 때문입니다. Lighting Estimation API는 이러한 신호를 위해 지정된 이미지를 분석하여 장면의 조명에 관한 자세한 정보를 제공합니다. 그런 다음 가상 객체를 렌더링하여 배치된 장면과 동일한 조건에서 객체를 밝게 할 때 이 정보를 사용하여 사용자가 바닥에 집중하고 몰입하도록 할 수 있습니다.

조명 조건

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

그림자

그림자는 방향을 나타내는 경우가 많으며 시청자에게 광원이 어디 나오는지 알려줍니다.

주변광

주변광은 주변에서 들어오는 전반적인 확산광으로, 모든 것을 표시합니다.

음영

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

반사 하이라이트

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

기분 변화

표면의 반사 (높은 반사) 또는 확산 (비반사) 특성에 따라 표면에서 빛이 다르게 반사됩니다. 예를 들어, 금속성 공은 반사도가 매우 높고 환경을 반사하지만 짙은 무광택 회색을 칠한 다른 공은 확산됩니다. 실제 사물은 대부분 이러한 속성을 조합합니다. 더러워진 볼링공이나 잘 사용하는 신용카드를 생각해 보세요.

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

환경 HDR 모드

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

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

이 광원 추정 모드는 다음을 제공합니다.

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

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

  3. HDR 큐브맵 반짝이는 금속 물체에 빛을 반사하는 데 사용할 수 있습니다.

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

기본 방향 표시등

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

작동 원리를 살펴보려면 동일한 가상 로켓의 두 이미지를 생각해 보세요. 왼쪽 이미지에는 로켓 아래에 그림자가 있지만 그 방향이 장면의 다른 그림자와 일치하지 않습니다. 오른쪽 로켓의 그림자가 올바른 방향을 가리키고 있습니다. 이는 미묘하지만 중요한 차이점이며, 그림자의 방향과 강도가 장면의 다른 그림자와 더 잘 일치하기 때문에 장면에서 로켓의 기초를 결정합니다.

     

기본 광원이나 조명이 켜진 물체가 움직이면 물체의 반사 하이라이트가 광원에 따라 실시간으로 위치를 조정합니다.

방향 그림자도 실제와 마찬가지로 기본 광원의 위치를 기준으로 길이와 방향을 조정합니다. 이 효과를 설명하기 위해 두 개의 마네킹(하나는 가상의 마네킹과 다른 하나는 진짜)을 생각해 보세요. 왼쪽의 마네킹은 가상의 마네킹입니다.

주변 구면 고조파

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

동일한 로켓 모델의 두 이미지를 생각해 보세요. 왼쪽 로켓은 기본 Direction Light API에서 감지한 광도 추정 정보를 사용하여 렌더링됩니다. 오른쪽의 로켓은 주방향 광원과 주변 구면고조파 API에서 감지한 정보를 사용하여 렌더링됩니다. 두 번째 로켓은 시각적으로 더 선명하고 장면에 더 매끄럽게 섞입니다.

     

HDR 큐브맵

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

HDR 큐브맵 사용 여부는 물체가 주위를 반사하는 방식에 따라 달라집니다. 가상 로켓은 금속성이므로 주변 환경을 직접적으로 반사하는 강력한 반사 성분을 갖추고 있습니다. 따라서 큐브맵의 이점을 누릴 수 있습니다. 반면 흐린 회색 매트 소재의 가상 객체에는 반사 구성요소가 전혀 없습니다. 색상은 주로 디퓨즈 구성요소에 따라 달라지므로 큐브맵을 사용하는 것이 도움이 되지 않습니다.

세 가지 환경 HDR API를 모두 사용해 아래 로켓을 렌더링했습니다. HDR 큐브맵은 반사 신호를 주고 피사체가 장면 안에 완전히 놓이도록 하는 효과를 줍니다.

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

           

주변 강도 모드

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

픽셀 강도

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

색상

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

환경 프로브

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