Camera QML Type

定义相机的抽象基础。更多

Import Statement: import QtQuick3D
Inherits:

Node

Inherited By:

CustomCamera, OrthographicCamera, and PerspectiveCamera

属性

方法

详细说明

摄像机定义了如何将三维场景的内容投射到二维表面(如View3D )上。一个场景至少需要一个摄像机才能将其内容可视化。

相机可以像场景中的其他空间Node 一样定位和旋转。Node 的位置和方向决定了摄像机在场景中的位置和朝向。摄像机的默认方向是向前矢量沿着负 Z 轴,向上矢量沿着正 Y 轴。

与位置和方向一起,挫面定义了摄像机可以看到场景的哪些部分,以及如何将这些部分投射到二维表面上。不同的 "摄像机 "子类型提供了多个选项来确定 "摄像机 "的挫边形状。

  • PerspectiveCamera 金字塔形 "摄像机提供了一个金字塔形的投影面,在投影面中,距离摄像机较远的物体看起来较小。这是最常用的摄像机类型,符合现实世界中大多数摄像机的工作原理。
  • OrthographicCamera 这种类型的摄像机的球面线是平行的,因此物体的大小不会受到其与摄像机距离的影响。这种相机的典型用例是 CAD(计算机辅助设计)应用和制图。
  • FrustumCamera 是一种透视摄像机类型,可以通过其与近平面的交点坐标自由定制球面。如果需要一个非对称的相机虚像,这种类型的相机就很有用。
  • CustomCamera 是一种投影矩阵可以自由定制的摄像机类型,对于希望计算自己的投影矩阵的高级用户来说非常有用。

为了说明两者的区别,这些截图显示了PerspectiveCameraOrthographicCamera 投影的同一场景。请注意,在使用透视投影渲染的图像中,红框要比绿框小。

透视摄像机正交摄影机

另请参阅 Qt Quick 3D - View3D 示例

属性文档

frustumCullingEnabled : bool

当此属性为true 时,摄像机光锥之外的物体将被剔除,这意味着它们不会被传递给渲染器。默认情况下,此属性设置为false 。对于所有或大部分物体都在摄像机缩放范围内的场景,缩放是一种不必要的性能开销。但对于大部分物体位于摄像机视图之外的复杂场景,启用缩放可以提高性能。


levelOfDetailBias : real [since 6.5]

该属性可更改模型在渲染时需要的尺寸,然后才会使用自动细节网格。每个生成的细节层次网格都包含每个层次应显示的理想尺寸值,该值是渲染场景中该网格所占比例。如果一个模型在屏幕上只显示几个像素,则不需要完整的几何图形来显示,因此在这种情况下会使用较低细节网格。该值是理想值的一个偏差,如果该值小于1.0 ,则需要更小的渲染尺寸才能切换到较低的细节级别。高于1.0 的值将导致更快地使用较低级别的细节。如果值为0.0 ,则会完全禁止使用细节级别。

默认值为1.0

注意: 此属性只对包含细节级别的地理信息模型(Models)有效。

此属性在 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] 的位置。

另请参阅 mapToViewportView3D.mapTo3DScene() 。


vector3d mapToViewport(vector3d scenePos)

scenePos 从全局场景空间(3D)转换到视口空间(2D)。

返回的位置经过归一化处理,视口左上方为 [0, 0],右下方为 [1, 1]。返回的 z 值将包含以场景坐标表示的从挫形体的近剪辑平面 (clipNear) 到scenePos 的距离。如果距离为负值,则表示该点位于摄像机后方。

如果scenePos 无法成功映射到视口中的某个位置,则会返回一个 [0, 0, 0] 的位置。

另请参阅 mapFromViewport() 和View3D.mapFrom3DScene()。


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