Camera QML Type
定义了“相机”类的抽象基类。更多内容...
| Import Statement: | import QtQuick3D |
| Inherits: | |
| Inherited By: | CustomCamera, FrustumCamera, OrthographicCamera, and PerspectiveCamera |
属性
- frustumCullingEnabled : bool
- levelOfDetailBias : real
(since 6.5) - lookAtNode : Node
方法
- vector3d lookAt(QtQuick3D::Node node)
- vector3d lookAt(vector3d scenePos)
- vector3d mapFromViewport(vector3d viewportPos)
- vector3d mapToViewport(vector3d scenePos)
详细说明
摄像机(Camera)定义了3D场景的内容如何投影到2D表面上,例如View3D 。一个场景至少需要一个摄像机才能将其内容可视化。
与场景中的其他空间Node 一样,可以对摄像机进行定位和旋转。Node 的位置和方向决定了摄像机在场景中的位置及其朝向。摄像机的默认方向是:其前进向量沿负Z轴方向,向上向量沿正Y轴方向。
除了位置和方向外,视锥体还决定了场景中哪些部分对摄像机可见,以及它们如何投影到二维平面上。不同的摄像机子类型提供了多种选项来确定摄像机视锥体的形状。
- PerspectiveCamera 提供一种具有金字塔形锥体的摄像机,物体在投影时,距离摄像机越远的物体看起来越小。这是最常用的摄像机类型,也与大多数现实世界中摄像机的工作原理相符。
- OrthographicCamera 提供一种视锥体边线相互平行的摄像机,使得物体的视觉比例不受其与摄像机距离的影响。此类摄像机的典型应用场景包括 CAD(计算机辅助设计)和制图。
- FrustumCamera 这是一种透视摄像机类型,其锥体可通过与近平面的交点坐标自由定制。当需要非对称摄像机锥体时,此类型非常有用。
- CustomCamera 这是一种投影矩阵可自由定制的摄像机类型,对于希望自行计算投影矩阵的高级用户非常有用。
为说明其差异,这些截图展示了同一场景分别通过PerspectiveCamera 和OrthographicCamera 投影的效果。请注意,在采用透视投影渲染的图像中,红色框比绿色框要小。
| 透视摄像机 | 正交摄像机 |
|---|---|
|
|
另请参阅 Qt Quick 3D - View3D 示例。
属性文档
frustumCullingEnabled : bool
当此属性设置为true 时,位于摄像机锥体范围外的对象将被剔除,这意味着它们不会被传递给渲染器。默认情况下,此属性设置为false 。对于所有或大部分对象都位于摄像机锥体范围内的场景,锥体剔除会带来不必要的性能开销。 但在大部分内容位于摄像机视锥体外的复杂场景中,启用视锥体剔除可能会提升性能。
levelOfDetailBias : real [since 6.5]
此属性用于调整模型在渲染时所需的大小,该调整是在使用自动生成的细节级别网格之前进行的。每个生成的细节级别网格都包含一个理想尺寸值,该值代表该级别应显示的范围,即该网格在渲染场景中所占的比例。 一个在屏幕上仅占几个像素的模型,无需完整的几何体也能呈现正确效果,因此在此情况下将使用更低细节等级的网格。该值是对理想值的偏移量,即当值小于1.0 时,在切换到更低细节等级之前,所需的渲染尺寸会更小。 大于1.0 的值将导致更早使用较低细节等级。0.0 的值将完全禁用细节等级功能。
默认值为1.0
注意:此 属性仅对几何体包含细节等级的模型有效。
该属性在 Qt 6.5 中引入。
另请参阅 Model::levelOfDetailBias 。
lookAtNode : Node
如果将此属性设置为non-null 值,则该摄像机的旋转角度会自动更新,以确保无论该摄像机的场景位置还是指定节点的场景位置发生变化,该摄像机始终朝向指定节点。默认情况下,此属性设置为null 。
另请参阅 lookAt 。
方法文档
vector3d lookAt(QtQuick3D::Node node)
设置相机的旋转值,使其指向node 。
vector3d lookAt(vector3d scenePos)
设置摄像机的旋转值,使其指向scenePos 。
vector3d mapFromViewport(vector3d viewportPos)
将viewportPos 从视口空间(2D)转换到全局场景空间(3D)。
viewportPos 的 x 和 y 值必须经过归一化处理,其中视口的左上角位于 [0, 0],右下角位于 [1, 1]。z 值被解释为到视锥体近裁剪平面(clipNear)的距离。
如果无法将 `viewportPos ` 成功映射到场景中的某个位置,则返回位置 [0, 0, 0]。
另请参见 mapToViewport 和View3D.mapTo3DScene()。
vector3d mapToViewport(vector3d scenePos)
将scenePos 从全局场景空间(3D)转换为视口空间(2D)。
返回的位置经过归一化处理,视口左上角位于 [0, 0],右下角位于 [1, 1]。 返回的 z 值将包含从锥体近裁剪平面(clipNear)到scenePos 的距离(以场景坐标系为基准)。如果该距离为负值,则该点位于摄像机后方。
如果无法将scenePos 成功映射到视口中的某个位置,则返回位置[0, 0, 0]。
另请参阅 mapFromViewport() 和View3D.mapFrom3DScene()。
© 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.

