相机 QML 类型
定义了相机的抽象基类。 更多...
导入语句 | 导入 QtQuick3D |
Inherits | |
Inherited By |
属性
- frustumCullingEnabled : bool
- levelOfDetailBias : float
(since 6.5)
- lookAtNode : Node
方法
- vector3d lookAt(vector3d scenePos)
- vector3d lookAt(QtQuick3D::Node node)
- vector3d mapFromViewport(vector3d viewportPos)
- vector3d mapToViewport(vector3d scenePos)
详细说明
相机定义了3D场景内容如何投影到二维表面,例如 View3D。一个场景至少需要一个相机才能可视化其内容。
可以像场景中的任何其他空间 Node 一样定位和旋转相机。节点的位置和方向决定了相机在场景中的位置和其面对的方向。相机的默认方向使其前向量指向负 Z 轴,而其上向量指向正 Y 轴。
与位置和方向一起,视锥体定义了场景的哪些部分可见,以及它们如何投影到二维表面。不同的相机子类型提供了多种选项来确定相机视锥体的形状。
- PerspectiveCamera 提供了一个具有金字塔形状视锥体的相机,其中远处的对象看起来更小。这是最常用的相机类型,相当于大多数现实世界相机的工作方式。
- OrthographicCamera 提供了一个视锥体的线条平行的相机,这使得对象的感知缩放不受其与相机距离的影响。这类相机的典型应用是 CAD(计算机辅助设计)应用程序和制图。
- FrustumCamera 是一种透视相机类型,其视锥体可以由与其近平面的交点的坐标自由定制。如果需要非对称相机视锥体,这可能很有用。
- 自定义相机(CustomCamera)是一种可以自由定制投影矩阵的相机类型,它对于希望计算自定义投影矩阵的高级用户来说非常有用。
为了说明差异,以下截图显示了与使用视距相机(PerspectiveCamera)和正交相机(OrthographicCamera)投影的相同场景。注意,在使用视距投影渲染的图像中,红色方框比绿色方框小。
透视相机 | 正交相机 |
---|---|
另请参阅 Qt Quick 3D - View3D 示例。
属性文档
frustumCullingEnabled : bool |
当此属性设置为 true
时,相机视锥体外的对象将被裁剪,这意味着它们将不会传递给渲染器。默认情况下,此属性设置为 false
。对于所有或大多数对象都位于相机视锥体内的场景,视锥体裁剪是不必要的性能开销。但对于大部分位于相机视锥体外的大型复杂场景,启用视锥体裁剪可以提高性能。
levelOfDetailBias : float |
此属性改变了模型在渲染之前所需的大小,以便使用自动细节级别网格。每个生成的细节级别网格都包含一个理想的大小值,每个级别应该显示,这是与渲染场景中该网格所占的比例。在屏幕上仅表示少数像素的模型不需要完整几何图形来显示正确,所以在这种情况下将使用更低细节级别的网格。此值是理想值的偏差,因此小于 1.0
的值将需要在切换到较低细节级别之前有更小的渲染大小。大于 1.0
的值将导致更早地使用较低级别细节。值为 0.0
将完全禁用细节级别的使用。
默认值是 1.0
注意: 此属性将对具有包含细节级别几何图形的模型产生影响。
该属性是在 Qt 6.5 中引入的。
另请参阅 Model::levelOfDetailBias。
lookAtNode : Node |
如果将此属性设置为非空值,则自动更新相机的旋转,以便相机在相机或指定的节点的场景位置发生变化时始终面向指定的节点。默认情况下,此属性设置为 null
。
另请参阅 lookAt。
方法文档
vector3d lookAt(QtQuick3D::Node node) |
设置相机的旋转值,使其指向 node。
将 viewportPos 从视口空间(2D)转换为全局场景空间(3D)。
视口位置 viewportPos 的 x-和 y-值必须是归一化的,视口左上角位于 [0, 0],右下角位于 [1, 1]。z-值被解释为距离视锥体(clipNear)的近裁剪面。
如果 viewportPos 无法成功映射到场景中的位置,则返回 [0, 0, 0] 位置。
另请参阅 mapToViewport 和 View3D.mapTo3DScene。
将 场景位置 从全局场景空间(3D)转换为视口空间(2D)。
返回的位置是归一化的,视口的左上角为 [0, 0],右下角为 [1, 1]。返回的 z 值将包含从视锥体的近剪裁平面 (clipNear) 到 场景位置 在场景坐标中的距离。如果距离为负,则该点位于相机后面。
如果无法将 场景位置 映射到视口中的位置,则返回 [0, 0, 0] 的位置。
另请参阅 mapFromViewport() 和 View3D.mapFrom3DScene。
© 2024 Qt 公司有限公司。本文件中包含的文档贡献属于各自所有者的版权。本文档根据自由软件基金会发布的 GNU 自由文档许可证版本 1.3 的条款提供许可。Qt 及其相关标志是芬兰和/或其他国家的 The Qt Company Ltd. 的商标。所有其他商标均属于各自所有者的财产。