QCamera类

class Qt3DRender::QCamera

QCamera类定义了一个视图点,通过该点渲染场景。 更多...

头文件 #include <Qt3DRender/QCamera>
CMakefind_package(Qt6 REQUIRED COMPONENTS 3drender)
target_link_libraries(mytarget PRIVATE Qt6::3drender)
qmakeQT += 3drender
实例化自 Camera
继承自 Qt3DCore::QEntity

公共类型

枚举CameraTranslationOption { TranslateViewCenter, DontTranslateViewCenter }

属性

公共函数

QCamera(Qt3DCore::QNode *parent = nullptr)
floataspectRatio() const
floatbottom() const
floatexposure() const
floatfarPlane() const
floatfieldOfView() const
floatleft() const
Qt3DRender::QCameraLens *lens() const
floatnearPlane() const
voidpan(float angle)
voidpan(float angle, const QVector3D &axis)
voidpanAboutViewCenter(float angle)
voidpanAboutViewCenter(float angle, const QVector3D &axis)
QQuaternionpanRotation(float angle) const
QVector3Dposition() const
QMatrix4x4projectionMatrix() const
Qt3DRender::QCameraLens::ProjectionTypeprojectionType() const
floatright() const
voidroll(float angle)
voidrollAboutViewCenter(float angle)
QQuaternionrollRotation(float angle) const
voidrotate(const QQuaternion &q)
voidrotateAboutViewCenter(const QQuaternion &q)
QQuaternionrotation(float angle, const QVector3D &axis) const
voidtilt(float angle)
voidtiltAboutViewCenter(float angle)
QQuaterniontiltRotation(float angle) const
floattop() const
Qt3DCore::QTransform *transform() const
voidtranslate(const QVector3D &vLocal, Qt3DRender::QCamera::CameraTranslationOption option = TranslateViewCenter)
voidtranslateWorld(const QVector3D &vWorld, Qt3DRender::QCamera::CameraTranslationOption option = TranslateViewCenter)
QVector3DupVector() const
QVector3DviewCenter() const
QVector3DviewVector() const

公共槽

voidsetAspectRatio(float aspectRatio)
voidsetBottom(float bottom)
voidsetExposure(float exposure)
voidsetFarPlane(float farPlane)
voidsetFieldOfView(float fieldOfView)
voidsetLeft(float left)
voidsetNearPlane(float nearPlane)
voidsetPosition(const QVector3D &position)
voidsetProjectionMatrix(const QMatrix4x4 &projectionMatrix)
voidsetProjectionType(Qt3DRender::QCameraLens::ProjectionType type)
voidsetRight(float right)
voidsetTop(float top)
voidsetUpVector(const QVector3D &upVector)
voidsetViewCenter(const QVector3D &viewCenter)
voidviewAll()
voidviewEntity(Qt3DCore::QEntity *entity)
voidviewSphere(const QVector3D &center, float radius)

信号

voidaspectRatioChanged(float aspectRatio)
voidbottomChanged(float bottom)
voidexposureChanged(float exposure)
voidfarPlaneChanged(float farPlane)
voidfieldOfViewChanged(float fieldOfView)
voidleftChanged(float left)
voidnearPlaneChanged(float nearPlane)
voidpositionChanged(const QVector3D &position)
voidprojectionMatrixChanged(const QMatrix4x4 &projectionMatrix)
voidprojectionTypeChanged(Qt3DRender::QCameraLens::ProjectionType projectionType)
voidrightChanged(float right)
voidtopChanged(float top)
voidupVectorChanged(const QVector3D &upVector)
voidviewCenterChanged(const QVector3D &viewCenter)
voidviewVectorChanged(const QVector3D &viewVector)

详细描述

成员类型文档

枚举 QCamera::CameraTranslationOption

此枚举指定如何平移相机视图中心

常量描述
Qt3DRender::QCamera::TranslateViewCenter0平移视图中心,使视图方向保持不变
Qt3DRender::QCamera::DontTranslateViewCenter1不平移视图中心,使视图方向改变

属性文档

aspectRatio : float

包含当前纵横比。

访问函数

floataspectRatio() const
voidsetAspectRatio(float aspectRatio)

通知信号

voidaspectRatioChanged(float aspectRatio)

bottom : float

包含相机当前的底部。

projectionTypeQCameraLens::OrthographicProjection 时,此属性才有意义。

访问函数

floatbottom() const
voidsetBottom(float bottom)

通知信号

voidbottomChanged(float bottom)

exposure : float

包含当前相机的曝光度。

默认值为 0.0。

在 Qt 3D Extras 中的 MetalRoughMaterial 是目前唯一使用相机曝光度的材料。负值会使材料变暗,正值会使材料变亮。

自定义材料可以选择不同的值来解析。

访问函数

floatexposure() const
voidsetExposure(float exposure)

通知信号

voidexposureChanged(float exposure)

farPlane : float

包含当前相机远裁剪面。距离相机比远裁剪面远的对象将不会被渲染。

访问函数

floatfarPlane() const
voidsetFarPlane(float farPlane)

