View3D QML Type
3D 씬을 렌더링할 뷰포트를 제공합니다. 더 보기...
Import Statement: | import QtQuick3D |
속성
- camera : QtQuick3D::Camera
- effectiveTextureSize : size
(since 6.7)
- environment : QtQuick3D::SceneEnvironment
- explicitTextureHeight : int
(since 6.7)
- explicitTextureWidth : int
(since 6.7)
- extensions : List<QtQuick3D::Object3D>
- importScene : QtQuick3D::Node
- renderFormat : enumeration
(since 6.4)
- renderMode : enumeration
- renderStats : QtQuick3D::RenderStats
- scene : QtQuick3D::Node
방법
- vector3d mapFrom3DScene(vector3d scenePos)
- vector3d mapTo3DScene(vector3d viewPos)
- pickResult pick(float x, float y)
- pickResult pick(float x, float y, Model model)
(since 6.8)
- List<pickResult> pickAll(float x, float y)
(since 6.2)
- List<pickResult> pickSubset(float x, float y, list<Model> models)
(since 6.8)
- pickResult rayPick(vector3d origin, vector3d direction)
(since 6.2)
- List<pickResult> rayPickAll(vector3d origin, vector3d direction)
(since 6.2)
- setTouchpoint(Item target, point position, int pointId, bool pressed)
(since 6.8)
상세 설명
View3D는 3D 장면을 렌더링할 수 있는 2D 표면을 제공합니다. 이 표면은 Qt Quick Item 이며 Qt Quick 장면에 배치할 수 있습니다.
View3D에 시각화되는 3D 장면을 정의하는 방법에는 두 가지가 있습니다. Node-based 항목의 계층 구조를 View3D의 하위 항목으로 직접 정의하면 이것이 View3D의 암시적 장면이 됩니다.
importScene 속성을 사용하여 시각화하려는 장면의 루트 Node 로 설정하여 기존 장면을 참조할 수도 있습니다. 이 Node 은 View3D의 조상일 필요는 없으며, 동일한 장면을 임포트하는 여러 개의 View3D를 가질 수 있습니다.
이는 View3D 예제에서 설명합니다.
View3D에 Nodes 자식이 있고 importScene 프로퍼티가 동시에 설정되어 있으면 두 장면이 같은 장면의 형제 하위 트리인 것처럼 렌더링됩니다.
씬 렌더링 방식을 제어하려면 environment 프로퍼티를 설정하면 됩니다. SceneEnvironment 유형에는 배경색, 톤 매핑, 앤티 앨리어싱 등 조정할 수 있는 여러 가지 시각적 속성이 있습니다. QtQuick3D.Helpers
모듈의 ExtendedSceneEnvironment 은 SceneEnvironment 을 더 많은 기능으로 확장하여 일반적인 포스트 프로세싱 효과를 추가합니다.
또한 View3D에서 무엇이든 렌더링하려면 씬에 Camera 이 필요합니다. 씬에 Camera 이 하나만 있는 경우 자동으로 선택됩니다. 그렇지 않은 경우 camera 속성을 사용하여 카메라를 선택할 수 있습니다. Camera 은 씬의 어느 부분이 표시되고 2D 표면에 투영되는 방식을 결정합니다.
기본적으로 3D 씬은 먼저 화면 밖 버퍼로 렌더링된 다음 완료되면 나머지 Qt Quick 씬과 합성됩니다. 이는 최대한의 호환성을 제공하지만 일부 그래픽 하드웨어에서는 성능에 영향을 미칠 수 있습니다. 이 경우 renderMode 속성을 사용하여 View3D가 창에 렌더링되는 방식을 전환할 수 있습니다.
기본값이 오프스크린 renderMode 인 View3D는 암시적으로 texture provider 이기도 합니다. 즉, 모든 항목이 동일한 window 내에 있는 한 ShaderEffect 또는 Texture.sourceItem 은 View3D 를 직접 참조할 수 있습니다. 다른 Item 와 마찬가지로 View3D 또는 그 조상 중 하나를 텍스처 기반 item layer 으로 전환할 수도 있습니다.
Qt Quick 3D - View3D 예시를참조하세요 .
속성 문서
camera : QtQuick3D::Camera |
이 프로퍼티는 씬을 렌더링하는 데 사용되는 Camera 을 지정합니다. 이 프로퍼티가 설정되지 않은 경우 씬에서 가장 먼저 활성화된 카메라가 사용됩니다.
참고: 이 프로퍼티에 visible 이 아닌 카메라가 포함되어 있으면 더 이상 카메라를 찾으려는 시도가 수행되지 않습니다.
PerspectiveCamera, OrthographicCamera, FrustumCamera, CustomCamera 을참조하세요 .
effectiveTextureSize : size |
이 속성은 기본 색상(및 깊이/스텐실) 버퍼의 크기를 픽셀 단위로 표시합니다. 이 프로퍼티는 GUI(메인) 스레드, QML 바인딩 또는 JavaScript에서 사용할 수 있도록 제공됩니다.
읽기 전용 속성입니다.
참고: 이 프로퍼티는 renderMode 가 Offscreen
로 설정된 경우에만 관련됩니다.
이 프로퍼티는 Qt 6.7에 도입되었습니다.
explicitTextureWidth, explicitTextureHeight, DebugView 를참조하십시오 .
environment : QtQuick3D::SceneEnvironment |
이 속성은 씬을 렌더링하는 데 사용되는 SceneEnvironment 을 지정합니다.
참고: 이 속성을 null
로 설정하면 SceneEnvironment 이 기본값으로 재설정됩니다.
SceneEnvironment도 참조하십시오 .
explicitTextureHeight : int |
항목의 연결된 텍스처의 높이(픽셀 단위)입니다. 항목의 크기에 의존하지 않는 고정 텍스처 크기가 필요한 경우에 적합합니다. 이 크기는 항목의 지오메트리(씬 내 크기 및 배치)에 영향을 주지 않으므로 텍스처의 콘텐츠가 항목의 영역에 맞게 확대 또는 축소(또는 늘어날 수 있음)되어 표시됩니다.
기본값은 0
입니다. 값이 0이면 텍스처의 크기가 항목의 크기를 따릅니다. (texture size in pixels
= item's logical size
* device pixel ratio
).
참고: 이 속성은 renderMode 가 Offscreen
로 설정된 경우에만 관련되며, 그렇지 않은 경우 해당 값은 무시됩니다.
이 프로퍼티는 Qt 6.7에 도입되었습니다.
explicitTextureWidth, effectiveTextureSize, DebugView 를참조하십시오 .
explicitTextureWidth : int |
항목의 연관된 텍스처의 너비(픽셀 단위)입니다. 항목의 크기에 의존하지 않는 고정 텍스처 크기가 필요할 때 관련됩니다. 이 크기는 항목의 지오메트리(씬 내 크기 및 배치)에 영향을 주지 않으므로 텍스처의 콘텐츠가 항목의 영역에 맞게 확대 또는 축소(또는 늘어날 수 있음)되어 표시됩니다.
기본값은 0
입니다. 값이 0이면 텍스처의 크기가 항목의 크기를 따릅니다. (texture size in pixels
= item's logical size
* device pixel ratio
).
참고: 이 속성은 renderMode 가 Offscreen
로 설정된 경우에만 관련되며, 그렇지 않은 경우 해당 값은 무시됩니다.
이 프로퍼티는 Qt 6.7에 도입되었습니다.
explicitTextureHeight, effectiveTextureSize, DebugView 를참조하십시오 .
extensions : List<QtQuick3D::Object3D> |
이 속성에는 이 View3D 과 함께 사용해야 하는 사용자 확장 목록이 포함되어 있습니다.
RenderExtension도 참조하십시오 .
importScene : QtQuick3D::Node |
renderFormat : enumeration |
이 프로퍼티는 백킹 텍스처의 형식을 결정합니다. 예를 들어 renderMode 이 View3D.Offscreen
인 경우와 같이 View3D 가 텍스처로 렌더링되는 경우에만 적용됩니다.
기본값은 ShaderEffectSource.RGBA8
입니다.
런타임에 기본 그래픽 드라이버에서 해당 형식을 지원하지 않는 경우 RGBA8이 사용됩니다.
- ShaderEffectSource.RGBA8
- ShaderEffectSource.RGBA16F
- ShaderEffectSource.RGBA32F
이 프로퍼티는 Qt 6.4에 도입되었습니다.
QtQuick::ShaderEffectSource::format 와 QtQuick::Item::layer.format 를참조하십시오 .
renderMode : enumeration |
이 프로퍼티는 Qt Quick 씬의 다른 부분과 View3D 을 결합하는 방법을 결정합니다.
기본적으로 씬은 중간 단계로 화면 밖 버퍼에 렌더링됩니다. 그런 다음 이 오프 스크린 버퍼는 다른 Qt Quick Item 과 같이 창(또는 렌더링 대상)에 렌더링됩니다.
대부분의 사용자에게는 렌더링 모드를 변경할 필요가 없으며 이 속성은 안전하게 무시해도 됩니다. 그러나 일부 그래픽 하드웨어에서는 오프스크린 버퍼를 사용하면 성능 병목 현상이 발생할 수 있습니다. 이 경우 다른 모드로 실험해 보는 것이 좋습니다.
Constant | 설명 |
---|---|
View3D.Offscreen | 장면이 중간 단계로 오프스크린 버퍼에 렌더링됩니다. 그런 다음 이 오프스크린 버퍼가 나머지 Qt Quick 장면과 합성됩니다. |
View3D.Underlay | 이 장면은 나머지 Qt Quick 장면이 렌더링되기 전에 창에 직접 렌더링됩니다. 이 모드를 사용하면 View3D 항목을 다른 Qt Quick 항목 위에 배치할 수 없습니다. |
View3D.Overlay | Qt Quick 장면이 렌더링된 후 창에 직접 렌더링됩니다. 이 모드를 사용하면 View3D 이 항상 다른 Qt Quick 항목 위에 표시됩니다. |
View3D.Inline | View3D 의 씬 그래프는 기본 씬 그래프에 포함되며 다른 Qt Quick Item 과 동일한 순서 지정 시맨틱이 적용됩니다. 이 모드는 2D 씬 그래프에 깊이 기반 3D 콘텐츠를 삽입하기 때문에 씬의 콘텐츠에 따라 미묘한 문제가 발생할 수 있으므로 특별한 필요가 없는 한 사용하지 않는 것이 좋습니다. |
기본값은 View3D.Offscreen
입니다.
참고: 렌더링 모드를 변경할 때는 View3D.Offscreen
(기본값)만이 완벽한 그래픽 충실도를 보장하는 유일한 모드라는 점에 유의해야 합니다. 다른 모드는 모두 시각적 결함을 일으킬 수 있는 제한 사항이 있으므로 이 속성을 변경할 때 시각적 출력이 여전히 올바르게 보이는지 확인하는 것이 중요합니다.
참고: 언더레이, 오버레이 또는 인라인 모드를 사용하는 경우 QQuickWindow 또는 QQuickView 항목을 호스팅하는 View3D 항목을 표시하기 전에 QQuickGraphicsConfiguration::setDepthBufferFor2D()을 통해 Qt Quick 씬 그래프의 깊이 버퍼 쓰기를 비활성화하는 것이 유용할 수 있으며 경우에 따라 필수일 수도 있습니다.
renderStats : QtQuick3D::RenderStats |
이 프로퍼티는 fps, frameTime, renderTime, syncTime, maxFrameTime 와 같은 프레임 렌더링에 대한 통계를 제공합니다.
scene : QtQuick3D::Node |
View3D 에 시각화되는 3D 씬을 정의합니다:
- Node-based 항목의 계층 구조를 View3D 의 하위 항목으로 직접 정의하면 View3D 의 암시적 장면이 됩니다.
- importScene 속성을 사용하여 기존 씬을 참조하고 시각화하려는 씬의 루트 Node 로 설정합니다. 이 Node 은 View3D 의 조상일 필요는 없으며, 동일한 장면을 임포트하는 여러 개의 View3D를 가질 수 있습니다.
importScene 를참조하세요 .
메서드 문서
scenePos 를 장면 공간(3D)에서 뷰 공간(2D)으로 변환합니다.
반환된 x 및 y 값은 뷰 좌표로, 왼쪽 상단 모서리는 [0, 0], 오른쪽 하단 모서리는 [너비, 높이]가 됩니다. 반환된 z 값에는 프러스텀의 가까운 클립 평면(clipNear)에서 scenePos 까지의 거리가 씬 좌표로 포함됩니다. 거리가 음수이면 scenePos 이 활성 카메라 뒤에 있다는 뜻입니다. scenePos 을 씬의 위치에 매핑할 수 없는 경우 [0, 0, 0]의 위치가 반환됩니다.
이 함수를 사용하려면 camera 이 뷰에 할당되어 있어야 합니다.
mapTo3DScene() 및 Camera.mapToViewport()도 참조하십시오 .
viewPos 을 뷰 공간(2D)에서 장면 공간(3D)으로 변환합니다.
viewPos 의 x 및 y 값은 뷰 좌표여야 하며, 왼쪽 상단 모서리는 [0, 0], 오른쪽 하단 모서리는 [너비, 높이]여야 합니다. z 값은 장면 좌표에서 프러스텀의 가까운 클립 평면(clipNear)으로부터의 거리로 해석됩니다.
viewPos 을 씬의 위치에 성공적으로 매핑할 수 없는 경우 [0, 0, 0]의 위치가 반환됩니다.
이 함수를 사용하려면 뷰에 camera 이 할당되어 있어야 합니다.
mapFrom3DScene() 및 Camera.mapFromViewport()도 참조하십시오 .
pickResult pick(float x, float y) |
이 메서드는 뷰 좌표 x 및 y 에서 장면으로 광선을 "촬영"하고 장면의 객체와 가장 가까운 교차점에 대한 정보를 반환합니다.
예를 들어 마우스 좌표를 사용하여 마우스 커서 아래의 객체를 찾기 위해 이 메서드를 호출할 수 있습니다.
|
이 메서드는 뷰 좌표 x 및 y 에서 장면으로 광선을 "촬영"하고 광선과 지정된 model 사이의 교차점에 대한 정보를 반환합니다.
예를 들어 마우스 좌표와 함께 호출하여 마우스 커서 아래의 객체를 찾을 수 있습니다.
이 메서드는 Qt 6.8에 도입되었습니다.
|
이 메서드는 뷰 좌표 x 및 y 에서 씬으로 광선을 '촬영'하고 씬의 오브젝트와의 교차점에 대한 정보 목록을 반환합니다. 반환된 목록은 카메라로부터의 거리에 따라 정렬되며, 가장 가까운 교차점이 먼저 표시되고 가장 먼 교차점이 마지막에 표시됩니다.
예를 들어 마우스 좌표와 함께 호출하여 마우스 커서 아래의 객체를 찾을 수 있습니다.
이 메서드는 Qt 6.2에 도입되었습니다.
|
이 메서드는 뷰 좌표 x 및 y 에서 씬에 광선을 "촬영"하고 models 의 전달된 목록과 교차점에 대한 정보를 반환합니다. 전달된 모델 목록과 비교해서만 확인합니다. 반환된 목록은 카메라로부터의 거리에 따라 정렬되며, 가장 가까운 교차점이 먼저 나타나고 가장 먼 교차점이 마지막에 나타납니다.
예를 들어 마우스 좌표와 함께 호출하여 마우스 커서 아래의 객체를 찾을 수 있습니다.
프로퍼티 목록<모델>과 모델의 동적 자바스크립트 배열 모두에서 작동합니다.
이 메서드는 Qt 6.8에 도입되었습니다.
|
이 메서드는 origin 및 direction 에서 시작하여 씬에 광선을 "촬영"하고 씬의 오브젝트와 가장 가까운 교차점에 대한 정보를 반환합니다.
예를 들어 장면에 있는 오브젝트의 위치와 전방 벡터와 함께 호출하여 항목 앞에 어떤 오브젝트가 있는지 확인할 수 있습니다. 이를 통해 장면의 어느 지점에서나 피킹을 수행할 수 있습니다.
이 메서드는 Qt 6.2에 도입되었습니다.
|
이 메서드는 origin 및 direction 에서 시작하여 씬에 광선을 "촬영"하고 씬의 오브젝트와 가장 가까운 교차점에 대한 정보 목록을 반환합니다. 이 목록은 방향 벡터를 따라 원점으로부터의 거리에 따라 미리 정렬되며 가장 가까운 교차점이 가장 먼저 표시되고 가장 먼 교차점이 가장 나중에 표시됩니다.
예를 들어 장면에 있는 오브젝트의 위치와 전방 벡터로 이 기능을 호출하여 항목 앞에 어떤 오브젝트가 있는지 확인할 수 있습니다. 이를 통해 장면의 어느 지점에서나 피킹을 수행할 수 있습니다.
이 메서드는 Qt 6.2에 도입되었습니다.
target 으로 합성 터치 이벤트를 전송하여 ID가 pointId 인 터치 포인트를 position 로 이동하고 pressed 은 포인트가 눌렸는지 확인합니다. 또한 pointId 이 이전에 다른 항목에서 활성화된 경우 적절한 터치 해제 이벤트를 보냅니다.
이 메서드는 Qt 6.8에 도입되었습니다.
© 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.