Qt3DCore::QTransform Class

class Qt3DCore::QTransform

用于对网格执行变换。更多

头文件: #include <QTransform>
CMake: find_package(Qt6 REQUIRED COMPONENTS 3DCore)
target_link_libraries(mytarget PRIVATE Qt6::3DCore)
qmake: QT += 3dcore
在 QML 中: Transform
继承: Qt3DCore::QComponent
状态:已废弃

属性

公共功能

QTransform(Qt3DCore::QNode *parent = nullptr)
QMatrix4x4 matrix() const
QQuaternion rotation() const
float rotationX() const
float rotationY() const
float rotationZ() const
float scale() const
QVector3D scale3D() const
QVector3D translation() const
QMatrix4x4 worldMatrix() const

公共插槽

void setMatrix(const QMatrix4x4 &matrix)
void setRotation(const QQuaternion &rotation)
void setRotationX(float rotationX)
void setRotationY(float rotationY)
void setRotationZ(float rotationZ)
void setScale(float scale)
void setScale3D(const QVector3D &scale)
void setTranslation(const QVector3D &translation)

信号

void matrixChanged()
void rotationChanged(const QQuaternion &rotation)
void rotationXChanged(float rotationX)
void rotationYChanged(float rotationY)
void rotationZChanged(float rotationZ)
void scale3DChanged(const QVector3D &scale)
void scaleChanged(float scale)
void translationChanged(const QVector3D &translation)
void worldMatrixChanged(const QMatrix4x4 &worldMatrix)

静态公共成员

QQuaternion fromAxes(const QVector3D &xAxis, const QVector3D &yAxis, const QVector3D &zAxis)
QQuaternion fromAxesAndAngles(const QVector3D &axis1, float angle1, const QVector3D &axis2, float angle2)
QQuaternion fromAxesAndAngles(const QVector3D &axis1, float angle1, const QVector3D &axis2, float angle2, const QVector3D &axis3, float angle3)
QQuaternion fromAxisAndAngle(const QVector3D &axis, float angle)
QQuaternion fromAxisAndAngle(float x, float y, float z, float angle)
QQuaternion fromEulerAngles(const QVector3D &eulerAngles)
QQuaternion fromEulerAngles(float pitch, float yaw, float roll)
QMatrix4x4 rotateAround(const QVector3D &point, float angle, const QVector3D &axis)
QMatrix4x4 rotateFromAxes(const QVector3D &xAxis, const QVector3D &yAxis, const QVector3D &zAxis)

详细说明

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

我们提供了多个辅助函数来设置 QTransform:fromAxisAndAnglefromAxesAndAngles 可用于设置绕特定轴的旋转,fromEulerAngles 可用于设置基于欧拉角的旋转,rotateAround 可用于设置对象绕相对于本地原点的特定点的旋转。

属性文档

matrix : QMatrix4x4

保存变换的QMatrix4x4

注: 设置矩阵属性后,它将分解为平移、旋转和缩放分量。

访问功能:

QMatrix4x4 matrix() const
void setMatrix(const QMatrix4x4 &matrix)

通知信号:

void matrixChanged()

rotation : QQuaternion

将变换的旋转值保存为QQuaternion

访问功能:

QQuaternion rotation() const
void setRotation(const QQuaternion &rotation)

通知信号:

void rotationChanged(const QQuaternion &rotation)

rotationX : float

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

访问功能

float rotationX() const
void setRotationX(float rotationX)

通知信号

void rotationXChanged(float rotationX)

rotationY : float

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

访问功能:

float rotationY() const
void setRotationY(float rotationY)

通知信号

void rotationYChanged(float rotationY)

rotationZ : float

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

访问功能

float rotationZ() const
void setRotationZ(float rotationZ)

通知信号

void rotationZChanged(float rotationZ)

scale : float

保持变换的统一比例。如果使用setScale3D 设置了缩放比例,则只保留 x 值。

访问功能:

float scale() const
void setScale(float scale)

通知信号:

void scaleChanged(float scale)

scale3D : QVector3D