通知信号

voidfarPlaneChanged(float farPlane)

fieldOfView : float

包含当前垂直视野角(以度为单位)。

aspectRatio 一起,此属性决定了相机可以看到场景的多少。在这方面,你可以将其视为选择一个广角(宽水平视野角)或长焦(窄水平视野角)镜头,具体取决于你想捕捉的场景大小。

视角字段仅在投影类型为 投影类型 时相关,即 QCameraLens::PerspectiveProjection

访问函数

floatfieldOfView() const
voidsetFieldOfView(float fieldOfView)

通知信号

voidfieldOfViewChanged(float fieldOfView)

left : float

保持相机当前的左侧。

projectionTypeQCameraLens::OrthographicProjection 时,此属性才有意义。

访问函数

floatleft() const
voidsetLeft(float left)

通知信号

voidleftChanged(float left)

[只读] lens : Qt3DRender::QCameraLens* const

保存相机的 Qt3DRender::QCameraLens 组件。

访问函数

Qt3DRender::QCameraLens *lens() const

nearPlane : float

保持当前相机的近平面。距离近平面小于物体的将不会渲染。

访问函数

floatnearPlane() const
voidsetNearPlane(float nearPlane)

通知信号

voidnearPlaneChanged(float nearPlane)

position : QVector3D

保持相机相对于父实体的坐标系位置。

访问函数

QVector3Dposition() const
voidsetPosition(const QVector3D &position)

通知信号

voidpositionChanged(const QVector3D &position)

projectionMatrix : QMatrix4x4

保持相机的当前投影矩阵。

访问函数

QMatrix4x4projectionMatrix() const
voidsetProjectionMatrix(const QMatrix4x4 &projectionMatrix)

通知信号

voidprojectionMatrixChanged(const QMatrix4x4 &projectionMatrix)

projectionType : Qt3DRender::QCameraLens::ProjectionType

保持相机投影的类型。默认值是 QCameraLens::PerspectiveProjection

访问函数

Qt3DRender::QCameraLens::ProjectionTypeprojectionType() const
voidsetProjectionType(Qt3DRender::QCameraLens::ProjectionType type)

通知信号

voidprojectionTypeChanged(Qt3DRender::QCameraLens::ProjectionType projectionType)

另请参阅Qt3DRender::QCameraLens::ProjectionType

right : float

保持相机当前的右侧。

projectionTypeQCameraLens::OrthographicProjection 时,此属性才有意义。

访问函数

floatright() const
voidsetRight(float right)

通知信号

voidrightChanged(float right)

top : float

保持相机当前的顶部。

projectionTypeQCameraLens::OrthographicProjection 时,此属性才有意义。

访问函数

floattop() const
voidsetTop(float top)

通知信号

voidtopChanged(float top)

[只读] transform : Qt3DCore::QTransform* const

保存摄像机的 Qt3DCore::QTransform 组件。

访问函数

Qt3DCore::QTransform *transform() const

upVector : QVector3D

保存相对于父实体的摄像机向上向量。

向上向量指示摄像机顶部面向的方向。想象一下拍照:定位自己并对准目标后,您可能需要左右旋转摄像机,以获得肖像、风景(或倾斜!)的拍照。upVector 允许您控制此类移动。

访问函数

QVector3DupVector() const
voidsetUpVector(const QVector3D &upVector)

通知信号

voidupVectorChanged(const QVector3D &upVector)

viewCenter : QVector3D

保存相对于父实体的摄像机观察中心。

直观上,viewCenter 是摄像机指向的位置。

访问函数

QVector3DviewCenter() const
voidsetViewCenter(const QVector3D &viewCenter)

通知信号

voidviewCenterChanged(const QVector3D &viewCenter)

[只读] viewVector : const QVector3D

保存相对于父实体的摄像机观察向量。

此向量描述了从摄像机(位置)到其目标点(观察中心)的位移。

访问函数

QVector3DviewVector() const

通知信号

voidviewVectorChanged(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)

通过局部坐标将摄像机的位置和视图向量平移 vLocaloption 允许切换是否应平移视图中心。

注意:此函数可以通过元对象系统和从 QML 中调用。请参阅 Q_INVOKABLE

[invokable] void QCamera::translateWorld(const QVector3D &vWorld, Qt3DRender::QCamera::CameraTranslationOption option = TranslateViewCenter)

通过全局坐标将摄像机的位置和视图向量平移 vWorldoption 允许切换是否应平移视图中心。

注意:此函数可以通过元对象系统和从 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 半径)

旋转和移动相机,使其视中心中心,并且一个半径为半径的球体适合在视口内。

注意:仅当透镜处于透视或正交投影模式时才有效。

另请参看:Qt3D.Render::Camera::projectionType

© 2024 The Qt Company Ltd。此文档中包含的贡献的文档版权属于其各自的拥有者。本文档的提供受GNU自由文档许可第1.3版条款的约束,由自由软件基金会发布。Qt及其相应标志是The Qt Company Ltd在芬兰和其他国家/地区的商标。所有其他商标均属于其各自的拥有者。