Qt Quick 3D - 베이크된 라이트맵 예제

3D 씬에서 베이크된 라이트맵을 사용하는 방법을 보여줍니다.

이 예시는 씬에서 완전히 베이크된 조명을 사용하는 것을 보여줍니다. 결과적으로 렌더링된 장면은 주로 간접 조명이 추가되어 훨씬 더 사실적으로 보입니다. 또한 체크박스를 사용하면 라이트매핑을 비활성화할 수 있으므로 실시간 방식과 완전 베이크된 방식의 렌더링 결과를 비교할 수 있습니다.

조명 설정

씬에는 단일 포인트 라이트가 있습니다. 확인란을 선택하면 라이트의 bakeMode 가 Light.BakeModeAll로 설정됩니다.

PointLight {
    bakeMode: root.lightBakeMode
    y: 190
    brightness: brightnessSlider.value
    castsShadow: true
    shadowFactor: 75
    shadowBias: 20
}

이 프로퍼티를 Light.BakeModeDisabled 이외의 값으로 설정하면 두 가지 용도로 사용됩니다. 라이트맵 베이크 시 라이트가 라이트맵 씬의 일부임을 나타내어 씬에 기여합니다. 런타임에는 씬을 정상적으로 렌더링할 때 라이트가 완전히 또는 부분적으로 베이크된 라이트임을 나타내므로 라이트맵 모델의 머티리얼에서 특정 실시간 계산을 비활성화합니다. 따라서 이 확인란은 라이트의 bakeMode 프로퍼티( both )와 모델 오브젝트와 연결된 BakedLightmap 의 활성화 프로퍼티를 토글합니다.

모델 설정하기

코넬 박스는 8개의 서브메시가 있는 모델입니다. 이것은 Box 유형으로 캡슐화되며, 그 인스턴스는 메인 씬에서 인스턴스화됩니다.

Box {
    usedInBakedLighting: true
    lightmapBaseResolution: 256
    bakedLightmap: BakedLightmap {
        enabled: root.lmEnabled
        key: "box"
        loadPrefix: "file:"
    }
    scale: Qt.vector3d(100, 100, 100)
}

이 모델은 라이트매핑된 씬에서 participatesbaked for it 라이트맵을 모두 가지고 있습니다. 전자는 usedInBakedLighting 프로퍼티로 표시됩니다. 이것만으로는 박스 미니씬에 라이트맵이 구워지지는 않으며, 단지 라이트매핑에 참여할 뿐입니다(즉, 간접 조명을 계산할 때 광선이 모델에서 반사될 수 있습니다).

베이킹 프로세스 중에 라이트맵을 완전히 생성한 다음 저장하기 위해 enabledtrue 로 설정된 BakedLightmap 객체도 설정됩니다. key 은 고유 식별자를 지정합니다.

간단한 배포를 위해 애플리케이션은 생성된 라이트맵(.exr 파일)을 Qt 리소스 시스템을 통해 실행 파일에 팩합니다. CMakeLists.txt에는 리소스로 추가할 qlm_box.exr 이 나열되어 있습니다. 라이트맵을 다시 베이킹할 때는 애플리케이션을 다시 빌드해야 변경된 파일을 가져올 수 있습니다. 엔진이 런타임에 파일을 찾을 수 있도록 loadPrefix 을 설정합니다.

예제 프로젝트 @ code.qt.io

© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.