将变换的比例保持为QVector3D

访问功能:

QVector3D scale3D() const
void setScale3D(const QVector3D &scale)

通知信号:

void scale3DChanged(const QVector3D &scale)

translation : QVector3D

将变换的平移值保存为QVector3D

访问功能:

QVector3D translation() const
void setTranslation(const QVector3D &translation)

通知信号:

void translationChanged(const QVector3D &translation)

[read-only] worldMatrix : const QMatrix4x4

保存变换的世界变换矩阵。假定QTransform 组件被QEntity 引用。这样就能更方便地识别子树的QEntity 部分何时在世界范围内进行了变换,即使其本地变换可能没有改变。

访问功能:

QMatrix4x4 worldMatrix() const

Notifier 信号:

void worldMatrixChanged(const QMatrix4x4 &worldMatrix)

成员函数 文档

[explicit] QTransform::QTransform(Qt3DCore::QNode *parent = nullptr)

构建一个新的 QTransform,parent

[static invokable] QQuaternion QTransform::fromAxes(const QVector3D &xAxis, const QVector3D &yAxis, const QVector3D &zAxis)

从轴xAxisyAxiszAxis 创建一个定义旋转的 QQuaterniom。

注: 可通过元对象系统和 QML 调用该函数。请参见Q_INVOKABLE

[static invokable] QQuaternion QTransform::fromAxesAndAngles(const QVector3D &axis1, float angle1, const QVector3D &axis2, float angle2)

axis1,angle1,axis2angle2 创建QQuaternion 。返回生成的QQuaternion

注: 可通过元对象系统和 QML 调用此函数。请参见Q_INVOKABLE

[static invokable] QQuaternion QTransform::fromAxesAndAngles(const QVector3D &axis1, float angle1, const QVector3D &axis2, float angle2, const QVector3D &axis3, float angle3)

axis1,angle1,axis2,angle2,axis3angle3 创建QQuaternion 。返回生成的QQuaternion

注: 可通过元对象系统和 QML 调用此函数。请参见Q_INVOKABLE

[static invokable] QQuaternion QTransform::fromAxisAndAngle(const QVector3D &axis, float angle)

axisangle 创建QQuaternion 。返回生成的QQuaternion

注: 可通过元对象系统和 QML 调用此函数。请参见Q_INVOKABLE

[static invokable] QQuaternion QTransform::fromAxisAndAngle(float x, float y, float z, float angle)

x,y,zangle 创建QQuaternion 。返回生成的QQuaternion

注: 可通过元对象系统和 QML 调用此函数。请参见Q_INVOKABLE

[static invokable] QQuaternion QTransform::fromEulerAngles(const QVector3D &eulerAngles)

eulerAngles 创建QQuaternion 。返回生成的QQuaternion

注: 可通过元对象系统和 QML 调用此函数。请参见Q_INVOKABLE

[static invokable] QQuaternion QTransform::fromEulerAngles(float pitch, float yaw, float roll)

pitchyawroll 创建QQuaternion 。返回生成的QQuaternion

注: 可通过元对象系统和 QML 调用此函数。请参见Q_INVOKABLE

[static invokable] QMatrix4x4 QTransform::rotateAround(const QVector3D &point, float angle, const QVector3D &axis)

根据axisangle 创建一个围绕point 的旋转矩阵。返回生成的QMatrix4x4

注: 可通过元对象系统和 QML 调用此函数。请参见Q_INVOKABLE

[static invokable] QMatrix4x4 QTransform::rotateFromAxes(const QVector3D &xAxis, const QVector3D &yAxis, const QVector3D &zAxis)

返回由xAxis,yAxis,zAxis 轴定义的旋转矩阵。

注: 可通过元对象系统和 QML 调用此函数。请参见Q_INVOKABLE

QMatrix4x4 QTransform::worldMatrix() const

当被QEntity 引用时,返回与QTransform 相关联的世界变换矩阵, 可能是QEntity 层次结构的一部分。

注: 属性 worldMatrix 的获取函数。

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