이 페이지에서

SceneEnvironment QML Type

씬이 렌더링되는 방식을 구성할 수 있습니다. 더 보기...

Import Statement: import QtQuick3D
Inherits:

Object3D

Inherited By:

ExtendedSceneEnvironment

속성

상세 설명

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
}

기능 개요

ExtendedSceneEnvironment도 참조하십시오 .

속성 설명서

antialiasingMode : enumeration

이 속성은 씬을 렌더링할 때 적용되는 앤티앨리어싱 모드를 제어합니다.

사용 가능한 값은 다음과 같습니다:

상수설명
SceneEnvironment.NoAA앤티앨리어싱이 적용되지 않습니다.
SceneEnvironment.SSAA슈퍼샘플 앤티앨리어싱이 적용됩니다.
SceneEnvironment.MSAA멀티샘플 앤티앨리어싱이 적용됩니다.
SceneEnvironment.ProgressiveAA프로그레시브 앤티앨리어싱이 적용됩니다.

기본값은 SceneEnvironment.NoAA 입니다.

슈퍼샘플링

씬이 더 높은 해상도로 렌더링된 후 실제 해상도로 축소됩니다.

장점: 고화질. 지오메트리 실루엣뿐만 아니라 모든 장면 콘텐츠에 앤티앨리어싱을 적용합니다.

단점: 일반적으로 MSAA보다 비용이 더 많이 듭니다. 비디오 메모리 사용량이 증가합니다. View3D 항목에서 Inline을 제외한 모든 renderMode를 지원하는 기술이지만, 이 기술은 먼저 텍스처로 렌더링하는 과정을 수반하기 때문에 renderMode가 Underlay 또는 Overlay인 상태에서 SSAA를 활성화하면 일반적으로 필요하지 않은 중간 텍스처와 렌더 패스가 사용되어 성능 저하가 더 두드러질 수 있습니다. SSAA는 renderMode가 기본값인 Offscreen일 때만 사용하는 것이 권장됩니다.

멀티샘플링

지오메트리의 가장자리에 슈퍼샘플링이 적용되어 실루엣이 더 매끄러워집니다. 하지만 이 기법은 지오메트리 내부의 머티리얼에는 영향을 미치지 않습니다.

장점: 렌더 모드(renderMode)와 관계없이 모든 View3D 항목에서 작동합니다. 앨리어싱이 가장 두드러지기 쉬운 지오메트리 실루엣에서 좋은 결과를 보여주며, 빠른 애니메이션에서도 문제없이 작동합니다. 성능은 전적으로 시스템(GPU)의 성능에 달려 있습니다.

단점: 텍스처나 반사 문제 해결에는 도움이 되지 않습니다. 비디오 메모리 사용량이 증가합니다. 성능이 낮은 그래픽 하드웨어에서는 사용 시 부하가 클 수 있습니다. renderMode에 따라 창 단위 또는 개별 View3D 항목별로 제어할 수 있습니다. 효과가 적용된 Underlay/Overlay 또는 Offscreen을 사용할 경우, 각 View3D 항목별로 MSAA를 제어할 수 있습니다. 반면, 효과 없이 Underlay/Overlay를 사용하거나 Inline을 사용할 경우 MSAA는 창 단위로 제어됩니다.

참고: 효과가 적용된 언더레이/오버레이(Underlay/Overlay)나 오프스크린(Offscreen) 이외의 렌더 모드( renderMode )를 가진 View3D 항목의 경우, 멀티샘플링은 QQuickWindow 또는 QQuickView 의 QSurfaceFormat 를 통해서만 활성화할 수 있습니다. 이렇게 하면 해당 창의 모든 콘텐츠(2D 및 3D 모두)에 영향을 미칩니다.

프로그레시브 앤티앨리어싱

이 속성은 씬에 적용되는 프로그레시브 앤티앨리어싱을 활성화하고 그 수준을 설정합니다.

씬의 모든 콘텐츠가 움직임을 멈춘 상태에서, 프레임 사이마다 카메라가 아주 미세하게 흔들리며, 각 새로운 프레임의 결과가 이전 프레임들과 자연스럽게 혼합됩니다. 프레임이 쌓일수록 결과물의 화질이 더 좋아집니다.

장점: 장면 내 모든 콘텐츠가 정지해 있을 때 뛰어난 결과를 제공합니다.

단점: 시각적 변화가 발생하면 효과가 나타나지 않습니다. 프레임을 축적하고 블렌딩해야 하므로 처리 비용이 큽니다. 비디오 메모리 사용량이 증가합니다.

