QTransform 类
class Qt3DCore::QTransform用于在网格上执行变换。 更多...
头文件 | #include <QTransform> |
CMake | find_package(Qt6 REQUIRED COMPONENTS 3DCore) target_link_libraries(mytarget PRIVATE Qt6::3DCore) |
qmake | QT += 3dcore |
实例化自 | 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之间共享。变换被保存为QVector3D缩放、QQuaternion旋转和QVector3D平移组件。变换按此顺序应用于网格。当QTransform::matrix属性被设置时,它被分解成这些变换组件,并发出相应的信号。
提供了一些辅助函数来设置QTransform;fromAxisAndAngle和fromAxesAndAngles可以用于设置围绕特定轴的旋转,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) |
[只读]
worldMatrix : const QMatrix4x4
保存变换的世界变换矩阵。这假设由QEntity引用的QTransform组件。这使得在局部变换可能没有变化的情况下,更容易识别子树中QEntity部分是否已被世界变换。
访问函数
QMatrix4x4 | worldMatrix() const |
通知信号
void | worldMatrixChanged(const QMatrix4x4 &worldMatrix) |
成员函数文档
[显式构造函数]
QTransform::QTransform(Qt3DCore::QNode *parent = nullptr)
使用parent构造一个新的QTransform。
[静态可调用]
QQuaternion QTransform::fromAxes(const QVector3D &xAxis, const QVector3D &yAxis, const QVector3D &zAxis)
根据坐标系xAxis、yAxis和zAxis创建一个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)
根据轴 axis1,angle1,axis2,angle2,axis3 和 angle3 创建一个 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)
根据 x,y,z 和角度 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)
返回由轴 xAxis,yAxis,zAxis 定义的可旋转矩阵。
注意:此函数可以通过元对象系统从QML调用。请参阅Q_INVOKABLE。
QMatrix4x4 QTransform::worldMatrix() const
返回与 QTransform 关联的 QEntity 关联的世界变换矩阵,该实体可能是一个 QEntity 层次结构的一部分。
注意:worldMatrix 属性的获取器函数。
© 2024 The Qt Company Ltd. 包含在此处的文档贡献是各自所有者的版权。此处提供的文档是根据由自由软件基金会发布的 GNU 自由文档许可证版本 1.3 的条款许可的。Qt 及其相关标志是 The Qt Company Ltd. 在芬兰及全球其他国家和地区的商标。所有其他商标均为各自所有者的财产。