변경 사항 Qt Quick 3D

Qt 6는 프레임워크를 보다 효율적이고 사용하기 쉽게 만들기 위한 의식적인 노력의 결과입니다.

각 릴리스에서 모든 공용 API에 대해 바이너리 및 소스 호환성을 유지하려고 노력합니다. 하지만 Qt를 더 나은 프레임워크로 만들기 위해 일부 변경은 불가피했습니다. Qt Quick 3D API의 일부가 상당 부분 수정되었습니다.

이 항목에서는 Qt Quick 3D 에서 이러한 변경 사항을 요약하고 이를 처리하기 위한 지침을 제공합니다.

RHI

Qt 6.0부터 Qt Quick 의 기본 적응은 항상 QtGui 모듈에서 제공하는 그래픽 추상화 계층인 Qt 렌더링 하드웨어 인터페이스(RHI)를 통해 렌더링합니다. 즉, Qt 5와 달리 씬 그래프에서 직접 OpenGL을 호출하지 않습니다. 그 대신 RHI API를 사용하여 리소스 및 그리기 명령을 기록한 다음 명령 스트림을 OpenGL, Vulkan, Metal 또는 Direct 3D 호출로 변환합니다. 셰이더 처리도 셰이더 코드를 한 번 작성하고 SPIR-V로 컴파일한 다음 다양한 그래픽 API에 적합한 언어로 번역하는 방식으로 통합되었습니다.

Qt Quick 3D 의 경우 Qt 6.0의 가장 큰 변화는 공통 렌더링 하드웨어 인터페이스로의 마이그레이션으로, Qt Quick 3D 이 OpenGL 및 OpenGL ES 외에도 Direct3D, Metal 및 Vulkan에서도 실행할 수 있게 되었습니다.

Qt QuickQt Quick 3D 는 이제 완전히 통합되었습니다. 예를 들어 렌더링할 그래픽 API를 선택하는 등 RHI와 관련된 모든 구성 설정은 두 사이트 모두에 적용됩니다.

자세한 내용은 Qt Quick 3D 그래픽 요구 사항을 참조하세요.

기타 API 변경 사항

QML 가져오기 버전

Qt 6.0부터 QML 가져오기 문의 버전 번호는 Qt 버전 번호와 동일합니다. 이제 버전을 지정하지 않고 모듈을 임포트할 수도 있습니다. 이렇게 하면 최신 버전의 모듈을 임포트합니다.

Lighting

Light brightness 는 이제 기본값이 1.0인 에너지 승수를 나타내며, Qt 5에서는 기본값이 100인 백분율 값을 사용합니다. 실제로 이는 모든 brightness 값을 100으로 나누어야 함을 의미합니다.

SceneEnvironment.probeBrightnessprobeExposure 로 이름이 변경되고 기본값이 1.0인 승수로 재정의됩니다. 즉, 모든 probeBrightness 값은 probeExposure 으로 이름이 바뀌고 100으로 나뉘어야 합니다.

AreaLight 는 성능상의 이유로 제거되었습니다. 대부분의 경우 Qt Quick 3D 5.15에 추가된 SpotLight 로 대체할 수 있습니다.

커스텀 머티리얼

6.0에서는 사용자 정의 머티리얼 API가 완전히 재작업되었습니다. 즉, 기존의 모든 사용자 정의 자료는 상당 부분 다시 작성해야 합니다. 새로운 API에 대한 자세한 내용은 CustomMaterial 문서를 참조하세요.

포스트 프로세싱 효과

Effect 는 구조 및 내장 키워드와 관련하여 동일한 패턴을 따르는 CustomMaterial 에서 지원하는 것과 매우 유사한 셰이더 코드를 사용할 수 있도록 개선되었습니다. 즉, 커스텀 셰이더 코드와 관련된 기존 효과는 Qt 6.0에서 작동하기 전에 마이그레이션해야 합니다. 자세한 내용은 Effect 문서를 참조하세요.

원칙적인 머티리얼

PrincipledMaterial QML 유형은 Qt Quick 6.0에서 크게 개선되었으며, 이제 물리 기반 렌더링의 원칙을 더욱 밀접하게 따릅니다. 이제 가져온 모델은 머티리얼의 속성을 변경하지 않고도 올바르게 렌더링됩니다. 이전의 부정확성에 대한 보정을 취소하려면 기존 머티리얼을 변경해야 합니다.

일부 프로퍼티의 기본값이 변경되었습니다:

  • metalness 기본값이 1이 아닌 0으로 변경되었습니다.
  • specularAmount 기본값이 0이 아닌 0.5로 변경되었습니다.

기본 머티리얼

일부 프로퍼티의 기본값이 변경됩니다:

미리 정의된 재질

QtQuick3D 6.0에는 사전 정의된 머티리얼이 포함되어 있지 않습니다. 향후 릴리스에서 추가되는 모든 머티리얼은 이전 버전과 호환되지 않을 수 있습니다. 자료 가져오기가 존재하지 않습니다. ( CustomMaterial 유형은 기본 QtQuick3D 가져오기로 이동됩니다.)

다음은 Qt 6.0에서 제거된 머티리얼 QML 유형입니다:

  • 알루미늄아노다이즈드이미시브 머티리얼
  • AluminumAnodizedMaterial
  • 알루미늄 브러시드 머티리얼
  • AluminumEmissiveMaterial
  • AluminumMaterial
  • 구리소재
  • 젖빛유리소재
  • 젖빛유리싱글패스재료
  • 유리재료
  • 유리굴절재료
  • 종이예술재료
  • 종이사무용재료
  • 플라스틱구조적적색방사성재료
  • 플라스틱구조적적색재료
  • 스틸밀링동심원재료

테셀레이션 및 디스플레이스먼트 맵

임베디드 하드웨어 지원에 집중하기 위해 모델 테셀레이션 모드가 사라졌습니다. 또한 그 결과 머티리얼에서 디스플레이스먼트 맵 지원이 제거되었습니다. 비슷한 효과를 얻기 위해 custom material.

Qt Quick Items를 3D Nodes의 자손으로 사용할 수 있습니다.

구문상으로는 동일하지만 2D 자식 항목이 처리되는 방식은 내부적으로 상당히 다릅니다. Qt 6.0에는 텍스처에 대한 암시적 렌더링 단계가 없습니다. 대신 2D Qt Quick 콘텐츠가 동일한 렌더 패스에서 적절한 원근 투영을 사용하여 일렬로 렌더링되므로 성능이 향상되고 리소스 사용량이 줄어들며 경우에 따라 시각적 충실도가 향상될 수 있습니다(예: Text 사용). 자세한 내용은 Qt Quick 3D 2D 콘텐츠가 있는 씬을 참조하십시오.

어떤 이유로 텍스처를 통과하는 것이 중요한 경우(클리핑, 불투명도) 2D Item 서브트리를 layer.enabled: true 을 설정하여 명시적으로 레이어로 만듭니다. 이렇게 하면 동작이 Qt 5.15에서 제공했던 것과 더 비슷해집니다.

2D 콘텐츠는 더 이상 부모 노드의 원점에 중앙에 위치하지 않습니다. 그 대신 최상위 2D 아이템의 왼쪽 상단 모서리가 3D 노드의 원점에 배치됩니다. 따라서 최상위 2D 항목은 Qt 5.15와 일치하는 결과를 얻기 위해 anchors.centerIn: parent 와 같은 앵커를 지정해야 하는 경우가 많습니다.

© 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.