이 페이지에서

Qt Quick 3D - 소개

Qt Quick 3D 에서 씬을 렌더링하는 방법을 보여줍니다.

빨간 원반 위에 떠 있는 파란 구체

이 예제는 간단한 예제의 코드를 살펴보며 Quick 3D의 기본 기능에 대한 개요를 제공합니다.

씬 설정

전체 장면은 main.qml 파일에서 설정합니다.

QtQuick3D 모듈의 타입을 사용하려면 해당 모듈을 임포트해야 합니다:

import QtQuick
import QtQuick3D

3D 장면을 그리려면 Qt Quick 장면 내에 3D 뷰포트가 필요합니다. 이는 View3D 클래스에서 제공되며, 바로 이곳에서 장면을 정의합니다. 하나의 애플리케이션에 여러 뷰를 포함하는 것도 가능하며, 자세한 내용은 Qt Quick 3D - View3D 예제를 참조하십시오.

먼저 씬의 환경을 정의해 보겠습니다. 이 예제에서는 ` skyblue`를 사용하여 배경색을 지우며, 이는 뷰의 ` environment ` 속성에 대한 ` SceneEnvironment `에서 지정합니다. ` SceneEnvironment `에는 톤 매핑 설정, 이미지 기반 조명을 위한 라이트 프로브 설정, 배경 모드, 앰비언트 오클루전 매개변수 등 씬 환경과 관련된 다양한 속성이 설명되어 있습니다. 또한 앤티앨리어싱을 제어할 수도 있습니다. 자세한 내용은 Qt Quick 3D - 앤티앨리어싱 예제를 참조하십시오. 이 예제에서는 파란색 배경을 얻기 위해 clearColor 및 backgroundMode 속성을 설정합니다.

environment: SceneEnvironment {
    clearColor: "skyblue"
    backgroundMode: SceneEnvironment.Color
}

메쉬

장면을 좀 더 흥미롭게 만들기 위해 이제 몇 가지 메쉬를 추가해 보겠습니다. Quick 3D에는 편의상 구, 큐브, 원뿔, 원통과 같은 여러 내장 메쉬가 있습니다. 이러한 메쉬는 Model 노드의 source 속성에서 #Sphere, #Cube,#Rectangle 와 같은 특수 식별자를 사용하여 참조할 수 있습니다. 내장된 기본 도형 외에도 ` .mesh ` 파일을 지정할 수 있습니다. FBX 또는 glTF2 자산에서 ` .mesh ` 파일을 생성하려면, Balsam Asset Import Tool을 사용하여 해당 자산을 처리해야 합니다. 아래는 파란색 구체와 빨간색 납작한 원통을 추가하는 코드를 보여줍니다:

Model {
    position: Qt.vector3d(0, -200, 0)
    source: "#Cylinder"
    scale: Qt.vector3d(2, 0.2, 1)
    materials: [ PrincipledMaterial {
            baseColor: "red"
        }
    ]
}

Model {
    position: Qt.vector3d(0, 150, 0)
    source: "#Sphere"

    materials: [ PrincipledMaterial {
            baseColor: "blue"
        }
    ]

    SequentialAnimation on y {
        loops: Animation.Infinite
        NumberAnimation {
            duration: 3000
            to: -150
            from: 150
            easing.type:Easing.InQuad
        }
        NumberAnimation {
            duration: 3000
            to: 150
            from: -150
            easing.type:Easing.OutQuad
        }
    }
}

메시를 추가하기 위해 두 개의 Model 노드를 사용하며, 내장된 메시를 불러오기 위해 source 로 #Sphere 와 #Cylinder 를 지정합니다. 모델에 색상을 부여하려면 먼저 머티리얼을 지정해야 합니다. 이 경우 빨간색과 파란색 기본 색상을 가진 PrincipledMaterial 를 사용합니다. 서로 다른 특성을 가진 세 가지 머티리얼, 즉 PrincipledMaterial, SpecularGlossyMaterial 및 CustomMaterial 이 제공되며, 자세한 내용은 Qt Quick 3D - 'Principled Material Example' 및 'Programmable Materials, Effects, Geometry, and Texture' 데이터를 참조하십시오. Model 로 로드된 메시에는 여러 개의 서브메시가 포함될 수 있으며, 각 서브메시에는 재질이 지정되어야 합니다. 이 예제에서는 내장 메시만 사용되며, 이들 메시에는 각각 하나의 서브메시만 있으므로 materials 목록에서 단 하나의 PrincipledMaterial 만 지정하면 충분합니다.

Model 는 Node 이므로, 이에 연관된 변환을 가집니다. 평행 이동(translation)을 적용하려면 position 속성을 사용합니다. 또한 eulerRotation 속성을 설정하여 모델을 회전시킬 수도 있습니다. 원통을 판처럼 보이게 하려면 scale 속성을 적절히 설정합니다.

카메라

다음으로, 3D 장면의 콘텐츠가 2D 표면에 어떻게 투영될지 지정하는 카메라를 정의합니다. 이 예제에서는 원근 투영을 제공하는 ` PerspectiveCamera `를 사용합니다. ` OrthographicCamera ` 유형을 통해 정투영도 가능합니다. 카메라의 기본 방향은 전방 벡터가 음의 Z축을 향하고, 상향 벡터가 양의 Y축을 향하도록 설정되어 있습니다. 이 예제에서는 카메라를 Z축 방향으로 300만큼 뒤로 이동시킵니다. 또한 Y축 방향으로 약간 위로 이동시키고, X축을 중심으로 약간 회전시켜 시선이 약간 아래를 향하도록 합니다.

PerspectiveCamera {
    position: Qt.vector3d(0, 200, 300)
    eulerRotation.x: -30
}

조명

씬에서 모델을 볼 수 있으려면 광원이 필요합니다. 특정 방향에서 빛을 비추는 멀리 있는 태양으로 생각할 수 있는 ' DirectionalLight'이 씬에 추가됩니다. ' SpotLight '과 ' PointLight'이라는 두 가지 다른 광원도 사용할 수 있으며, 자세한 내용은Qt Quick 3D - Lights Example을 참조하십시오.

DirectionalLight {
    eulerRotation.x: -30
    eulerRotation.y: -70
}

애니메이션

마지막으로, 구체에도 애니메이션을 적용해 보겠습니다. 이를 위해 y 컴포넌트에 SequentialAnimation 를 적용하여 구체가 위아래로 무한히 움직이도록 합니다.

SequentialAnimation on y {
    loops: Animation.Infinite
    NumberAnimation {
        duration: 3000
        to: -150
        from: 150
        easing.type:Easing.InQuad
    }
    NumberAnimation {
        duration: 3000
        to: 150
        from: -150
        easing.type:Easing.OutQuad
    }
}

이 모든 요소가 함께 작동함으로써 3D 장면을 렌더링할 수 있습니다. 이 예제는 Qt Quick 3D 의 기본 기능 중 일부만 다루고 있습니다. 더 많은 예제를 보려면 예제 페이지를 방문하세요.

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

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