참고: 프로그레시브 앤티앨리어싱은 현재 멀티뷰 렌더링에서 지원되지 않으며, VR/AR 애플리케이션에서는 사용해서는 안 됩니다.

앤티앨리어싱 방법에 대한 자세한 내용은 ‘앤티앨리어싱 모범 사례’를 참조하십시오.

antialiasingQuality : enumeration

이 속성은 씬에 적용되는 앤티앨리어싱 수준을 설정합니다. 동작은 사용된 ‘ antialiasingMode ’에 따라 달라집니다. ‘ antialiasingMode ’ 속성이 ‘ NoAA ’로 설정된 경우, 이 속성은 아무런 영향을 미치지 않습니다.

사용 가능한 값은 다음과 같습니다.

상수설명
SceneEnvironment.MediumSSAA: 앤티앨리어싱에 1.2배의 슈퍼샘플링 해상도를 사용합니다.
MSAA: 앤티앨리어싱에 픽셀당 2개의 샘플을 사용합니다.
ProgressiveAA: 앤티앨리어싱에 최종 이미지를 생성하기 위해 2프레임을 사용합니다.
SceneEnvironment.HighSSAA: 앤티앨리어싱에 1.5배의 슈퍼샘플링 해상도를 사용합니다.
MSAA: 픽셀당 4개의 샘플을 사용하여 앤티앨리어싱을 적용합니다.
ProgressiveAA: 최종 이미지를 생성하기 위해 4프레임을 사용하여 앤티앨리어싱을 적용합니다.
SceneEnvironment.VeryHighSSAA: 앤티앨리어싱은 2.0배의 슈퍼샘플링 해상도를 사용합니다.
MSAA: 앤티앨리어싱은 픽셀당 8개의 샘플을 사용합니다.
ProgressiveAA: 앤티앨리어싱은 최종 이미지를 생성하기 위해 8프레임을 사용합니다.

기본값은 SceneEnvironment.High

aoBias : real

이 속성은 가까운 거리에서 오브젝트에 앰비언트 오클루전이 나타나지 않도록 하는 컷오프 거리를 정의합니다. 값을 높일수록 앰비언트 오클루전이 나타나기까지 오브젝트 간에 필요한 거리가 늘어납니다.

참고: 앰비언트 오클루전 그림자가 나타나지 않아야 할 오브젝트에 그림자가 보이는경우 , 값을 약간 높여 가까운 거리에서 나타나는 결과를 제거하십시오.

기본값은 0.0입니다.

aoDistance : real

이 속성은 앰비언트 오클루전 그림자가 오브젝트로부터 대략 얼마나 멀리 퍼져 나가는지를 정의합니다. 거리가 멀어질수록 성능에 미치는 영향이 커집니다.

기본값은 5.0입니다.

다음은 기본값인 aoSoftness 와 최대값인 aoStrength 를 적용한 예시입니다:

aoDistance 5aoDistance 1

앰비언트 오클루전 거리가 5인 장면

앰비언트 오클루전 거리가 1인 장면

참고: 시각적으로 훌륭한 스크린 스페이스 앰비언트 오클루전을얻으려면 aoStrength, aoSoftness, aoDistance, aoDither, aoBias, aoSampleRate 등 여러 관련 매개변수를 신중하게 조정해야 합니다.

aoStrength 및 aoSoftness도 참조하십시오 .

aoDither : bool

이 속성을 활성화하면 앰비언트 오클루전 그림자 밴드의 가장자리를 분산시켜 부드러움을 향상시킵니다(때때로 뚜렷한 패턴의 아티팩트가 발생할 위험이 있습니다).

참고: 카메라의 클리핑 평면 간 거리가너무 멀면 앰비언트 오클루전 관련 문제가 발생할 수 있습니다. 앰비언트 오클루전에 이상한 줄무늬가 보인다면, 카메라의 ‘ clipFar ’ 속성을 조정하여 콘텐츠에 더 가깝게 설정해 보십시오.

기본값은 false 입니다.

‘ PerspectiveCamera.clipFar ’ 및 ‘ OrthographicCamera.clipFar ’항목도 참조하십시오 .

aoEnabled : bool [since 6.5]

앰비언트 오클루전을 활성화하거나 비활성화합니다.

기본값은 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 을 적용한 예시입니다:

aoSoftness 50aoSoftness 25

앰비언트 오클루전 부드러움 값이 50인 장면

앰비언트 오클루전 부드러움 값이 25인 씬

