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在芬兰和其他国家/地区的商标。所有其他商标均属于其各自的拥有者。