QTransform 类

class Qt3DCore::QTransform

用于在网格上执行变换。 更多...

头文件 #include <QTransform>
CMakefind_package(Qt6 REQUIRED COMPONENTS 3DCore)
target_link_libraries(mytarget PRIVATE Qt6::3DCore)
qmakeQT += 3dcore
实例化自 Transform
继承自 Qt3DCore::QComponent

属性

公共函数

QTransform(Qt3DCore::QNode *parent = nullptr)
QMatrix4x4matrix() const
QQuaternionrotation() const
floatrotationX() const
floatrotationY() const
floatrotationZ() const
floatscale() const
QVector3Dscale3D() const
QVector3Dtranslation() const
QMatrix4x4worldMatrix() const

公共槽

voidsetMatrix(const QMatrix4x4 &matrix)
voidsetRotation(const QQuaternion &rotation)
voidsetRotationX(float rotationX)
voidsetRotationY(float rotationY)
voidsetRotationZ(float rotationZ)
voidsetScale(float scale)
voidsetScale3D(const QVector3D &scale)
voidsetTranslation(const QVector3D &translation)

信号

voidmatrixChanged()
voidrotationChanged(const QQuaternion &rotation)
voidrotationXChanged(float rotationX)
voidrotationYChanged(float rotationY)
voidrotationZChanged(float rotationZ)
voidscale3DChanged(const QVector3D &scale)
voidscaleChanged(float scale)
voidtranslationChanged(const QVector3D &translation)
voidworldMatrixChanged(const QMatrix4x4 &worldMatrix)

静态公有成员

QQuaternionfromAxes(const QVector3D &xAxis, const QVector3D &yAxis, const QVector3D &zAxis)
QQuaternionfromAxesAndAngles(const QVector3D &axis1, float angle1, const QVector3D &axis2, float angle2)
QQuaternionfromAxesAndAngles(const QVector3D &axis1, float angle1, const QVector3D &axis2, float angle2, const QVector3D &axis3, float angle3)
QQuaternionfromAxisAndAngle(const QVector3D &axis, float angle)
QQuaternionfromAxisAndAngle(float x, float y, float z, float angle)
QQuaternionfromEulerAngles(const QVector3D &eulerAngles)
QQuaternionfromEulerAngles(float pitch, float yaw, float roll)
QMatrix4x4rotateAround(const QVector3D &point, float angle, const QVector3D &axis)
QMatrix4x4rotateFromAxes(const QVector3D &xAxis, const QVector3D &yAxis, const QVector3D &zAxis)

详细描述

QTransform组件不能在多个QEntity之间共享。变换被保存为QVector3D缩放、QQuaternion旋转和QVector3D平移组件。变换按此顺序应用于网格。当QTransform::matrix属性被设置时,它被分解成这些变换组件,并发出相应的信号。

提供了一些辅助函数来设置QTransform;fromAxisAndAngle和fromAxesAndAngles可以用于设置围绕特定轴的旋转,fromEulerAngles可以用于根据欧拉角设置旋转,rotateAround可以用于相对局部原点围绕特定点旋转对象。

属性文档

matrix : QMatrix4x4

保存变换的QMatrix4x4。

注意:当设置矩阵属性时,它被分解为平移、旋转和缩放组件。

访问函数

QMatrix4x4matrix() const
voidsetMatrix(const QMatrix4x4 &matrix)

通知信号

voidmatrixChanged()

rotation : QQuaternion

作为QQuaternion保存变换的旋转。

访问函数

QQuaternionrotation() const
voidsetRotation(const QQuaternion &rotation)

通知信号

voidrotationChanged(const QQuaternion &rotation)

rotationX : float

以欧拉角的形式保存变换的x旋转。

访问函数

floatrotationX() const
voidsetRotationX(float rotationX)

通知信号

voidrotationXChanged(float rotationX)

rotationY : float

保存变换的旋转角度y。

访问函数

floatrotationY() const
voidsetRotationY(float rotationY)

通知信号

voidrotationYChanged(float rotationY)

rotationZ : float

保存变换的旋转角度z。

访问函数

floatrotationZ() const
voidsetRotationZ(float rotationZ)