참고: 시각적으로 훌륭한 스크린 스페이스 앰비언트 오클루전을얻으려면 aoStrength, aoSoftness, aoDistance, aoDither, aoBias, aoSampleRate 와 같은 여러 관련 매개변수를 신중하게 조정해야 합니다.

aoStrength 및 aoDistance도 참조하십시오 .

aoStrength : real

이 속성은 적용되는 앰비언트 오클루전(Ambient Occlusion)의 강도를 정의합니다. 앰비언트 오클루전은 근사화된 전역 조명(global illumination)의 한 형태로, 물체들이 서로 가까이 있을 때 방향성을 갖지 않는 자체 그림자를 생성합니다. 값을 100으로 설정하면 완전히 어두운 그림자가 생성되며, 값을 낮추면 그림자가 더 밝게 나타납니다. 값을 0으로 설정하면 앰비언트 오클루전을 완전히 비활성화하여, 장면에서 렌더링되는 3D 오브젝트의 시각적 사실성은 다소 떨어지지만 성능은 향상됩니다.

0 이외의 모든 값은 성능에 동일한 영향을 미칩니다.

기본값은 0.0입니다. 최대값은 100.0입니다.

값을 0으로 설정하면 ‘ aoEnabled ’를 false로 설정하는 것과 동일합니다.

다음은 기본값인 ‘ aoSoftness ’ 및 ‘ aoDistance ’ 설정으로 렌더링된 화면입니다:

aoStrength 0 (AO 비활성화)aoStrength 100aoStrength 50

앰비언트 오클루전 강도가 0인 씬

앰비언트 오클루전 강도가 100인 씬

앰비언트 오클루전 강도가 50인 장면

참고: 시각적으로 만족스러운 스크린 스페이스 앰비언트 오클루전을얻으려면 aoStrength, aoSoftness, aoDistance, aoDither, aoBias, aoSampleRate 등 여러 관련 매개변수를 세심하게 조정해야 합니다.

aoEnabled, aoDistance 및 aoSoftness도 참조하십시오 .

backgroundMode : enumeration

이 속성은 씬의 배경을 지울지 여부와 지우는 방식을 제어합니다.

참고: View 3D를 지원하는 컬러 버퍼의지우기가 항상 발생하는 것은 아닙니다. ' renderMode ' 속성에 따라 ' View3D '이 자체적으로 지우기 작업을 수행하지 않을 수 있으며, 이 경우 ' SceneEnvironment.Transparent ' 및 ' SceneEnvironment.Color '은 아무런 효과가 없습니다. 기본 ' Offscreen ' render mode (텍스처로 렌더링) 모드만이 모든 지우기 모드를 지원합니다. ' Underlay ' 모드를 사용할 때는 ' QQuickWindow::setColor()' 또는 ' Window.color '를 사용하여 ' Qt Quick ' 장면의 지우기 색상을 제어하십시오. SkyBox는 실제 지오메트리를 렌더링하는 것을 의미하므로 처리 방식이 다르며, 따라서 모든 렌더 모드에서 동일하게 작동합니다.

상수설명
SceneEnvironment.Transparent씬이 투명하게 지워집니다. 이는 다른 항목 위에 3D 콘텐츠를 렌더링할 때 유용합니다. 이 모드는 View3D 가 후처리 기능이 활성화되지 않은 상태에서 Underlay 또는 Overlay 렌더 모드를 사용할 때는 효과가 없습니다.
SceneEnvironment.ColorclearColor 속성에 지정된 색상으로 씬이 지워집니다. 이 모드는 View3D 가 후처리 기능이 활성화되지 않은 상태에서 Underlay 또는 Overlay 렌더 모드를 사용하는 경우에는 효과가 없습니다.
SceneEnvironment.SkyBox씬이 지워지지 않고, 대신 스카이박스(SkyBox) 또는 스카이돔(Skydome)이 렌더링됩니다. 스카이박스는 lightProbe 속성에 정의된 HDRI 맵을 사용하여 정의됩니다.
SceneEnvironment.SkyBoxCubeMap씬은 지워지지 않고, 대신 스카이박스(SkyBox)나 스카이돔(Skydome)이 렌더링됩니다. 스카이박스는 skyBoxCubeMap 속성에 정의된 큐브맵을 사용하여 정의됩니다.
SceneEnvironment.SkyMaterial씬은 지워지지 않고, 대신 스카이박스(SkyBox)나 스카이돔(Skydome)이 렌더링됩니다. 스카이박스는 ` skyMaterial ` 속성에 정의된 ` SkyMaterial `에 의해 생성된 큐브맵에서 샘플링됩니다. (Qt 6.12부터)

