Version: 2023.2
언어: 한국어
라이트 프로브: 기술 정보
스크립팅을 사용한 라이트 프로브 배치

라이트 프로브 그룹

씬에 라이트 프로브를 배치하려면 Light Probe Group 컴포넌트가 연결된 게임 오브젝트를 사용해야 합니다. 메뉴에서 Component > Rendering > Light Probe Group 으로 이동하여 Light Probe Group 컴포넌트를 추가할 수 있습니다.

씬의 모든 게임 오브젝트에 Light Probe Group 컴포넌트를 추가할 수 있습니다. 하지만 빈 게임 오브젝트를 새로 생성(메뉴: GameObject > Create Empty)한 후 여기에 추가하면 프로젝트에서 실수로 제거할 가능성을 줄일 수 있습니다.

링잉

특정한 환경에서 라이트 프로브는 “링잉”이라고 불리는 원치 않는 동작을 보입니다. 이 문제는 라이트 프로브 주변 광원에 상당한 차이가 있을 때 발생합니다. 예를 들어 라이트 프로브의 한쪽 면에 밝은 광원이 있고 다른 면에는 광원이 없는 경우 빛 강도가 반대쪽 면에 “과도하게 도달”할 수 있습니다. 이러한 과도한 도달은 반대쪽 면에 광원 스폿을 만듭니다.

라이트 프로브 링잉의 예
라이트 프로브 링잉의 예

이 문제는 다음과 같은 방법으로 해결할 수 있습니다.

  • Light Probe Group 컴포넌트에서 Remove Ringing 을 활성화하십시오. 그러면 Unity가 원치 않는 광원 스폿을 자동으로 제거합니다. 하지만 이로 인해 라이트 프로브의 정확도가 다소 떨어지고 광원 콘트라스트가 감소할 수 있으므로 시각적 결과를 반드시 확인해야 합니다.
  • 플레이어가 광원 스폿을 볼 수 있는 포지션에 도달할 수 없도록 게임 내에 장애물을 배치하십시오.
  • 직접광을 라이트 프로브에 베이크하지 마십시오. 직접광은 그림자 모서리 같은 뚜렷한 불연속성이 있어서 라이트 프로브에는 적합하지 않습니다. 간접광만 베이크하려면 혼합 조명을 사용하십시오.

광원 프로브 배치

라이트 프로브 그룹에서 라이트 프로브를 이동, 추가 또는 제거하려면 다음 단계를 따르십시오.

  1. 계층(Hierarchy) 창 또는 씬(Scene) 뷰에서 Light Probe Group을 선택합니다.
  2. 씬 뷰의 Tools overlay에서 Edit Light Probe Group 툴을 선택합니다.

라이트 프로브 그룹을 편집하는 경우 각각의 라이트 프로브를 게임 오브젝트와 비슷한 방법으로 조작할 수 있습니다. 하지만 라이트 프로브는 게임 오브젝트가 아니라 Light Probe Group 컴포넌트에 있는 포인트 집합입니다.

새로운 라이트 프로브 그룹을 편집하는 경우 처음 보는 화면은 아래와 같이 기본 배열인 큐브로 정렬된 8개의 프로브가 배치된 형태가 됩니다.

라이트 프로브의 기본 배열
라이트 프로브의 기본 배열

Edit Light Probe Group 툴의 컨트롤을 사용하여 그룹에 새 프로브 위치를 추가할 수 있습니다. 프로브는 씬에 노란색 구체로 나타나며, 게임 오브젝트와 같은 방식으로 위치를 지정할 수 있습니다. 복제를 위한 키보드 단축키(Ctrl+D 또는 Cmd+D)를 사용하거나 복사 및 붙여넣기를 통해 개별 프로브를 선택하고 복제하거나 그룹으로 복제할 수도 있습니다.

라이트 프로브 포지션 선택

오브젝트의 표면 위로 지속적인 해상도를 가진 라이트맵과는 달리 라이트 프로브 정보의 해상도는 얼마나 라이트 프로브를 빽빽하게 배치했는지에 따라 달라집니다.

