언어:
페이지 정보
수준별:
엔진 버전:
언리얼 엔진

라이트맵 UV 좌표 계산하기

언리얼 엔진

UE4 에서 스태틱 라이팅(라이트매스) 사용을 위해서는, 모델에 대해 펼친 UV 좌표 세트를 계산해야 합니다. 이 UV 매핑을 일컬어 모델에 대한 라이트맵이라 합니다. 좋은 라이트맵을 구하는 것은, 과학이기도 하면서 예술이기도 합니다. 여기서는 SpeedTree 에서 라이트맵 UV 매핑을 계산하는 법에 대해 알아보겠습니다.

왼쪽은 모델러 라이트맵과 밀도, 오른쪽은 UE4 에서 라이트매핑된 모델입니다.

1 단계: 라이트맵 밀도 렌더링 모드로 전환

Render 툴바 버튼 스위치를 사용하여 렌더링 모드를 Lightmasp Density 로 전환합니다. 화면이 아래 그림과 같이 변할 것입니다.

ue4_starting_lightmap.jpg

이 시각화는 라이트맵 해상도가 모델 전반적으로 얼마나 잘 배분되어 있는지, UE4 의 동일한 시각화 모드에 (표시 -> 라이트맵 밀도) 얼마나 근접하도록 되어있는지 보여줍니다. 모델의 초록색 부분은 이상적인 밀도를, 파랑색은 라이트맵 해상도가 너무 낮아 UE4 에서 라이트맵을 빌드할 때 부작용이 생길 수 있음을, 빨강은 라이트맵 해상도가 너무 높아 그 지오메트리에 낭비되고 있음을 나타냅니다.

라이트맵 자체는 좌하단 구석에 렌더링됩니다. 모델 부분을 선택해 보면 라이트맵 어디에 표현되어 있는지 확인할 수 있습니다. 라이트맵에 트라이앵글을 선택하면 모델의 어느 부분에서 왔는지도 확인할 수 있습니다. 라이트맵은, 모델의 큰 섹션이 라이트맵의 큰 섹션을 차지하도록 하여, 가급적 많이 사용하도록 하는 것이 좋습니다. 그 방법은 나중에 자세히 다루겠습니다.

시각화에서 중요한 것은 모델의 단위입니다. "Tree" 제너레이터를 선택한 다음 "Lightmap:Scale" 을 편집하여 모델의 스케일을 UE4 에 임포트할 때와 같은 스케일로 설정합니다. 여기서의 기본값은 임포터의 기본값에 일치합니다.

뷰포트에 렌더링되는 라이트맵 크기 변경은 "Window properties" 의 해당 프로퍼티를 수정하면 됩니다.

2 단계: 라이트맵 해상도 선택

라이트맵의 해상도는 프로젝트의 요건과 트리의 복잡도에 따라 달라집니다. 목표는 씬의 모델 배치에 따라 적절히 커버되는 최저 라이트맵 해상도를 사용하는 것입니다.

"Tree" 제너레이터를 선택한 다음 "Lightmap:Resolution" 프로퍼티를 수정하여 타깃 라이트맵 해상도를 설정합니다. 모델이 너무 복잡해서 선택한 해상도에 맞지 않을 수도 있습니다. 그렇다면 출력 창에 경고가 뜰 것이며, 해상도는 렌더링 부작용 방지를 위해 필요한 텍셀 테두리 하나를 포함해서 모델의 각 노드에 대해 라이트맵에 최소 한 픽셀을 줄 수 있는 최소 해상도로 높아집니다.

3 단계: 라이트맵 튜닝

해상도를 선택했으면, 다음 단계는 라이트맵이 모델 전체적으로 잘 배분되도록 튜닝하여 모델 중 밀도가 많이 필요한 부분에 많이 배분될 수 있도록 하는 것입니다. 일반적으로 줄기나 아랫쪽 가지, 뿌리 쪽의 밀도를 높이는 것이 좋습니다. 플레이어에게 종종 보이는 부분이며, 밀도가 낮은 경우 부작용이 눈에 확 띄는 부분이기 때문입니다. 나뭇잎은 비교적 밀도가 낮아도 모델이 작은 라이트맵에 잘 들어맞는 편입니다.

다음의 툴 조합을 사용하여 라이트맵 밀도 배분을 튜닝합니다:

  • Reset - "Tools -> Reset lightmap" 으로 나뭇잎을 제외한 모든 라이트맵 스케일을 1.0 으로 설정합니다. 나뭇잎은 0.0 으로 설정하여 딱 한 텍셀 이상을 갖지 않도록 합니다 (나중에 올려줄 것입니다).

  • Material Scales - 각 머티리얼에는 "Unwrap scale" 이라는 프로퍼티가 있습니다. 이 값을 올리거나 낮춰서 이 머티리얼을 사용하는 지오메트리 각 조각의 상대적 크기를 변경할 수 있습니다 (뚜껑 부분에 아주 유용합니다).

  • Generator/Node Scales - 지오메트리를 담을 수 있는 제너레이터/노드 조합마다 "Lightmap:Scale" 프로퍼티가 있습니다. 이 값을 변경하면 라이트맵에서 선택된 오브젝트의 공간 크기를 변경할 수 있습니다. 가지의 배포 커브는 (실제 사용된 라이트맵 영역 변경 없이) 오브젝트 자체의 라이트맵 공간 배포를 이전시키는 데 사용할 수 있습니다. 이 커브는 끝부분 근처에서 지오메트리는 좁아지지만 사용하는 텍스처 공간은 똑같기 때문에 가지 라이트맵 밀도가 자연히 상승하는 것을 상쇄시키는 데 사용됩니다.

  • Lightmap Resolution - 선택된 해상도에서 정상 작동하도록 만들 수 없다면, 2 단계에서 했던 것처럼 더욱 높은 해상도를 선택하여 높여줄 필요가 있습니다. 레이아웃이 크게 변할 수 있으니, 이렇게까지 됐다면 리셋한 다음 다시 시작해야 할 수도 있습니다.

노드 편집 모드로 들어가 가지, 입상체, 나뭇잎 스케일을 개별적으로 조절하여 문제가 심한 영역을 손볼 수 있습니다.

실전 팁: 가지가 완성될 때까지 나뭇잎은 0 으로 유지했다가, 나중에 나뭇잎 스케일을 올려 빈 공간을 채우도록 하면 됩니다.

저희 알고리즘은 선택된 해상도에 모든 것이 맞도록 최선의 노력을 다합니다. 한 성분의 스케일을 매우 크게 설정하여 모든 것이 맞지 않는다면, 알고리즘은 크기를 조절하여 맞도록 조절할 것입니다. 그런 일이 발생하면, 전에는 밀도가 괜찮았던 부분이 갑자기 이상해 질 수 있습니다. 이러한 현상은 방금 수정한 스케일을 낮춰 정상 범위로 돌리는 것으로 상쇄시킬 수 있습니다.

4 단계: 언리얼 엔진 4 에서 라이트맵 해상도 선택

UE4 로 모델을 임포트할 때, 모든 스태틱 메시와 마찬가지로 기본 라이트맵 해상도인 64 상태입니다. 메시 애셋을 선택한 다음 여기에 라이트맵 해상도를 입력합니다 (디테일 -> 스태틱 메시 세팅 -> 라이트맵 해상도). UE4 에서 라이팅을 빌드하면, 라이트맵에 대해 엄한 유형의 지오메트리에 놀라운 결과를 확인할 수 있을 것입니다!