기본값은 SceneEnvironment.Transparent

다음 예제를 살펴보겠습니다. Suzanne 모델은 balsam 도구로 사전 처리된 것으로 가정하며, glTF Sample Models 저장소에서 가져왔습니다.

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 외에도 이미지 기반 조명을 사용하고, 라이트 프로브 텍스처를 스카이박스로 설정하면 다음과 같은 결과가 나타납니다:

배경이 포함된 3D 객체

라이트 프로브가 없으면 어떻게 될까요?

backgroundMode: SceneEnvironment.Transparent

여기서 배경은 View3D 가 아닌, 2D 및 3D 씬을 호스팅하는 QQuickWindow 또는 QQuickView 에서 제공됩니다. 조명은 DirectionalLight 에만 기반합니다.

투명한 배경을 가진 3D 객체

고정된 투명 색상을 사용하는 경우:

backgroundMode: SceneEnvironment.Color
clearColor: "green"

초록색 배경의 3D 객체

lightProbe, QQuickWindow::setColor(), Window::color, View3D도 참조하십시오 .

clearColor : color

이 속성은 ` backgroundMode ` 속성에 ` SceneEnvironment.Color `을 사용할 때 뷰포트를 지울 때 사용할 색상을 정의합니다.

기본값은 Qt::black

backgroundMode항목도 참조하십시오 .

debugSettings : QtQuick3D::DebugSettings [since 6.5]

이 속성은 렌더러의 디버깅 도구를 구성하는 데 사용되는 ` DebugSettings ` 객체를 지정합니다. 생성 과정에서 ` SceneEnvironment `는 자동으로 자신과 연관된 ` DebugSettings ` 객체를 생성하므로, 일반적으로 사용자 정의 ` DebugSettings `를 설정할 필요는 없습니다.

와이어프레임 모드를 활성화하여 씬을 렌더링하는 예시:

와이어프레임 모드의 스폰자 장면

메시의 노멀 벡터 시각화:

표면 법선을 보여주는 스폰자 장면

스페큘러 조명의 기여도 시각화:

스폰자 장면에서 보이는 스페큘러 하이라이트

이 속성은 Qt 6.5에서 도입되었습니다.

DebugSettings도 참조하십시오 .

depthPrePassEnabled : bool

이 기능이 활성화되면 렌더러는 불투명 오브젝트에 대해 Z-프리패스를 수행합니다. 즉, 메인 렌더링 패스에 대한 드로우 호출을 발행하기 전에 깊이 버퍼를 미리 채우기 위해, 간단한 셰이더를 사용하고 색상 쓰기 기능을 비활성화한 상태로 해당 오브젝트를 렌더링합니다.

이는 씬의 구성 요소에 따라 성능을 향상시킬 수 있습니다. 일반적으로 객체가 많이 겹치고 프래그먼트 셰이딩 비용이 높은 씬에서 이 기능을 통해 이점을 얻을 수 있습니다. 한편, 렌더러가 불투명 객체에 대해 전후 정렬(front-to-back sorting)을 수행한다는 점은 주목할 만합니다. 이 정렬 자체만으로도 불필요한 프래그먼트 셰이딩을 줄이는 데 도움이 되므로, Z-프리패스가 항상 상당한 성능 향상을 가져오는 것은 아닙니다.

모바일 및 임베디드 시스템에서 흔히 볼 수 있는 타일형 렌더링 아키텍처를 사용하는 GPU의 경우, 이 값을 false 로 설정하는 것이 권장됩니다.

기본값은 ` false`입니다.

참고: 깊이 테스트가 비활성화된 경우이 속성은 아무런 영향을 미치지 않습니다.

depthTestEnabled : bool

기본값은 ` true`입니다. 기본적으로 렌더러는 씬 내의 오브젝트를 ` opaque ` 또는 ` semi-transparent`로 분류합니다. ` opaque ` 목록에 포함된 오브젝트(관련 머티리얼이 적용된 서브메시)는 먼저 렌더링되며, 깊이 테스트와 깊이 쓰기가 활성화되어 반투명 영역이 없는 일반적인 3D 오브젝트에 대해 최적의 Z-컬링을 제공합니다. semi-transparent 목록에 있는 오브젝트는 깊이 쓰기(depth write)가 비활성화된 상태로 렌더링되지만, 불투명 오브젝트와의 비교를 위해 깊이 테스트(depth testing)는 여전히 활성화된 상태로, 뒤에서 앞으로의 순서(카메라로부터 중심점의 거리를 기준으로 정렬됨)로 렌더링됩니다. 이를 통해 node opacity 나 머티리얼의 색상 또는 텍스처 맵으로 인해 표면에 반투명 영역이 포함된 3D 오브젝트에 대해 올바른 블렌딩("투과")이 가능합니다.

