SceneEnvironment QML Type
씬 렌더링 방식을 구성할 수 있습니다. 더 보기...
Import Statement: | import QtQuick3D |
Inherits: | |
Inherited By: |
속성
- antialiasingMode : enumeration
- antialiasingQuality : enumeration
- aoBias : real
- aoDistance : real
- aoDither : bool
- aoEnabled : bool
(since 6.5)
- aoSampleRate : int
- aoSoftness : real
- aoStrength : real
- backgroundMode : enumeration
- clearColor : color
- debugSettings : QtQuick3D::DebugSettings
(since 6.5)
- depthPrePassEnabled : bool
- depthTestEnabled : bool
- effects : List<QtQuick3D::Effect>
- fog : QtQuick3D::Fog
(since 6.5)
- lightProbe : QtQuick3D::Texture
- lightmapper : Lightmapper
- probeExposure : real
- probeHorizon : real
- probeOrientation : vector3d
- scissorRect : rect
(since 6.5)
- skyBoxCubeMap : QtQuick3D::CubeMapTexture
(since 6.4)
- skyboxBlurAmount : real
(since 6.4)
- specularAAEnabled : bool
(since 6.4)
- temporalAAEnabled : bool
- temporalAAStrength : real
- tonemapMode : enumeration
(since 6.0)
상세 설명
SceneEnvironment는 씬을 렌더링하는 방법에 대한 전역 프로퍼티 집합을 정의합니다.
참고: QtQuick3D.Helpers 모듈은 SceneEnvironment를 상속하고 그 위에 여러 가지 기본 제공 효과를 추가하는 ExtendedSceneEnvironment 유형을 제공합니다.
SceneEnvironment 또는 ExtendedSceneEnvironment 를 사용하려면 View3D 의 environment property 을 이러한 유형의 인스턴스와 연결합니다. 예를 들어 다음과 같이 객체를 인라인으로 선언할 수 있습니다:
View3D { environment: SceneEnvironment { antialiasingMode: SceneEnvironment.MSAA tonemapMode: SceneEnvironment.TonemapModeFilmic backgroundMode: SceneEnvironment.SkyBox lightProbe: Texture { source: "panoramic_hdri_background.hdr" } } }
또는 환경 객체를 별도로 정의할 수도 있습니다. 그런 다음 하나 이상의 View3D 객체에서 참조할 수 있습니다. 이번에는 ExtendedSceneEnvironment 을 사용한 코드 스니펫 예시입니다:
ExtendedSceneEnvironment { id: myEnv vignetteEnabled: true } View3D { width: parent.width / 2 environment: myEnv } View3D { width: parent.width / 2 x: parent.width / 2 environment: myEnv }
기능 개요
- 앤티 앨리어싱 설정. 이 주제에 대한 개요는 앤티 앨리어싱 모범 사례를 참조하세요. 관련 프로퍼티는 antialiasingMode, antialiasingQuality, specularAAEnabled, temporalAAEnabled, temporalAAStrength 입니다. 또한 ExtendedSceneEnvironment 을 사용하는 경우 fxaaEnabled 을 통해 다른 방법을 사용할 수 있습니다.
- 화면 공간 앰비언트 오클루전. 관련 속성은 aoEnabled, aoStrength, aoBias, aoDistance, aoDither, aoSampleRate, aoSoftness 입니다.
- 클리어 컬러, 스카이박스, 이미지 기반 조명. IBL에 대한 자세한 내용은 이미지 기반 조명 사용을 참조하세요. 관련 속성은 backgroundMode, clearColor, lightProbe, probeExposure, probeHorizon, probeOrientation, skyboxBlurAmount, skyBoxCubeMap 입니다.
- 톤 매핑 tonemapMode 은 그래픽 파이프라인의 끝에서 하이 다이나믹 레인지 색상 값을 0-1 범위로 변환하는 데 사용되는 톤 매핑 방법을 구성합니다. ExtendedSceneEnvironment 은 톤 매핑 계산을 조정하는 데 사용할 수 있는 whitePoint 및 sharpnessAmount 과 같은 몇 가지 추가 프로퍼티를 제공합니다.
- 뎁스 버퍼 설정. 관련 프로퍼티는 depthPrePassEnabled, depthTestEnabled 입니다.
- 포스트 프로세싱 효과. ExtendedSceneEnvironment 에서 제공하는 기본 제공 포스트 프로세싱 효과 외에도 애플리케이션은 Effect 유형을 통해 자체적인 사용자 지정 효과를 제공할 수 있습니다. effects 속성은 Effect 인스턴스 목록입니다.
- 와이어프레임 모드 또는 머티리얼의 특정 색상 기여도만 렌더링하는 등의 시각화 설정을 디버그합니다. 이는 debugSettings 속성에서 참조된 DebugSettings 개체에 의해 제어됩니다. 이러한 설정의 대부분은 DebugView 항목이 씬에 추가될 때 대화형으로 제어할 수도 있습니다.
- 포그 설정. 포그를 활성화하려면 fog 속성에서 적절하게 구성된 Fog 개체를 설정합니다.
- 라이트맵 베이킹 설정. 씬의 일부 모델에 미리 베이크된 라이트맵이 사용되는 경우 lightmapper 속성에서 설정한 Lightmapper 개체가 베이킹 프로세스 중에 사용되는 설정을 정의합니다.
- 가위 설정. 뷰포트와 다른 가위를 적용하려면 scissorRect 속성을 설정합니다.
ExtendedSceneEnvironment 를참조하십시오 .
속성 문서
antialiasingMode : enumeration |
이 프로퍼티는 씬을 렌더링할 때 적용되는 앤티앨리어싱 모드를 제어합니다.
가능한 값은 다음과 같습니다:
Constant | 설명 |
---|---|
SceneEnvironment.NoAA | 앤티앨리어싱이 적용되지 않습니다. |
SceneEnvironment.SSAA | 슈퍼샘플 앤티앨리어싱이 적용됩니다. |
SceneEnvironment.MSAA | 멀티샘플 앤티앨리어싱이 적용됩니다. |
SceneEnvironment.ProgressiveAA | 프로그레시브 앤티앨리어싱이 적용됩니다. |
기본값은 SceneEnvironment.NoAA
입니다.
슈퍼샘플링
씬을 더 높은 해상도로 렌더링한 다음 실제 해상도로 축소합니다.
장점: 고품질. 지오메트리 실루엣뿐만 아니라 모든 씬 콘텐츠에 앤티앨리어싱을 적용합니다.
단점: 일반적으로 MSAA보다 비쌉니다. 비디오 메모리 사용량이 증가합니다. 인라인을 제외한 모든 렌더모드의 View3D 항목에서 지원되지만, 이 기술은 텍스처에 먼저 렌더링하는 것을 의미하므로 렌더모드가 언더레이 또는 오버레이인 경우 SSAA를 활성화하면 일반적으로 필요하지 않은 중간 텍스처와 렌더 패스를 사용하므로 성능 비용이 더 눈에 띄게 증가할 수 있습니다. 렌더모드가 기본 오프스크린인 경우에만 SSAA를 사용하는 것이 좋습니다.
멀티샘플링
지오메트리의 가장자리가 슈퍼 샘플링되어 실루엣이 더 부드러워집니다. 그러나 이 기법은 지오메트리 내부의 머티리얼에는 영향을 미치지 않습니다.
장점: 렌더모드에 관계없이 모든 View3D 항목에서 작동합니다. 에일리어싱이 가장 두드러지는 지오메트리 실루엣에서 좋은 결과를 얻을 수 있으며, 빠른 애니메이션에서도 문제 없이 작동합니다. 성능은 순전히 시스템(GPU) 성능에 따라 달라집니다.
단점: 텍스처나 리플렉션 문제에는 도움이 되지 않습니다. 비디오 메모리 사용량이 증가합니다. 성능이 낮은 그래픽 하드웨어에서 사용하기에는 비용이 많이 들 수 있습니다. 렌더모드에 따라 창 단위로 또는 개별 View3D 항목별로 제어할 수 있습니다. 효과가 적용된 언더레이/오버레이 또는 오프스크린을 사용하는 경우 각 View3D 항목에 대해 MSAA를 제어할 수 있습니다. 반면에 효과 없이 언더레이/오버레이를 사용하거나 인라인을 사용하면 MSAA가 창별로 제어됩니다.
View3D 참고: 효과가 적용된 언더레이/오버레이 또는 오프스크린이 아닌 renderMode 항목의 경우 멀티샘플링은 QQuickWindow 또는 QQuickView 의 QSurfaceFormat 을 통해서만 활성화할 수 있습니다. 그러면 해당 창의 2D 및 3D 모든 콘텐츠에 영향을 미칩니다.
프로그레시브 앤티앨리어싱
이 프로퍼티는 씬에 적용되는 프로그레시브 앤티앨리어싱의 수준을 활성화하고 설정합니다.
씬의 모든 콘텐츠가 움직임을 멈추면 프레임 사이에 카메라가 아주 미세하게 흔들리고 각각의 새 프레임의 결과가 이전 프레임과 블렌딩됩니다. 더 많은 프레임이 누적될수록 결과물이 더 좋아집니다.
장점: 장면의 모든 콘텐츠가 정지되어 있을 때 훌륭한 결과를 제공합니다.
단점: 시각적 변화가 발생하면 적용되지 않습니다. 누적 및 블렌딩을 해야 하므로 비용이 많이 듭니다. 비디오 메모리 사용량이 증가합니다.
참고: 현재 멀티뷰 렌더링에서는 앤티앨리어싱 진행이 지원되지 않으므로 VR/AR 애플리케이션에서 사용해서는 안 됩니다.
안티 에일리어싱 방법에 대한 자세한 내용은 안티 에일리어싱 모범 사례를 참조하십시오.
antialiasingQuality : enumeration |
이 프로퍼티는 씬에 적용되는 앤티앨리어싱 수준을 설정합니다. 동작은 사용된 antialiasingMode 에 따라 달라집니다. antialiasingMode 속성이 NoAA
으로 설정된 경우 이 속성은 영향을 미치지 않습니다.
가능한 값은 다음과 같습니다:
Constant | 설명 |
---|---|
SceneEnvironment.Medium | SSAA: 앤티앨리어싱은 1.2배의 슈퍼샘플링 해상도를 사용합니다. MSAA: 안티앨리어싱은 픽셀당 2개의 샘플을 사용합니다. 프로그레시브AA: 앤티앨리어싱은 최종 이미지에 2프레임을 사용합니다. |
SceneEnvironment.High | SSAA: 안티앨리어싱은 1.5배 슈퍼샘플링 해상도를 사용합니다. MSAA: 안티앨리어싱은 픽셀당 4개의 샘플을 사용합니다. 프로그레시브AA: 앤티앨리어싱은 최종 이미지에 4프레임을 사용합니다. |
SceneEnvironment.VeryHigh | SSAA: 안티앨리어싱은 2.0x 슈퍼샘플링 해상도를 사용합니다. MSAA: 안티앨리어싱은 픽셀당 8개의 샘플을 사용합니다. 프로그레시브AA: 앤티앨리어싱은 최종 이미지에 8프레임을 사용합니다. |
기본값은 다음과 같습니다. SceneEnvironment.High
aoBias : real |
이 속성은 가까운 거리에서 오브젝트가 앰비언트 오클루전을 나타내지 않도록 차단 거리를 정의합니다. 값이 클수록 앰비언트 오클루전이 표시되기 전에 오브젝트 사이에 필요한 거리가 늘어납니다.
참고: 그림자가 없어야 할 오브젝트에 앰비언트 오클루전 그림자가 표시되는 경우 값을 약간 늘려서 가까운 결과물을 잘라내십시오.
기본값은 0.0입니다.
aoDistance : real |
이 프로퍼티는 앰비언트 오클루전 그림자가 오브젝트에서 얼마나 멀리 퍼지는지를 대략적으로 정의합니다. 거리가 멀어질수록 성능에 미치는 영향이 커집니다.
기본값은 5.0입니다.
기본값 aoSoftness 및 최대값 aoStrength:
aoDistance 5 | aoDistance 1 |
---|---|
참고: 시각적으로 보기 좋은 화면 공간 앰비언트 오클루전을 얻으려면 aoStrength, aoSoftness, aoDistance, aoDither, aoBias, aoSampleRate 와 같은 여러 관련 파라미터를 신중하게 조정해야 합니다.
aoStrength 및 aoSoftness도 참조하십시오 .
aoDither : bool |
이 프로퍼티를 활성화하면 앰비언트 오클루전 섀도 밴드의 가장자리를 분산시켜 부드러움을 향상시킵니다(때때로 뚜렷한 패턴 아티팩트가 생성될 수 있음).
참고: 카메라의 클리핑 평면 간 거리가 매우 멀면 앰비언트 오클루전에 문제가 발생할 수 있습니다. 앰비언트 오클루전에 이상한 밴딩이 표시되는 경우 카메라의 clipFar 속성을 콘텐츠에 더 가깝게 조정해 보세요.
기본값은 false
입니다.
PerspectiveCamera.clipFar 및 OrthographicCamera.clipFar 을참조하세요 .
aoEnabled : bool |
앰비언트 오클루전을 활성화 또는 비활성화합니다.
기본값은 false
이며, 앰비언트 오클루전이 비활성화되어 있음을 의미합니다.
참고: aoStrength 또는 aoDistance 이 0인 경우 이 속성을 true
로 설정하면 해당 값도 적절하게 설정되어 앰비언트 오클루전이 효과적으로 적용됩니다.
참고: 시각적으로 보기 좋은 화면 공간 앰비언트 오클루전을 얻으려면 aoStrength, aoSoftness, aoDistance, aoDither, aoBias, aoSampleRate 와 같은 여러 관련 파라미터를 신중하게 조정해야 합니다.
이 프로퍼티는 Qt 6.5에 도입되었습니다.
aoStrength 과 aoDistance도 참조하십시오 .
aoSampleRate : int |
이 프로퍼티는 성능을 희생하면서 앰비언트 오클루전 품질(더 많은 회색 음영)을 정의합니다.
값은 2, 3 또는 4여야 합니다. 기본값은 2입니다.
aoSoftness : real |
이 프로퍼티는 앰비언트 오클루전 셰이딩의 가장자리가 얼마나 매끄러운지를 정의합니다.
값은 0.0에서 50.0 사이여야 합니다. 기본값은 50.0입니다.
기본값 aoDistance 및 최대값 aoStrength:
부드러움 50 | 부드러움 25 |
---|---|
참고: 시각적으로 보기 좋은 화면 공간 앰비언트 오클루전을 얻으려면 aoStrength, aoSoftness, aoDistance, aoDither, aoBias, aoSampleRate 와 같은 여러 관련 파라미터를 신중하게 조정해야 합니다.
aoStrength 및 aoDistance도 참조하십시오 .
aoStrength : real |
이 프로퍼티는 적용되는 앰비언트 오클루전의 양을 정의합니다. 앰비언트 오큘러스는 오브젝트가 서로 가까이 있을 때 비방향성 셀프 섀도를 발생시키는 근사화된 전역 조명의 한 형태입니다. 값이 100이면 완전한 어둠 그림자가 생기고, 값이 낮으면 그림자가 더 밝게 나타납니다. 값이 0이면 앰비언트 오클루전이 완전히 비활성화되어 씬에서 렌더링되는 3D 오브젝트의 시각적 사실성이 저하되는 대신 성능이 향상됩니다.
0 이외의 모든 값은 성능에 동일한 영향을 미칩니다.
기본값은 0.0입니다. 최대값은 100.0입니다.
0 값은 aoEnabled 을 false로 설정하는 것과 같습니다.
기본값 aoSoftness 및 aoDistance:
aoStrength 0(AO 비활성화) | aoStrength 100 | aoStrength 50 |
---|---|---|
참고: 시각적으로 보기 좋은 화면 공간 앰비언트 오클루전을 얻으려면 aoStrength, aoSoftness, aoDistance, aoDither, aoBias, aoSampleRate 와 같은 여러 관련 파라미터를 신중하게 조정해야 합니다.
aoEnabled, aoDistance, aoSoftness도 참조하십시오 .
backgroundMode : enumeration |
이 프로퍼티는 씬의 배경을 지울지 여부와 방법을 제어합니다.
참고: 뷰 3D를 뒷받침하는 컬러 버퍼의 지우기가 항상 수행되는 것은 아닙니다. renderMode 속성에 따라 View3D 자체적으로 지우기를 수행하지 않을 수 있으며, 이 경우 SceneEnvironment.Transparent
및 SceneEnvironment.Color
은 아무런 영향을 미치지 않습니다. 기본값인 Offscreen
render mode (텍스처로 렌더링)만 모든 지우기 모드를 지원합니다. Underlay
모드에서는 QQuickWindow::setColor() 또는 Window.color 을 사용하여 Qt Quick 장면의 클리어 색상을 제어합니다. 스카이박스는 실제 지오메트리를 그리는 것을 의미하므로 다르게 처리되므로 모든 렌더 모드에서 동일하게 작동합니다.
Constant | 설명 |
---|---|
SceneEnvironment.Transparent | 씬이 투명하게 지워집니다. 다른 항목 위에 3D 콘텐츠를 렌더링할 때 유용합니다. 이 모드는 포스트 프로세싱이 활성화되지 않은 상태에서 언더레이 또는 오버레이의 렌더 모드를 사용하는 View3D 에는 적용되지 않습니다. |
SceneEnvironment.Color | clearColor 속성에 지정된 색상으로 장면이 지워집니다. 이 모드는 View3D 가 포스트 프로세싱을 활성화하지 않고 렌더모드를 언더레이 또는 오버레이로 사용하는 경우에는 적용되지 않습니다. |
SceneEnvironment.SkyBox | 장면이 지워지지 않고 대신 스카이박스 또는 스카이돔이 렌더링됩니다. 스카이박스는 lightProbe 프로퍼티에 정의된 HDRI 맵을 사용하여 정의됩니다. |
SceneEnvironment.SkyBoxCubeMap | 씬이 지워지지 않고 대신 스카이박스 또는 스카이돔이 렌더링됩니다. 스카이박스는 skyBoxCubeMap 프로퍼티에 정의된 큐브맵을 사용하여 정의됩니다. |
기본값은 SceneEnvironment.Transparent
다음 예제를 살펴보겠습니다. Suzanne 모델은 balsam
툴로 사전 처리될 것으로 예상되며 glTF 샘플 모델 리포지토리에서 소싱됩니다.
import QtQuick import QtQuick3D import QtQuick3D.Helpers Item { width: 1280 height: 720 View3D { id: v3d anchors.fill: parent environment: ExtendedSceneEnvironment { backgroundMode: SceneEnvironment.SkyBox lightProbe: Texture { source: "00455_OpenfootageNET_field_low.hdr" } glowEnabled: true glowStrength: 1.25 glowBloom: 0.25 glowBlendMode: ExtendedSceneEnvironment.GlowBlendMode.Additive } DirectionalLight { } Suzanne { scale: Qt.vector3d(50, 50, 50) z: -500 } PerspectiveCamera { id: camera } WasdController { controlledObject: camera } } }
DirectionalLight 에 추가로 이미지 기반 조명을 사용하고 라이트 프로브 텍스처를 스카이박스로 사용하면 다음과 같은 결과를 얻을 수 있습니다:
라이트 프로브가 없으면 어떻게 될까요?
backgroundMode: SceneEnvironment.Transparent
여기서 배경은 View3D 가 아니라 2D 및 3D 씬을 호스팅하는 QQuickWindow 또는 QQuickView 에서 제공됩니다. 조명은 DirectionalLight 에만 기반합니다.
고정된 투명 색상을 사용합니다:
backgroundMode: SceneEnvironment.Color clearColor: "green"
lightProbe, QQuickWindow::setColor(), Window::color, 및 View3D 을참조하십시오 .
clearColor : color |
이 속성은 backgroundMode 속성에 SceneEnvironment.Color
을 사용할 때 뷰포트를 지우는 데 사용할 색을 정의합니다.
기본값은 Qt::black
backgroundMode참조 .
debugSettings : QtQuick3D::DebugSettings |
이 속성은 렌더러의 디버깅 도구를 구성하는 데 사용되는 DebugSettings
객체를 지정합니다. 구성하는 동안 SceneEnvironment 은 자신과 연결된 DebugSettings 객체를 자동으로 생성하므로 일반적으로 사용자 지정 DebugSettings 설정은 필요하지 않습니다.
와이어프레임 모드를 활성화한 상태에서 씬을 렌더링하는 예시입니다:
메시의 노멀 벡터 시각화하기:
스페큘러 조명 기여도 시각화하기:
이 프로퍼티는 Qt 6.5에 도입되었습니다.
DebugSettings 를참조하십시오 .
depthPrePassEnabled : bool |
활성화하면 렌더러는 불투명 오브젝트에 대해 Z 프리패스를 수행합니다. 즉, 메인 렌더링 패스에 대한 드로우 호출을 실행하기 전에 깊이 버퍼를 미리 채우기 위해 단순 셰이더와 컬러 쓰기를 비활성화한 상태로 렌더링합니다.
이는 씬 콘텐츠에 따라 성능을 향상시킬 수 있습니다. 일반적으로 겹치는 오브젝트가 많고 프래그먼트 셰이딩이 많은 장면이 이 기능의 이점을 누릴 수 있습니다. 동시에 렌더러가 불투명한 오브젝트에 대해 앞뒤 정렬을 수행하므로 그 자체로 불필요한 조각 셰이딩을 줄이는 데 도움이 되므로 Z 프리패스가 항상 큰 개선 효과를 가져오는 것은 아니라는 점에 유의할 필요가 있습니다.
모바일 및 임베디드 시스템에서 흔히 사용되는 타일형 렌더링 아키텍처를 사용하는 GPU에서는 false
로 설정하는 것이 좋습니다.
기본값은 false
입니다.
참고: 깊이 테스트가 비활성화되어 있으면 이 속성은 영향을 미치지 않습니다.
depthTestEnabled : bool |
기본값은 true
입니다. 기본적으로 렌더러는 씬의 오브젝트를 opaque
또는 semi-transparent
으로 분류합니다. opaque
목록의 오브젝트(관련 머티리얼이 있는 서브메시)는 뎁스 테스트 및 뎁스 쓰기가 활성화된 상태로 먼저 렌더링되어 반투명 영역이 없는 일반적인 3D 오브젝트에 대해 최적의 Z 컬링을 제공합니다. semi-transparent
목록의 오브젝트는 뎁스 쓰기가 비활성화된 상태로 렌더링되지만, 뎁스 테스트가 활성화되어 있지만(불투명 오브젝트에 대한 테스트를 위해) 뒤에서 앞 순서(카메라로부터 중심점까지의 거리를 기준으로 정렬)로 렌더링됩니다. 이렇게 하면 node opacity 또는 머티리얼의 일부 색상 또는 텍스처 맵으로 인해 표면에 반투명 영역이 있는 3D 오브젝트에 대해 올바른 블렌딩("시스루")이 가능합니다.
이 속성을 false
으로 설정하면 Z 버퍼가 작성 및 테스트되지 않고 깊이 테스트가 건너뛰며 완전히 불투명한 오브젝트를 포함한 모든 오브젝트가 한 번에 렌더링되어 앞뒤로 정렬됩니다.
이 속성을 false
로 설정하는 경우는 거의 없습니다. 불투명 오브젝트가 거의 없거나 단일 백투프론트 정렬 패스가 더 나은 성능을 발휘하는 방식으로 변환되기 때문에 두 번의 접근 방식에서 이점이 거의 없다고 알려진 장면에서 유용할 수 있습니다.
참고: 이 속성을 false
로 설정하면 특정 장면에서 렌더링 오류가 발생할 수 있습니다. 또한 사용자 정의 머티리얼 및 효과의 그림자, 앰비언트 오클루전, SCREEN_TEXTURE
및 DEPTH_TEXTURE
같은 일부 기능은 뎁스 버퍼 사용을 활성화하지 않으면 올바르게 작동하지 않습니다.
참고: 이 플래그는 뎁스 또는 뎁스 스텐실 버퍼의 존재를 제어할 수 없습니다. 이러한 버퍼는 false
로 설정된 경우에도 여전히 할당될 수 있습니다.
effects : List<QtQuick3D::Effect> |
이 속성에는 전체 뷰포트에 적용될 포스트 프로세싱 효과 목록이 포함되어 있습니다. 각 효과의 결과가 다음 효과에 공급되므로 순서가 중요합니다.
참고: 기술적인 이유로 동일한 Effect 노드를 목록에 여러 번 추가하는 것은 지원되지 않으며 예기치 않은 결과를 초래할 수 있습니다.
fog : QtQuick3D::Fog |
lightProbe : QtQuick3D::Texture |
이 속성은 표준 조명 대신 또는 추가로 장면을 비추는 데 사용되는 이미지를 정의합니다.
이미지는 하이 다이내믹 레인지 이미지 또는 미리 생성된 큐브맵을 사용하는 것이 좋습니다. 사전 베이킹을 사용하면 필터링과 밉맵 생성에 시간을 소비하지 않기 때문에 런타임에 상당한 성능 향상을 제공합니다. 소스가 .hdr 또는 기타 이미지인 경우 이미지 파일을 로드한 후 런타임에 GPU 기반 사전 처리가 이루어지며, 특히 임베디드 및 모바일 하드웨어에서는 시간이 많이 소요될 수 있습니다. 따라서 애플리케이션은 여기에 설명된 대로 빌드 시점에 .hdr 이미지를 사전 처리할 것을 강력히 권장합니다.
참고: 텍스처를 sourceItem 와 함께 사용하는 것은 이 프로퍼티와 함께 지원되지 않습니다. 동적 Qt Quick 콘텐츠에 대한 모든 밉 레벨의 사전 필터링은 일반적으로 성능에 영향을 미치기 때문에 실제로는 적합하지 않습니다.
이미지 기반 조명에 대한 자세한 내용은 이미지 기반 조명 사용을 참조하십시오.
참고: 프로퍼티가 유효한 텍스처로 설정된 경우 라이트 프로브 텍스처는 backgroundMode 에 관계없이 조명에 사용됩니다. 그러나 backgroundMode 이 SceneEnvironment.SkyBox
로 설정된 경우 텍스처는 씬 배경을 스카이박스로 렌더링하는 데에도 사용됩니다.
아래 예제는 다음 씬의 환경에서 backgroundMode 을 변경하여 생성된 예제입니다. 이 씬에는 DirectionLight, PointLight 또는 SpotLight 이 없습니다. 모든 조명은 파노라마 HDRI 이미지를 기반으로 합니다.
import QtQuick import QtQuick3D import QtQuick3D.Helpers Item { width: 1280 height: 720 View3D { id: v3d anchors.fill: parent environment: ExtendedSceneEnvironment { backgroundMode: SceneEnvironment.SkyBox lightProbe: Texture { source: "00455_OpenfootageNET_field_low.hdr" } tonemapMode: SceneEnvironment.TonemapModeFilmic sharpnessAmount: 0.4 glowEnabled: true glowStrength: 1.25 glowBloom: 0.25 glowBlendMode: ExtendedSceneEnvironment.GlowBlendMode.Additive } Node { scale: Qt.vector3d(100, 100, 100) Sponza { } Suzanne { y: 1 scale: Qt.vector3d(0.5, 0.5, 0.5) eulerRotation.y: -90 } } PerspectiveCamera { id: camera y: 100 } WasdController { controlledObject: camera } } }
위 환경의 결과:
backgroundMode 을 SceneEnvironment.Transparent
으로 전환하면 다음과 같습니다:
여기서 3D 씬의 조명은 이전과 동일하므로 머티리얼은 이전과 동일한 방식으로 조명 계산에서 라이트 프로브를 사용하지만 스카이박스는 렌더링되지 않습니다. 배경은 2D 및 3D 씬을 호스팅하는 QQuickWindow 의 기본 투명 색상이므로 흰색입니다.
lightProbe 속성 값을 기본값인 null로 다시 설정하는 것이 유효합니다. 이렇게 하면 이전에 연결된 텍스처의 할당이 해제됩니다. 예를 들어 삭제 키를 사용하여 스카이박스가 있는 이미지 기반 조명과 배경에 고정된 투명 색상이 있는 이미지 기반 조명 없이 동적으로 전환해 보겠습니다:
environment: ExtendedSceneEnvironment { id: env backgroundMode: SceneEnvironment.SkyBox lightProbe: iblTex tonemapMode: SceneEnvironment.TonemapModeFilmic sharpnessAmount: 0.4 glowEnabled: true glowStrength: 1.25 glowBloom: 0.25 glowBlendMode: ExtendedSceneEnvironment.GlowBlendMode.Additive } Texture { id: iblTex source: "00455_OpenfootageNET_field_low.hdr" } focus: true Keys.onDeletePressed: { if (env.backgroundMode == SceneEnvironment.SkyBox) { env.backgroundMode = SceneEnvironment.Color; env.clearColor = "green"; env.lightProbe = null; } else { env.backgroundMode = SceneEnvironment.SkyBox; env.lightProbe = iblTex; } }
Delete 키를 누르면 다음과 같은 결과가 나타납니다. 여기서 사용된 장면에는 조명이 없으므로 모든 3D 모델이 완전히 검은색으로 나타납니다.
lightProbe는 일반적으로 이미지 파일(일반적으로 .hdr 또는 .ktx)에서 데이터를 소싱하는 텍스처 인스턴스와 함께 사용되지만, 인메모리를 사용하는 텍스처( procedurally generated image data)와 연결하는 것도 좋습니다. 대표적인 예로 QtQuick3D.Helpers 모듈의 ProceduralSkyTextureData 에서 이미지 데이터를 생성하는 텍스처를 들 수 있습니다:
backgroundMode: SceneEnvironment.SkyBox lightProbe: Texture { textureData: ProceduralSkyTextureData { } }
이를 통해 절차적으로 생성된 HDR 스카이박스 텍스처가 스카이박스와 이미지 기반 조명에 모두 사용됩니다:
backgroundMode, 이미지 기반 조명 사용, IBL 큐브맵 사전 생성, probeExposure, probeHorizon, probeOrientation, ProceduralSkyTextureData 를참조하십시오 .
lightmapper : Lightmapper |
이 프로퍼티를 유효한 라이트매퍼 객체로 설정하면 라이트맵을 베이크할 때 객체에 지정된 설정이 고려됩니다.
기본값은 null이며, 이는 모든 베이킹 관련 설정에 기본값을 사용한다는 의미입니다.
라이트맵을 베이크하는 방법에 대한 자세한 내용은 Lightmapper 문서를 참조하세요.
라이트맵이 애플리케이션과 관련이 없고 베이크된 조명이 생성되지 않는 경우 프로퍼티와 관련 오브젝트는 실제로 아무런 용도가 없습니다.
Model::usedInBakedLighting, Model::bakedLightmap, Light::bakeMode, Lightmapper 을참조하십시오 .
probeExposure : real |
이 프로퍼티는 라이트 프로브에서 방출되는 빛의 양을 수정합니다. 톤 매핑의 일부는 노출 매핑이며, 이 프로퍼티는 조명 프로브의 조명 값이 톤 매핑되는 방식을 조정합니다.
기본적으로 노출은 1.0으로 설정됩니다.
참고: tonemapMode 이 SceneEnvironment.TonemapModeNone
으로 설정된 경우 이 속성은 영향을 미치지 않습니다.
lightProbe, probeHorizon, probeOrientation 를참조하세요 .
probeHorizon : real |
이 속성을 값을 증가시켜 정의하면 환경의 아래쪽 절반에 어두움(검정색)을 추가하여 조명이 주로 이미지의 위쪽에서 나오도록 하고 아래쪽 절반의 특정 반사를 제거합니다. 이 속성은 지면으로부터 라이트 프로브의 반사를 가리는 효과가 있는 지면 평면을 설명하는 데 유용합니다. 이는 장면의 콘텐츠를 고려하지 않고 이미지에서 직접 광원 프로브 기여도를 가져오기 때문에 필요합니다.
프로브 호라이즌 프로퍼티의 예상 값 범위는 0.0에서 1.0 사이입니다. 이 범위를 벗어나는 모든 값은 예상 범위로 고정됩니다.
기본적으로 프로브 호라이즌은 0.0으로 설정되어 있어 조정 없이 전체 조명 프로브가 사용됩니다.
참고: 프로브 호라이즌 프로퍼티는 머티리얼 조명에만 영향을 미치며 스카이 박스 렌더링에는 영향을 미치지 않습니다.
lightProbe, probeExposure, probeOrientation 를참조하십시오 .
probeOrientation : vector3d |
이 프로퍼티는 라이트 프로브의 방향을 정의할 때 사용합니다. 방향은 x, y 및 z 축에 대한 오일러 각도(도)로 정의됩니다.
참고: 이 값은 lightProbe 텍스처에 설정된 모든 텍스처 회전 및 오프셋과 함께 lightProbe 텍스처가 샘플링되는 방식을 보강합니다.
lightProbe, probeHorizon, probeExposure 를참조하십시오 .
scissorRect : rect |
이 프로퍼티는 뷰 좌표에서 왼쪽 상단 모서리가 [0, 0]인 가위 직사각형을 정의합니다.
이 프로퍼티는 Qt 6.5에 도입되었습니다.
skyBoxCubeMap : QtQuick3D::CubeMapTexture |
이 프로퍼티는 배경 모드가 SkyBoxCubeMap
일 때 스카이박스로 사용할 큐브맵을 정의합니다.
이 프로퍼티는 Qt 6.4에 도입되었습니다.
skyboxBlurAmount : real |
이 속성은 backgroundMode 속성에 SceneEnvironment.SkyBox
을 사용할 때 스카이박스를 얼마나 흐리게 할지를 결정합니다. 기본값은 0.0
, 즉 흐리게 처리하지 않습니다.
허용되는 값은 0.0에서 1.0 사이이며, 다른 모든 값은 이 범위로 고정됩니다.
이 프로퍼티는 Qt 6.4에 도입되었습니다.
specularAAEnabled : bool |
이 프로퍼티를 활성화하면 스페큘러 에일리어싱이 완화됩니다. 스페큘러 에일리어싱은 카메라를 움직일 때 깜빡이는 밝은 점의 형태로 나타나는 경우가 많습니다.
기본값은 false입니다.
스페큘러 AA 비활성화 | 스페큘러 AA 활성화 |
---|---|
이 프로퍼티는 Qt 6.4에 도입되었습니다.
temporalAAEnabled : bool |
이 프로퍼티를 활성화하면 템포럴 안티앨리어싱이 사용됩니다.
프레임 사이에 카메라가 아주 미세하게 흔들리고 각각의 새 프레임의 결과가 이전 프레임과 블렌딩됩니다.
참고: 템포럴 앤티앨리어싱은 antialiasingMode 이 MSAA인 경우 적용되지 않습니다.
참고: 프로그레시브AA antialiasingMode 와 함께 사용하면 장면이 애니메이션될 때 템포럴AA가 사용되고 애니메이션이 중지되면 프로그레시브AA가 사용됩니다.
장점: 카메라가 흔들리기 때문에 다른 방법으로는 놓칠 수 있는 실제 디테일을 찾아내므로 성능에 미치는 영향이 적습니다.
단점: 빠르게 움직이는 오브젝트는 한 프레임 고스팅을 유발합니다.
참고: 템포럴 앤티앨리어싱은 현재 멀티뷰 렌더링에서 지원되지 않으므로 VR/AR 애플리케이션에서 사용해서는 안 됩니다.
temporalAAStrength : real |
이 프로퍼티는 시간적 움직임(앤티앨리어싱)의 양을 수정합니다. temporalAAEnabled 프로퍼티가 참일 때만 효과가 있습니다.
temporalAAEnabled 을참조하십시오 .
tonemapMode : enumeration |
이 속성은 렌더링 전에 색상을 톤 매핑하는 방법을 정의합니다. Qt Quick 3D 의 모든 렌더링은 선형 색상 공간에서 수행되므로 많은 경우 표시할 수 없는 색상 값이 생성될 수 있습니다. 톤맵모드는 색상을 표시 가능한 범위로 다시 매핑하는 데 사용되는 기술을 결정합니다.
기본값은 SceneEnvironment.TonemapModeLinear
Constant | 설명 |
---|---|
SceneEnvironment.TonemapModeNone | 모든 톤 매핑이 무시됩니다. 이 모드는 포스트 프로세싱 효과를 수행할 때 유용합니다. |
SceneEnvironment.TonemapModeLinear | 선형 톤 매핑이 적용됩니다. 색상이 감마 보정되어 sRGB 색 공간으로 반환됩니다. |
SceneEnvironment.TonemapModeAces | 아카데미 컬러 인코딩 시스템 톤 매핑이 적용됩니다. |
SceneEnvironment.TonemapModeHejlDawson | 헤일-도슨 톤 매핑이 적용됩니다. |
SceneEnvironment.TonemapModeFilmic | 필름 톤 매핑이 적용됩니다. |
이러한 다양한 모드의 예는 ExtendedSceneEnvironment 을 참조하세요.
참고: 포스트 프로세싱 효과를 사용할 때 대부분의 효과는 톤 매핑되지 않은 선형 색상 데이터를 사용합니다. Effect 유형을 통해 구현된 애플리케이션 제공 사용자 정의 효과의 경우, Qt 6.5 효과부터는 선형 색상 데이터로 작동한다고 가정하고 체인의 마지막 효과 출력에 톤 매핑이 자동으로 수행된다는 점을 알아두는 것이 중요합니다. 톤 매핑을 완전히 사용자 정의해야 하는 경우 SceneEnvironment.TonemapModeNone
값을 설정하여 내장 톤 매퍼를 비활성화하고 대신 체인의 마지막 효과에서 색상 값을 적절히 조정하는 것이 좋습니다. 이는 ExtendedSceneEnvironment 의 내장 효과에는 적용되지 않는데, 이는 환경에서 활성화된 내장 효과의 조합에 관계없이 적절한 톤 매핑을 자동으로 처리하기 때문입니다.
이 속성은 Qt 6.0에 도입되었습니다.
© 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.