라이트 프로브가 저장하는 데이터 양과 게임이 진행되는 동안 수행된 계산 양을 최적화하려면 라이트 프로브를 최소한으로 배치하는 것이 좋습니다. 하지만 서로 다른 공간에서의 광원 변화가 원하는 수준에서 기록될 수 있도록 충분한 라이트 프로브를 배치해야 합니다. 이는 복잡하거나 선명한 콘트라스트가 있는 광원이 비치는 영역에는 라이트 프로브를 빽빽하게 배치하고 광원의 변화가 적은 영역에는 듬성하게 배치하면 된다는 의미입니다.

간단한 씬에 서로 다른 밀도로 배치된 라이트 프로브
간단한 씬에 서로 다른 밀도로 배치된 라이트 프로브

위의 예제에서 콘트라스트와 컬러 배리에이션이 큰 건물 사이와 그 근처에 라이트 프로브가 더 빽빽하게 배치되어 있고, 조명이 크게 변화하지 않는 길가에는 낮은 밀도로 라이트 프로브가 배치되어 있습니다.

라이트 프로브를 배치하는 가장 쉬운 방법은 일반적인 3D 격자 무늬 패턴으로 라이트 프로브를 배치하는 것입니다. 이 패턴이 간단하고 효율적이기는 하지만 필요 이상으로 메모리를 소모하며 중복되는 라이트 프로브가 많을 수 있습니다. 예를 들어 위의 씬에서 길가에 지나치게 많은 수의 라이트 프로브가 있으면 리소스를 낭비하게 됩니다. 광원은 길의 거리에 따라 크게 변경되지 않으므로 대부분의 라이트 프로브는 거의 비슷한 조명 데이터를 인접 라이트 프로브에 저장합니다. 이와 같은 상황에서는 더 적은 스프레드 아웃 라이트 프로브 사이에서 이 조명 데이터를 보간하는 것이 훨씬 효율적입니다.

개별 라이트 프로브는 많은 양의 정보를 저장하지 않습니다. 기술적인 측면에서 각 프로브는 샘플 지점에서 보는 구형 파노라마 HDR 이미지이며 27개의 부동 소수점 값으로 저장된 스피리컬 하모닉 L2를 사용해 인코딩된 것입니다. 하지만 수백 개의 라이트 프로브를 추가할 수 있는 거대한 씬의 경우 라이트 프로브를 너무 빽빽하게 패킹하면 게임에서 상당한 메모리가 낭비됩니다.

영역 생성

게임플레이가 2D 평면(예: 차가 도로 표면 위를 달리는 등)에서 이루어진다고 하더라도 라이트 프로브는 3D 영역을 형성해야 합니다.

이것은 라이트 프로브 그룹에 최소 두 개의 수직 “레이어” 점이 있어야 한다는 의미입니다.

아래 예제에서 왼쪽 그림에서는 라이트 프로브가 지표면 위에만 정렬되어 있음을 볼 수 있습니다. 여기에서는 라이트 프로브 시스템이 라이트 프로브에서 합리적으로 정사면체 영역을 계산할 수 없기 때문에 좋은 조명 효과를 낼 수 없습니다.

오른쪽 그림에서는 라이트 프로브가 두 레이어에 정렬되어 있음을 볼 수 있습니다. 일부는 낮은 지표면에 있고, 다른 라이트 프로브는 위에 있기 때문에 다수의 개별 4면체로 이루어진 3D 영역을 형성하고 있습니다. 이것이 좋은 레이아웃입니다.

왼쪽 이미지는 라이트 프로브에 의해 정의된 영역에 높이가 없기 때문에 라이트 프로브 포지션을 잘못 선택했음을 보여줍니다. 오른쪽 이미지는 라이트 프로브 포지션을 잘 선택한 예입니다.
왼쪽 이미지는 라이트 프로브에 의해 정의된 영역에 높이가 없기 때문에 라이트 프로브 포지션을 잘못 선택했음을 보여줍니다. 오른쪽 이미지는 라이트 프로브 포지션을 잘 선택한 예입니다.

실시간 전역 조명을 위한 라이트 프로브 배치

인라이튼 실시간 전역 조명을 사용하면 움직이는 광원이 정적 게임 오브젝트에 동적 반사광을 캐스트할 수 있습니다.

라이트 프로브를 인라이튼 실시간 전역 조명과 함께 사용하면 움직이는 조명이 움직이는 게임 오브젝트에 동적으로 반사광을 캐스트할 수도 있습니다.구현되는 조명의 품질은 라이트 프로브가 어떻게 배치되느냐에 따라 달라지므로 신중하게 배치하는 것이 중요합니다.