이 속성이 ' false'로 설정되면 Z-버퍼에 쓰기 및 테스트가 수행되지 않고, 깊이 테스트가 건너뛰어지며, 완전히 불투명한 오브젝트를 포함한 모든 오브젝트가 뒤에서 앞으로 정렬된 순서대로 한 번에 렌더링됩니다.

이 속성을 ` false `로 설정해야 할 경우는 거의 없습니다. 불투명한 오브젝트가 매우 적거나, 단일의 뒤에서 앞으로 정렬된 패스가 더 나은 성능을 발휘하도록 변환된 경우 등, 2단계 방식이 별다른 이점을 주지 않는 것으로 알려진 장면에서 유용할 수 있습니다.

참고: 이 속성을 ` false `로설정하면 특정 장면에서 렌더링 오류가 발생할 수 있습니다. 또한, 사용자 정의 머티리얼 및 효과에서 그림자, 앰비언트 오클루전(ambient occlusion), 앰비언트 스텐실( SCREEN_TEXTURE ), 앰비언트 스텐실 비전( DEPTH_TEXTURE )과 같은 일부 기능은 깊이 버퍼 사용을 활성화하지 않으면 정상적으로 작동하지 않습니다.

참고: 이 플래그는 깊이 버퍼나 깊이-스텐실 버퍼의 존재 여부를 제어하지 않습니다. 이 속성이 ` false`로 설정되어 있더라도 해당 버퍼는 여전히 할당될 수 있습니다.

effects : List<QtQuick3D::Effect>

이 속성에는 전체 뷰포트에 적용될 후처리 효과 목록이 포함되어 있습니다. 각 효과의 결과가 다음 효과로 전달되므로 순서가 중요합니다.

참고: 기술적인이유로 , 동일한 ‘ Effect ’ 노드를 목록에 여러 번 추가하는 것은 지원되지 않으며, 예상치 못한 결과가 발생할 수 있습니다.

fog : QtQuick3D::Fog [since 6.5]

이 속성이 유효한 Fog 객체로 설정되면, 렌더러의 내장 안개 기능을 구성하는 데 사용됩니다.

기본값은 null이며, 이는 안개가 없음을 의미합니다. 이는 enabled 가 false로 설정된 Fog 객체를 지정하는 것과 동일합니다.

안개 효과가 적용된 장면

이 속성은 Qt 6.5에서 도입되었습니다.

Fog항목도 참조하십시오 .

lightProbe : QtQuick3D::Texture

이 속성은 표준 조명을 대신하거나, 또는 표준 조명에 추가하여 씬에 조명을 비추는 데 사용되는 이미지를 정의합니다.

이 이미지는 가급적 고역동범위(HDR) 이미지나 미리 생성된 큐브맵이어야 합니다. 미리 베이킹을 수행하면 필터링 및 밉맵 생성에 시간이 소요되지 않으므로 런타임 성능이 크게 향상됩니다. 소스가 .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 로 변경하면 다음과 같은 결과가 나옵니다:

backgroundMode가 transparent로 설정된 장면

backgroundMode가 transparent로 설정된 장면을 다른 각도에서 본 모습

이 경우 3D 씬의 조명은 이전과 동일합니다. 즉, 머티리얼이 조명 계산 시 이전과 마찬가지로 라이트 프로브를 사용하지만, 스카이박스는 렌더링되지 않습니다. 2D 및 3D 씬을 호스팅하는 QQuickWindow 의 기본 투명 색상이 흰색이므로 배경도 흰색으로 표시됩니다.

lightProbe 속성 값을 기본값인 null로 다시 설정하는 것도 유효합니다. 이렇게 하면 이전에 연결된 텍스처가 해제됩니다. 예를 들어, Delete 키를 사용하여 스카이박스가 포함된 이미지 기반 조명과, 배경에 고정된 클리어 색상이 적용된 이미지 기반 조명이 없는 상태 사이를 동적으로 전환해 보겠습니다:

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 모델이 완전히 검은색으로 표시된다는 점을 기억하십시오.

녹색 배경 위에 라이트 프로브가 적용되지 않은 3D 오브젝트

녹색 배경 위에 광 프로브가 없는 접지판

