QCamera类
class Qt3DRender::QCameraQCamera类定义了一个视图点,通过该点渲染场景。 更多...
| 头文件 | #include <Qt3DRender/QCamera> | 
| CMake | find_package(Qt6 REQUIRED COMPONENTS 3drender) target_link_libraries(mytarget PRIVATE Qt6::3drender) | 
| qmake | QT += 3drender | 
| 实例化自 | Camera | 
| 继承自 | Qt3DCore::QEntity | 
公共类型
| 枚举 | CameraTranslationOption { TranslateViewCenter, DontTranslateViewCenter } | 
属性
| 
 | 
 | 
公共函数
| QCamera(Qt3DCore::QNode *parent = nullptr) | |
| float | aspectRatio() const | 
| float | bottom() const | 
| float | exposure() const | 
| float | farPlane() const | 
| float | fieldOfView() const | 
| float | left() const | 
| Qt3DRender::QCameraLens * | lens() const | 
| float | nearPlane() const | 
| void | pan(float angle) | 
| void | pan(float angle, const QVector3D &axis) | 
| void | panAboutViewCenter(float angle) | 
| void | panAboutViewCenter(float angle, const QVector3D &axis) | 
| QQuaternion | panRotation(float angle) const | 
| QVector3D | position() const | 
| QMatrix4x4 | projectionMatrix() const | 
| Qt3DRender::QCameraLens::ProjectionType | projectionType() const | 
| float | right() const | 
| void | roll(float angle) | 
| void | rollAboutViewCenter(float angle) | 
| QQuaternion | rollRotation(float angle) const | 
| void | rotate(const QQuaternion &q) | 
| void | rotateAboutViewCenter(const QQuaternion &q) | 
| QQuaternion | rotation(float angle, const QVector3D &axis) const | 
| void | tilt(float angle) | 
| void | tiltAboutViewCenter(float angle) | 
| QQuaternion | tiltRotation(float angle) const | 
| float | top() const | 
| Qt3DCore::QTransform * | transform() const | 
| void | translate(const QVector3D &vLocal, Qt3DRender::QCamera::CameraTranslationOption option = TranslateViewCenter) | 
| void | translateWorld(const QVector3D &vWorld, Qt3DRender::QCamera::CameraTranslationOption option = TranslateViewCenter) | 
| QVector3D | upVector() const | 
| QVector3D | viewCenter() const | 
| QVector3D | viewVector() const | 
公共槽
| void | setAspectRatio(float aspectRatio) | 
| void | setBottom(float bottom) | 
| void | setExposure(float exposure) | 
| void | setFarPlane(float farPlane) | 
| void | setFieldOfView(float fieldOfView) | 
| void | setLeft(float left) | 
| void | setNearPlane(float nearPlane) | 
| void | setPosition(const QVector3D &position) | 
| void | setProjectionMatrix(const QMatrix4x4 &projectionMatrix) | 
| void | setProjectionType(Qt3DRender::QCameraLens::ProjectionType type) | 
| void | setRight(float right) | 
| void | setTop(float top) | 
| void | setUpVector(const QVector3D &upVector) | 
| void | setViewCenter(const QVector3D &viewCenter) | 
| void | viewAll() | 
| void | viewEntity(Qt3DCore::QEntity *entity) | 
| void | viewSphere(const QVector3D ¢er, float radius) | 
信号
| void | aspectRatioChanged(float aspectRatio) | 
| void | bottomChanged(float bottom) | 
| void | exposureChanged(float exposure) | 
| void | farPlaneChanged(float farPlane) | 
| void | fieldOfViewChanged(float fieldOfView) | 
| void | leftChanged(float left) | 
| void | nearPlaneChanged(float nearPlane) | 
| void | positionChanged(const QVector3D &position) | 
| void | projectionMatrixChanged(const QMatrix4x4 &projectionMatrix) | 
| void | projectionTypeChanged(Qt3DRender::QCameraLens::ProjectionType projectionType) | 
| void | rightChanged(float right) | 
| void | topChanged(float top) | 
| void | upVectorChanged(const QVector3D &upVector) | 
| void | viewCenterChanged(const QVector3D &viewCenter) | 
| void | viewVectorChanged(const QVector3D &viewVector) | 
成员类型文档
枚举 QCamera::CameraTranslationOption
此枚举指定如何平移相机视图中心
| 常量 | 值 | 描述 | 
|---|---|---|
| Qt3DRender::QCamera::TranslateViewCenter | 0 | 平移视图中心,使视图方向保持不变 | 
| Qt3DRender::QCamera::DontTranslateViewCenter | 1 | 不平移视图中心,使视图方向改变 | 
属性文档
aspectRatio : float
包含当前纵横比。
访问函数
| float | aspectRatio() const | 
| void | setAspectRatio(float aspectRatio) | 
通知信号
| void | aspectRatioChanged(float aspectRatio) | 
bottom : float
包含相机当前的底部。
当 projectionType 为 QCameraLens::OrthographicProjection 时,此属性才有意义。
访问函数
| float | bottom() const | 
| void | setBottom(float bottom) | 
通知信号
| void | bottomChanged(float bottom) | 
exposure : float
包含当前相机的曝光度。
默认值为 0.0。
在 Qt 3D Extras 中的 MetalRoughMaterial 是目前唯一使用相机曝光度的材料。负值会使材料变暗,正值会使材料变亮。
自定义材料可以选择不同的值来解析。
访问函数
| float | exposure() const | 
| void | setExposure(float exposure) | 
通知信号
| void | exposureChanged(float exposure) | 
farPlane : float
包含当前相机远裁剪面。距离相机比远裁剪面远的对象将不会被渲染。
访问函数
| float | farPlane() const | 
| void | setFarPlane(float farPlane) | 
通知信号
| void | farPlaneChanged(float farPlane) | 
fieldOfView : float
包含当前垂直视野角(以度为单位)。
与 aspectRatio 一起,此属性决定了相机可以看到场景的多少。在这方面,你可以将其视为选择一个广角(宽水平视野角)或长焦(窄水平视野角)镜头,具体取决于你想捕捉的场景大小。
视角字段仅在投影类型为 投影类型 时相关,即 QCameraLens::PerspectiveProjection。
访问函数
| float | fieldOfView() const | 
| void | setFieldOfView(float fieldOfView) | 
通知信号
| void | fieldOfViewChanged(float fieldOfView) | 
left : float
保持相机当前的左侧。
当 projectionType 为 QCameraLens::OrthographicProjection 时,此属性才有意义。
访问函数
| float | left() const | 
| void | setLeft(float left) | 
通知信号
| void | leftChanged(float left) | 
[只读] lens : Qt3DRender::QCameraLens* const
保存相机的 Qt3DRender::QCameraLens 组件。
访问函数
| Qt3DRender::QCameraLens * | lens() const | 
nearPlane : float
保持当前相机的近平面。距离近平面小于物体的将不会渲染。
访问函数
| float | nearPlane() const | 
| void | setNearPlane(float nearPlane) | 
通知信号
| void | nearPlaneChanged(float nearPlane) | 
position : QVector3D
保持相机相对于父实体的坐标系位置。
访问函数
| QVector3D | position() const | 
| void | setPosition(const QVector3D &position) | 
通知信号
| void | positionChanged(const QVector3D &position) | 
projectionMatrix : QMatrix4x4
保持相机的当前投影矩阵。
访问函数
| QMatrix4x4 | projectionMatrix() const | 
| void | setProjectionMatrix(const QMatrix4x4 &projectionMatrix) | 
通知信号
| void | projectionMatrixChanged(const QMatrix4x4 &projectionMatrix) | 
projectionType : Qt3DRender::QCameraLens::ProjectionType
保持相机投影的类型。默认值是 QCameraLens::PerspectiveProjection。
- QCameraLens::OrthographicProjection - 平行线看起来平行。物体的大小不受距离影响。
- QCameraLens::PerspectiveProjection - 平行线看起来在远处相交。物体离相机越远,看起来越小。
- QCameraLens::FrustumProjection
- QCameraLens::CustomProjection
访问函数
| Qt3DRender::QCameraLens::ProjectionType | projectionType() const | 
| void | setProjectionType(Qt3DRender::QCameraLens::ProjectionType type) | 
通知信号
| void | projectionTypeChanged(Qt3DRender::QCameraLens::ProjectionType projectionType) | 
另请参阅Qt3DRender::QCameraLens::ProjectionType。
right : float
保持相机当前的右侧。
当 projectionType 为 QCameraLens::OrthographicProjection 时,此属性才有意义。
访问函数
| float | right() const | 
| void | setRight(float right) | 
通知信号
| void | rightChanged(float right) | 
top : float
保持相机当前的顶部。
当 projectionType 为 QCameraLens::OrthographicProjection 时,此属性才有意义。
访问函数
| float | top() const | 
| void | setTop(float top) | 
通知信号
| void | topChanged(float top) | 
[只读] transform : Qt3DCore::QTransform* const
保存摄像机的 Qt3DCore::QTransform 组件。
访问函数
| Qt3DCore::QTransform * | transform() const | 
upVector : QVector3D
保存相对于父实体的摄像机向上向量。
向上向量指示摄像机顶部面向的方向。想象一下拍照:定位自己并对准目标后,您可能需要左右旋转摄像机,以获得肖像、风景(或倾斜!)的拍照。upVector 允许您控制此类移动。
访问函数
| QVector3D | upVector() const | 
| void | setUpVector(const QVector3D &upVector) | 
通知信号
| void | upVectorChanged(const QVector3D &upVector) | 
viewCenter : QVector3D
保存相对于父实体的摄像机观察中心。
直观上,viewCenter 是摄像机指向的位置。
访问函数
| QVector3D | viewCenter() const | 
| void | setViewCenter(const QVector3D &viewCenter) | 
通知信号
| void | viewCenterChanged(const QVector3D &viewCenter) | 
[只读] viewVector : const QVector3D
保存相对于父实体的摄像机观察向量。
访问函数
| QVector3D | viewVector() const | 
通知信号
| void | viewVectorChanged(const QVector3D &viewVector) | 
成员函数文档
[显式构造函数] QCamera::QCamera(Qt3DCore::QNode *parent = nullptr)
使用指定的 parent 创建新的 QCamera 实例。
Qt3DRender::QCameraLens *QCamera::lens() const
返回当前的镜头。
注意:获取镜头属性的 getter 函数。
[可调用函数] void QCamera::pan(float angle)
通过在度数上调整 angle 来调整摄像机的俯仰角度。
注意:此函数可以通过元对象系统和从 QML 中调用。请参阅 Q_INVOKABLE。
[可调用函数] void QCamera::pan(float angle, const QVector3D &axis)
在所选 axis 上通过在度数上调整 angle 来调整摄像机的俯仰角度。
注意:此函数可以通过元对象系统和从 QML 中调用。请参阅 Q_INVOKABLE。
[可调用函数] void QCamera::panAboutViewCenter(float angle)
通过角度调整相机在视中心处的平移。
注意:此函数可以通过元对象系统和从 QML 中调用。请参阅 Q_INVOKABLE。
[可调用] void QCamera::panAboutViewCenter(float angle, const QVector3D &axis)
沿着指定的 axis,通过角度调整相机在视中心处的平移。
注意:此函数可以通过元对象系统和从 QML 中调用。请参阅 Q_INVOKABLE。
[可调用] QQuaternion QCamera::panRotation(float angle) const
返回根据调整相机平移或Y轴左右旋转所取的角度计算出的平移旋转。
注意:此函数可以通过元对象系统和从 QML 中调用。请参阅 Q_INVOKABLE。
[可调用] void QCamera::roll(float angle)
通过角度调整相机的翻转。
注意:此函数可以通过元对象系统和从 QML 中调用。请参阅 Q_INVOKABLE。
[可调用] void QCamera::rollAboutViewCenter(float angle)
通过角度调整相机在视中心处的翻转。
注意:此函数可以通过元对象系统和从 QML 中调用。请参阅 Q_INVOKABLE。
[可调用] QQuaternion QCamera::rollRotation(float angle) const
返回根据调整相机的翻转或Z轴左右倾斜旋转所取的角度计算出的翻转旋转。
注意:此函数可以通过元对象系统和从 QML 中调用。请参阅 Q_INVOKABLE。
[可调用] void QCamera::rotate(const QQuaternion &q)
使用四元数 q 来旋转相机。
注意:此函数可以通过元对象系统和从 QML 中调用。请参阅 Q_INVOKABLE。
[可调用] void QCamera::rotateAboutViewCenter(const QQuaternion &q)
使用四元数 q 在视中心处旋转相机。
注意:此函数可以通过元对象系统和从 QML 中调用。请参阅 Q_INVOKABLE。
[可调用] QQuaternion QCamera::rotation(float angle, const QVector3D &axis) const
根据所取的角度和选择的 axis 返回计算出的旋转。
注意:此函数可以通过元对象系统和从 QML 中调用。请参阅 Q_INVOKABLE。
[槽函数] void QCamera::setAspectRatio(float aspectRatio)
设置相机的宽高比为 aspectRatio。
注意:属性 aspectRatio 的设置器函数。
另请参阅:aspectRatio()。
[槽函数] void QCamera::setBottom(float bottom)
将相机的底部设置为 bottom。
注意:属性 bottom 的设置器函数。
另请参阅:bottom()。
[槽函数] void QCamera::setExposure(float exposure)
将相机的曝光设置为 exposure。
注意:属性 曝光 的设定器函数。
另请参阅:曝光。
[槽] void QCamera::setFarPlane(float 远平面)
将摄像机的远平面设置为 远平面。
注意:属性 远平面 的设定器函数。
另请参阅:远平面。
[槽] void QCamera::setFieldOfView(float 视场)
将摄像机的视场设置为 视场(以度为单位)。
注意:属性 视场 的设定器函数。
另请参阅:视场。
[槽] void QCamera::setLeft(float 左)
将摄像机的左侧设置为 左。
注意:属性 左 的设定器函数。
另请参阅:左。
[槽] void QCamera::setNearPlane(float 近平面)
将摄像机的近平面设置为 近平面。
注意:属性 近平面 的设定器函数。
另请参阅:近平面。
[槽] void QCamera::setPosition(const QVector3D &位置)
将摄像机在3D空间中的位置设置为 位置。
注意:属性 位置 的设定器函数。
另请参阅:位置。
[槽] void QCamera::setProjectionMatrix(const QMatrix4x4 &投影矩阵)
将摄像机的投影矩阵设置为 投影矩阵。
注意:属性 投影矩阵 的设定器函数。
另请参阅:投影矩阵。
[槽] void QCamera::setProjectionType(Qt3DRender::QCameraLens::ProjectionType 类型)
将摄像机的投影类型设置为 类型。
注意:属性 投影类型 的设定器函数。
另请参阅:投影类型。
[槽] void QCamera::setRight(float 右)
将摄像机的右侧设置为 右。
注意:属性 右 的设定器函数。
另请参阅:右。
[槽] void QCamera::setTop(float 上)
将摄像机的顶部设置为 上。
注意:为属性top的设置器函数。
另请参阅top()。
[slot] void QCamera::setUpVector(const QVector3D &upVector)
将摄像机的向上向量设置为upVector。
注意:为属性upVector的设置器函数。
另请参阅:upVector()。
[slot] void QCamera::setViewCenter(const QVector3D &viewCenter)
将摄像机的视图中心设置为viewCenter。
注意:为viewCenter属性的设置器函数。
另请参阅:viewCenter()。
[invokable] void QCamera::tilt(float angle)
通过 Micro Mapping API 将摄像机的角度调整为 angle 度。
注意:此函数可以通过元对象系统和从 QML 中调用。请参阅 Q_INVOKABLE。
[invokable] void QCamera::tiltAboutViewCenter(float angle)
将摄像机的视图中心以 angle 度调整倾斜。
注意:此函数可以通过元对象系统和从 QML 中调用。请参阅 Q_INVOKABLE。
[invokable] QQuaternion QCamera::tiltRotation(float angle) const
对于调整摄像机倾斜或X轴上下旋转所采用的 angle 度数,返回计算出的倾斜旋转。
注意:此函数可以通过元对象系统和从 QML 中调用。请参阅 Q_INVOKABLE。
Qt3DCore::QTransform *QCamera::transform() const
通过转换返回摄像机的位置。
注意:为 transform 属性的获取器函数。
[invokable] void QCamera::translate(const QVector3D &vLocal, Qt3DRender::QCamera::CameraTranslationOption option = TranslateViewCenter)
通过局部坐标将摄像机的位置和视图向量平移 vLocal。 option 允许切换是否应平移视图中心。
注意:此函数可以通过元对象系统和从 QML 中调用。请参阅 Q_INVOKABLE。
[invokable] void QCamera::translateWorld(const QVector3D &vWorld, Qt3DRender::QCamera::CameraTranslationOption option = TranslateViewCenter)
通过全局坐标将摄像机的位置和视图向量平移 vWorld。 option 允许切换是否应平移视图中心。
注意:此函数可以通过元对象系统和从 QML 中调用。请参阅 Q_INVOKABLE。
[slot] void QCamera::viewAll()
旋转和移动摄像机,使其 viewCenter 成为场景边界体积的中心,并且整个场景都适合在视口中。
注意:仅当透镜处于透视或正交投影模式时才有效。
另请参看:Qt3D.Render::Camera::projectionType。
[slot] void QCamera::viewEntity(Qt3DCore::QEntity *entity)
旋转和移动相机,使其视中心成为实体的边界体积的中心,并且整个实体都适合在视口内。
注意:仅当透镜处于透视或正交投影模式时才有效。
另请参阅相机.projectionType。
[槽] void QCamera::viewSphere(const QVector3D &中心, float 半径)
旋转和移动相机,使其视中心为中心,并且一个半径为半径的球体适合在视口内。
注意:仅当透镜处于透视或正交投影模式时才有效。
© 2024 The Qt Company Ltd。此文档中包含的贡献的文档版权属于其各自的拥有者。本文档的提供受GNU自由文档许可第1.3版条款的约束,由自由软件基金会发布。Qt及其相应标志是The Qt Company Ltd在芬兰和其他国家/地区的商标。所有其他商标均属于其各自的拥有者。