라이트 프로브는 공간에서 해당 위치의 간접 조명을 캡처합니다.조명 환경을 충실하게 캡처하려면 조명의 변화가 클 것으로 예상되는 영역에 프로브를 더 많이 배치해야 합니다.예를 들어, 움직이는 조명이나 오클루더가 많은 영역에는 많은 프로브가 필요할 수 있습니다.조명 배리에이션이 거의 없거나 전혀 없는 영역에서는 프로브를 더 적게 배치하여 메모리와 계산 리소스를 절약할 수 있습니다.

일반적으로 넓은 정적 광원의 영역에는 몇 개의 라이트 프로브만 필요합니다. 그러나 이 정적 광원의 영역 내에 움직이는 광원을 배치할 계획이고 움직이는 오브젝트가 움직이는 광원으로부터 정확한 반사광을 받도록 하려면, 충분한 정확도를 제공하기 위해 해당 영역 내에 밀도 높은 라이트 프로브 네트워크가 필요합니다. 라이트 프로브의 간격은 광원의 크기와 범위, 이동 속도, 동적 광원을 받는 움직이는 오브젝트의 크기에 따라 결정됩니다.

라이트 프로브 배치 문제 해결

라이트 프로브 포지션 선택에는 조명이 라이트 프로브 세트 간에 보간된다는 것을 고려해야 합니다. 라이트 프로브가 씬 내의 조명 변화를 올바르게 반영하지 않는 경우, 문제가 발생할 수 있습니다.

아래의 예제는 양쪽에는 두 개의 밝은 가로등이 있고 가운데는 어두운 야간 씬을 보여줍니다. 만일 라이트 프로브가 가로등 근처에만 배치되고 가운데에는 배치되지 않은 경우, 가로등에서 나오는 조명은 어두운 쪽에 "흘러" 움직이는 오브젝트에까지 영향을 줄 것입니다. 이는 조명이 밝은 지점에서 다른 밝은 지점으로 보간되고 있으며 가운데에 있는 어두운 영역에 대한 정보는 없기 때문입니다.

이 이미지는 라이트 프로브 배치가 잘못된 경우를 보여줍니다. 두 가로등 사이 어두운 영역에 라이트 프로브가 없으므로 보간 현상에 어두운 영역은 포함되지 않습니다.
이 이미지는 라이트 프로브 배치가 잘못된 경우를 보여줍니다. 두 가로등 사이 어두운 영역에 라이트 프로브가 없으므로 보간 현상에 어두운 영역은 포함되지 않습니다.

실시간 광원 또는 혼합 광원을 사용하는 경우, 이 문제는 알아채기 어려울 수도 있는데 이는 간접 광만 틈 사이로 흐르기 때문입니다. 이 문제는 완벽히 베이크된 광원을 사용하는 경우 더욱 두드러지는데, 이는 이 상황에서 움직이는 오브젝트의 직접광 역시 라이트 프로브에서 보간되기 때문입니다. 이 예제 씬에서는 두 가로등이 베이크되어 있으므로 움직이는 오브젝트는 라이트 프로브에서 직접광을 받습니다. 이로 인해 움직이는 오브젝트(구급차)는 어두운 영역을 지나가는 동안에도 밝게 유지되는데, 이것은 바람직한 효과가 아닙니다. 노란색 와이어프레임 정사면체는 거리의 밝은 빛 끝 하나와 다른 끝 사이에 보간 현상이 발생함을 보여줍니다.

이것은 바람직한 효과가 아닙니다. 구급차는 어두운 영역을 지나가는 동안에도 밝게 유지되는데 이는 어두운 영역에 라이트 프로브가 배치되어 있지 않기 때문입니다.

이를 해결하려면 아래와 같이 어두운 영역에 라이트 프로브를 더 배치하면 됩니다.

이제 씬의 어두운 영역에도 라이트 프로브가 존재하므로 움직이는 구급차는 씬을 이동하는 동안 더 어두운 조명을 받게 됩니다.

The ambulance now takes on the darker lighting in the centre of the Scene, as desired.
The ambulance now takes on the darker lighting in the centre of the Scene, as desired.

LightProbeGroup

라이트 프로브: 기술 정보
스크립팅을 사용한 라이트 프로브 배치