lightProbe는 일반적으로 이미지 파일(대개 .hdr 또는 .ktx)에서 데이터를 가져오는 Texture 인스턴스와 함께 사용되지만, 메모리 내 데이터( procedurally generated image data)를 사용하는 Texture와 연결하는 것도 합리적일 수 있습니다. 이에 대한 대표적인 예는 QtQuick3D 의 Helpers 모듈에 있는 ProceduralSkyTextureData 을 통해 이미지 데이터가 생성되는 텍스처입니다:

backgroundMode: SceneEnvironment.SkyBox
lightProbe: Texture {
    textureData: ProceduralSkyTextureData {
    }
}

이를 통해 절차적으로 생성된 HDR 스카이박스 텍스처를 얻을 수 있으며, 이 텍스처는 이제 스카이박스 및 이미지 기반 라이팅(IBL) 모두에 사용됩니다:

배경에 보이는 절차적 하늘에 비친 건축물 풍경

backgroundMode, 이미지 기반 조명 사용, IBL 큐브맵 사전 생성, probeExposure, probeHorizon, probeOrientation 및 ProceduralSkyTextureData도 참조하십시오 .

lightmapper : Lightmapper

이 속성이 유효한 Lightmapper 객체로 설정되면, 라이트맵을 베이킹할 때 해당 객체에 지정된 설정이 반영됩니다.

기본값은 null이며, 이는 베이킹과 관련된 모든 설정에 대해 기본값을 사용함을 의미합니다.

라이트맵 베이킹 방법에 대한 자세한 내용은 Lightmapper 문서를 참조하십시오.

라이트맵이 애플리케이션과 관련이 없고 베이킹된 조명이 생성되지 않는 경우, 이 속성과 관련 객체는 실제로 아무런 용도도 없습니다.

Model::usedInBakedLighting, Model::bakedLightmap, Light::bakeMode 및 Lightmapper도 참조하십시오 .

oitMethod : enumeration [since 6.11]

이 속성은 순서 독립적 투명도(OIT) 방식을 지정합니다. 이 속성을 유효한 OIT 방식으로 설정하면 렌더러가 투명한 픽셀을 올바른 깊이 순서대로 렌더링합니다.

사용 가능한 값은 다음과 같습니다.

상수설명
SceneEnvironment.OITNoneOIT가 비활성화됩니다.
SceneEnvironment.OITWeightedBlended순서 독립적 투명도를 근사적으로 구현합니다.
SceneEnvironment.OITLinkedList정확한 순서 독립적 투명도입니다.

기본값은 ` None `이며, 순서 독립적 투명도가 비활성화되어 있습니다.

가중치 혼합

이는 순서 독립적 투명도를 근사적으로 구현한 것입니다. 투명한 프래그먼트는 오프스크린 버퍼에 렌더링되며, 각 프래그먼트에는 카메라와의 거리를 기준으로 가중치가 적용됩니다. 그런 다음 각 픽셀의 가중치를 제거한 후 이 버퍼를 백버퍼에 블렌딩합니다. 이 방법은 모든 프래그먼트에 대해 소스 오버(source-over) 합성 규칙을 따르지 않으므로 결과가 정확한 결과와 다르지만, 구형 하드웨어에서도 작동하며 다른 더 정밀한 방법보다 빠릅니다.

연결 리스트

이것은 정확한 순서 독립적 투명도(OIT) 방식입니다. 투명한 프래그먼트는 렌더링 단계에서 연결 리스트에 렌더링되고, 깊이 순으로 정렬된 후 합성 단계에서 블렌딩됩니다.

참고: GLES 3.1 이하 버전을 사용하는 기기에서는OIT가 MSAA와 함께 작동하지 않을 수 있습니다. 이러한 기기에서 OIT를 사용하려면 MSAA를 사용하지 않는 것이 좋습니다.

참고: 순서 독립적 투명도(OIT)는 소스 오버(source-over) 블렌드 모드에만 적용됩니다. 씬에 다른 블렌드 모드를 사용하는 오브젝트가 포함되어 있으면 OIT가 비활성화됩니다.

이 속성은 Qt 6.11에서 도입되었습니다.

probeExposure : real

이 속성은 라이트 프로브에서 방출되는 빛의 양을 조정합니다. 톤 매핑의 일부는 노출 매핑이며, 이 속성은 라이트 프로브의 빛 값이 톤 매핑되는 방식을 조정합니다.

기본적으로 노출 값은 1.0으로 설정되어 있습니다.

참고: ‘ tonemapMode ’가 ‘ SceneEnvironment.TonemapModeNone ’로 설정된 경우,이 속성은 효과가 없습니다.