通知信号

voidrotationZChanged(float rotationZ)

scale : float

保存变换的统一比例。如果已经通过setScale3D设置了比例,则只保存x值。

访问函数

floatscale() const
voidsetScale(float scale)

通知信号

voidscaleChanged(float scale)

scale3D : QVector3D

保存变换的比例,以QVector3D形式。

访问函数

QVector3Dscale3D() const
voidsetScale3D(const QVector3D &scale)

通知信号

voidscale3DChanged(const QVector3D &scale)

translation : QVector3D

保存变换的平移,以QVector3D形式。

访问函数

QVector3Dtranslation() const
voidsetTranslation(const QVector3D &translation)

通知信号

voidtranslationChanged(const QVector3D &translation)

[只读] worldMatrix : const QMatrix4x4

保存变换的世界变换矩阵。这假设由QEntity引用的QTransform组件。这使得在局部变换可能没有变化的情况下,更容易识别子树中QEntity部分是否已被世界变换。

访问函数

QMatrix4x4worldMatrix() const

通知信号

voidworldMatrixChanged(const QMatrix4x4 &worldMatrix)

成员函数文档

[显式构造函数] QTransform::QTransform(Qt3DCore::QNode *parent = nullptr)

使用parent构造一个新的QTransform。

[静态可调用] QQuaternion QTransform::fromAxes(const QVector3D &xAxis, const QVector3D &yAxis, const QVector3D &zAxis)

根据坐标系xAxisyAxiszAxis创建一个QQuaternion定义的旋转。

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

[静态调用] QQuaternion QTransform::fromAxesAndAngles(const QVector3D &axis1, float angle1, const QVector3D &axis2, float angle2)

根据轴 axis1,角度 angle1,轴 axis2 和角度 angle2 创建一个 QQuaternion。返回生成的 QQuaternion

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

[静态调用] QQuaternion QTransform::fromAxesAndAngles(const QVector3D &axis1, float angle1, const QVector3D &axis2, float angle2, const QVector3D &axis3, float angle3)

根据轴 axis1angle1axis2angle2axis3angle3 创建一个 QQuaternion。返回生成的 QQuaternion

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

[静态调用] QQuaternion QTransform::fromAxisAndAngle(const QVector3D &axis, float angle)

根据轴 axis 和角度 angle 创建一个 QQuaternion。返回生成的 QQuaternion

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

[静态调用] QQuaternion QTransform::fromAxisAndAngle(float x, float y, float z, float angle)

根据 xyz 和角度 angle 创建一个 QQuaternion。返回生成的 QQuaternion

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

[静态调用] QQuaternion QTransform::fromEulerAngles(const QVector3D &eulerAngles)

根据 eulerAngles 创建一个 QQuaternion。返回生成的 QQuaternion

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

[静态调用] QQuaternion QTransform::fromEulerAngles(float pitch, float yaw, float roll)

根据俯仰 pitch,偏航 yaw 和翻滚 roll 创建一个 QQuaternion。返回生成的 QQuaternion

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

[静态调用] QMatrix4x4 QTransform::rotateAround(const QVector3D &point, float angle, const QVector3D &axis)

根据点 point,轴 axis 和角度 angle 创建旋转矩阵。返回生成的 QMatrix4x4

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

[静态可调用] QMatrix4x4 QTransform::rotateFromAxes(const QVector3D &xAxis, const QVector3D &yAxis, const QVector3D &zAxis)

返回由轴 xAxisyAxiszAxis 定义的可旋转矩阵。

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

QMatrix4x4 QTransform::worldMatrix() const

返回与 QTransform 关联的 QEntity 关联的世界变换矩阵,该实体可能是一个 QEntity 层次结构的一部分。

注意:worldMatrix 属性的获取器函数。

© 2024 The Qt Company Ltd. 包含在此处的文档贡献是各自所有者的版权。此处提供的文档是根据由自由软件基金会发布的 GNU 自由文档许可证版本 1.3 的条款许可的。Qt 及其相关标志是 The Qt Company Ltd. 在芬兰及全球其他国家和地区的商标。所有其他商标均为各自所有者的财产。