Unity 라이트맵 UV 소개

개요

Unity는 실시간 전역 조명 시스템과 베이크된 전역 조명 시스템에서 라이트맵을 사용하기 위해 라이트맵 UV가 필요합니다. 이 문서에서는 베이크된 라이트맵 UV와 실시간 라이트맵 UV의 차이점을 설명하고, Unity에서 이 UV를 어떻게 관리하는지에 대해 알아보겠습니다.

라이트맵 UV의 필요성

  • 실시간 라이트맵과 베이크된 라이트맵은 서로 다른 UV 세트를 사용합니다. 이는 다음과 같은 이유 때문입니다:
  • 실시간 라이트맵과 베이크된 라이트맵 사이의 인스턴스 그룹화에는 직접적인 관계가 없으며, 서로 다른 베이크된 라이트맵에서 같은 실시간 라이트맵 인스턴스가 존재할 수 있습니다.
  • 메시는 베이크된 라이트맵에서 UV를 공유할 수 있지만, 실시간 라이트맵에서는 이를 공유하지 않습니다.

베이크된 라이트맵 UV

  • 모든 인스턴스는 동일한 메시를 기반으로 하며, Unity는 모델을 임포트할 때 베이크된 라이트맵 UV를 자동으로 계산합니다.
  • 이런 UV는 Mesh.uv2 채널에 저장되며, 보통 "UV1"이라고 불립니다.
  • 만약 다른 용도로 Mesh.uv2를 사용하고 싶으면, MeshRenderer가 라이트 프로브에서 전역 조명을 수신하도록 해야 합니다.

실시간 라이트맵 UV

  • 실시간 라이트맵 UV는 메시 렌더러별로 관리되며, Unity는 사전 계산 단계에서 UV를 계산합니다.
  • Mesh.uv3 채널의 데이터를 사용하거나, Mesh.uv2의 데이터를 대체하여 실시간 라이트맵 UV를 생성합니다.
  • Mesh.uv3는 텍스코드 2 셰이더 시맨틱(TEXCOORD2)에 매핑되며 이를 "UV2"라고 부릅니다.

Unity의 실시간 라이트맵 UV 계산 방법

  1. 패킹: Unity는 정상적으로 UV를 패킹하여 각 차트의 경계가 텍셀의 중심에 오도록 하며, 차트 간의 공간을 추가하여 블리딩 문제를 방지합니다.
  2. 병합: 가능한 경우 UV 차트를 병합하여 라이트맵 크기를 줄이고 성능을 개선할 수 있습니다.

예제 코드

다음은 UV 계산 및 최적화를 위한 간단한 C# 코드 스니펫입니다.

public class LightmapUVExample : MonoBehaviour
{
    private void Start()
    {
        // MeshRenderer 컴포넌트 가져오기
        MeshRenderer meshRenderer = GetComponent<MeshRenderer>();

        // 라이트맵 수신 설정
        meshRenderer.receiveGI = ReceiveGI.Lightmaps;

        // UV 최적화 설정
        meshRenderer.lightMapping = LightmapEditorSettings.LightmapMode();
    }
}

마무리

라이트맵 UV는 Unity에서 실시간 조명효과를 구현하는 데 중요한 요소입니다. 베이크된 UV와 실시간 UV를 적절하게 사용하여 최적의 성능을 끌어낼 수 있습니다. 더 자세한 정보는 관련 문서를 참조하십시오.

Read more

Unity 매뉴얼 스크립팅 API 해설

이 문서는 Unity의 매뉴얼 스크립팅 API에 대한 간단한 해설과 활용 예제들을 포함하고 있습니다. Unity는 게임 개발 플랫폼으로, 스크립팅 API를 통해 게임의 다양한 기능을 제어하고 수정할 수 있습니다. 버전 Unity 스크립팅 API는 여러 버전으로 제공됩니다. 주의 깊게 선택하여 사용하는 것이 중요합니다. 버전 설명 2023.2 최신 기능 및 버그 수정이 추가됨

By 이재협/실장/시스템개발실/PHYSIA

Unity 매뉴얼 스크립팅 API 설명서 해설

이 문서는 Unity의 매뉴얼 스크립팅 API에 대한 정보를 제공하며, 버전에 따라 다르게 적용되는 내용들을 설명합니다. 본 문서에서는 주요 내용을 간단히 정리하고 활용 가능 예제를 통해 이해를 돕겠습니다. 기본 개념 Unity에서 스크립팅 API는 게임 오브젝트와 그들의 동작을 제어하기 위한 강력한 도구입니다. 이를 통해 게임의 로직, 물리 엔진, 애니메이션 및 사용자 인터페이스를

By 이재협/실장/시스템개발실/PHYSIA

Unity 스크립팅 API 가이드

이 문서는 Unity의 스크립팅 API에 대해 설명합니다. Unity는 게임 개발을 위한 인기 있는 엔진으로, 강력한 스크립팅 기능을 제공합니다. 이 가이드는 Unity에서 스크립트를 작성하고 사용하는 방법을 이해하는 데 도움을 드립니다. 목차 * Unity 스크립팅 소개 * 기본 스크립트 생성 * 스크립트 사용 예제 * 응용 프로그램 * 참고 자료 Unity 스크립팅 소개 Unity는 C# 프로그래밍 언어를

By 이재협/실장/시스템개발실/PHYSIA