관련 항목: lightProbe, probeHorizon, probeOrientation.

probeHorizon : real

이 속성을 값이 증가하는 방향으로 정의하면 환경의 하단 절반에 어둠(검은색)이 더해져, 조명이 주로 이미지 상단에서 비추도록 하고(하단 절반의 특정 반사광을 제거하며) 합니다. 이 속성은 지면에서 반사되는 라이트 프로브의 반사광을 가리는 효과를 주는 지면 평면을 고려할 때 유용합니다. 이는 라이트 프로브의 기여도가 씬의 내용을 고려하지 않고 이미지에서 직접 비롯되기 때문에 필요합니다.

probeHorizon 속성의 예상 값 범위는 0.0에서 1.0 사이입니다. 이 범위 외의 값은 예상 범위로 제한됩니다.

기본적으로 probeHorizon은 0.0으로 설정되어 있어, 조정 없이 전체 라이트 프로브가 사용됩니다.

참고: probeHorizon속성은 머티리얼 조명에만 영향을 미치며, 스카이 박스의 렌더링에는 영향을 미치지 않습니다.

lightProbe, probeExposure 및 probeOrientation도 참조하십시오 .

probeOrientation : vector3d

이 속성은 라이트 프로브의 방향을 정의합니다. 방향은 x, y, z 축을 기준으로 한 도(°) 단위의 오일러 각도로 정의됩니다.

참고: 이 값은 lightProbe 텍스처에 설정된 텍스처 회전 및 오프셋과 결합하여 lightProbe 텍스처가 샘플링되는 방식을 보강합니다.

관련 항목: lightProbe, probeHorizon, probeExposure.

scissorRect : rect [since 6.5]

이 속성은 왼쪽 상단 모서리가 [0, 0]인 뷰 좌표계의 시저 사각형을 정의합니다.

이 속성은 Qt 6.5에서 도입되었습니다.

skyBoxCubeMap : QtQuick3D::CubeMapTexture [since 6.4]

이 속성은 배경 모드가 ‘ SkyBoxCubeMap ’일 때 스카이박스로 사용될 큐브맵을 정의합니다.

이 속성은 Qt 6.4에서 도입되었습니다.

skyMaterial : QtQuick3D::SkyMaterial [since 6.12]

이 속성은 IBL 및 씬의 배경으로 사용되는, 절차적이며 GPU 기반의 하늘 모델을 정의합니다.

이 속성은 Qt 6.12에서 도입되었습니다.

backgroundMode 및 lightProbe도 참조하십시오 .

skyboxBlurAmount : real [since 6.4]

이 속성은 ‘ backgroundMode ’ 속성에 ‘ SceneEnvironment.SkyBox ’을 사용할 때 스카이박스가 얼마나 흐릿하게 처리될지를 결정합니다. 기본값은 ‘ 0.0 ’이며, 이는 흐림 효과가 적용되지 않음을 의미합니다.

허용되는 값의 범위는 0.0에서 1.0 사이이며, 이 범위 외의 모든 값은 이 범위로 제한됩니다.

이 속성은 Qt 6.4에서 도입되었습니다.

specularAAEnabled : bool [since 6.4]

이 속성을 활성화하면 스페큘러 앨리어싱이 완화됩니다. 스페큘러 앨리어싱은 대개 밝은 점의 형태로 나타나며, 카메라를 움직일 때 깜빡일 수도 있습니다.

기본값은 false입니다.

스펙큘러 AA 비활성화스페큘러 AA 활성화

앤티앨리어싱이 적용되지 않은 스페큘러 하이라이트가 드러나는 건축 장면

앤티앨리어싱을 적용해 매끄럽게 처리된 스페큘러 하이라이트가 드러나는 건축 장면

이 속성은 Qt 6.4에서 도입되었습니다.

temporalAAEnabled : bool [default: false]

이 속성이 활성화되면 시간 기반 앤티앨리어싱이 사용됩니다.

프레임 사이에서 카메라가 아주 미세하게 흔들리며, 각 새로운 프레임의 결과가 이전 프레임과 자연스럽게 혼합됩니다.

참고: ‘ antialiasingMode ’가 MSAA로 설정된 경우,시간적 앤티앨리어싱은 효과가 없습니다.

참고: ProgressiveAA를 사용할경우 , 장면 애니메이션이 진행되는 동안 시간 기반 앤티앨리어싱이 적용됩니다. 장면이 정지 상태가 되면 ProgressiveAA가 적용되지만, 이는 ' temporalAAMode '가 ' SceneEnvironment.TAADefault'로 설정된 경우에만 해당됩니다. 즉, ' temporalAAMode '가 ' SceneEnvironment.TAAMotionVector'로 설정된 경우 ProgressiveAA는 효과가 없습니다.

장점: 흔들리는 카메라 덕분에 그렇지 않으면 놓쳤을 실제 디테일을 포착할 수 있으며, 성능에 미치는 영향이 적습니다.

단점: 빠르게 움직이는 물체에서 1프레임의 고스팅 현상이 발생합니다.

참고: 시간적 앤티앨리어싱은 현재 멀티뷰 렌더링에서 지원되지 않으며, VR/AR 애플리케이션에서는 사용해서는 안 됩니다.

temporalAAMode : enumeration [since 6.11]

시간적 앤티앨리어싱 모드를 제어합니다. 시간적 앤티앨리어싱은 여러 프레임에 걸친 정보를 혼합하여 깜빡임과 앨리어싱을 줄여줍니다.

상수설명
SceneEnvironment.TAADefault기본 시간 필터링을 위해 현재 프레임과 이전 프레임을 혼합합니다.
SceneEnvironment.TAAMotionVector모션 벡터를 사용하여 프레임 간 픽셀 이동을 추적함으로써, 애니메이션 장면에서 뛰어난 화질을 제공합니다.

기본값은 ‘ SceneEnvironment.TAADefault ’입니다.

참고: 시간적 AA는 빠르게 움직이는 피사체나 급격한 카메라 움직임에서 고스팅 아티팩트를 유발할 수 있습니다.

참고: 일정한 프레임 속도에서 가장 잘작동합니다 . 프레임 속도가 변동하면 효과가 떨어집니다.

이 속성은 Qt 6.11에서 도입되었습니다.

temporalAAStrength : real [default: 0.3]

이 속성은 시간 이동량(앤티앨리어싱)을 조정합니다. 이 속성은 temporalAAEnabled 속성이 true일 때만 효과가 있습니다.

temporalAAEnabled도 참조하십시오 .

tonemapMode : enumeration [since 6.0]

이 속성은 렌더링 전에 색상이 톤 매핑되는 방식을 정의합니다. Qt Quick 3D 의 모든 렌더링은 선형 색상 공간에서 수행되며, 이로 인해 많은 경우 표시할 수 없는 색상 값이 생성될 수 있습니다. tonemapMode는 색상을 표시 가능한 범위로 재매핑하는 데 사용되는 기법을 결정합니다.

기본값은 SceneEnvironment.TonemapModeLinear

Constant설명
SceneEnvironment.TonemapModeNoneAll 톤 매핑이 건너뜁니다. 이 모드는 후처리 효과를 적용할 때 유용합니다.
SceneEnvironment.TonemapModeLinear선형 톤 매핑이 적용됩니다. 색상에 감마 보정이 적용되어 sRGB 색상 공간으로 반환됩니다.
SceneEnvironment.TonemapModeAcesAcademy Color Encoding System 톤 매핑이 적용됩니다.
SceneEnvironment.TonemapModeHejlDawson헤일-도슨 톤 매핑이 적용됩니다.
SceneEnvironment.TonemapModeFilmic필믹 톤 매핑이 적용됩니다.

이러한 다양한 모드의 예시는 ExtendedSceneEnvironment 에서 확인할 수 있습니다.

참고: 후처리 효과를 사용할때 , 대부분의 효과는 톤 매핑되지 않은 선형 색상 데이터를 필요로 합니다. Effect 유형을 통해 구현된 애플리케이션 제공 사용자 지정 효과의 경우, Qt 6.5부터 효과는 선형 색상 데이터로 작동한다고 안전하게 가정할 수 있으며, 톤 매핑은 체인의 마지막 효과 출력에 대해 자동으로 수행된다는 점을 알아두는 것이 중요합니다. 톤 매핑을 완전히 사용자 정의해야 하는 경우, ` SceneEnvironment.TonemapModeNone ` 값을 설정하여 내장 톤 매퍼를 비활성화하고, 대신 체인의 마지막 효과에서 색상 값에 적절한 조정을 수행하는 것을 고려해 보십시오. 이는 ExtendedSceneEnvironment 의 내장 이펙트에는 적용되지 않습니다. 왜냐하면 이러한 이펙트는 환경에서 어떤 내장 이펙트 조합이 활성화되어 있든 상관없이 적절한 톤 매핑을 자동으로 처리하기 때문입니다.

이 속성은 Qt 6.0에서 도입되었습니다.

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