diff --git a/src/quick3d/qquick3dnode.cpp b/src/quick3d/qquick3dnode.cpp index 0253958f62da0032c78ddf9fb390a5c684ab7416..c704c260ea2c075c8104e0518c397beb4be6111c 100644 --- a/src/quick3d/qquick3dnode.cpp +++ b/src/quick3d/qquick3dnode.cpp @@ -280,6 +280,20 @@ QVector3D QQuick3DNode::globalRotation() const return QVector3D(angleX, angleY, angleZ); } +/*! + \qmlproperty vector3d QtQuick3D::Node::globalScale + + This property returns the scale of the node in global coordinate space. +*/ +QVector3D QQuick3DNode::globalScale() const +{ + const QMatrix4x4 transform = globalTransform(); + const float scaleX = transform.column(0).length(); + const float scaleY = transform.column(1).length(); + const float scaleZ = transform.column(2).length(); + return QVector3D(scaleX, scaleY, scaleZ); +} + /*! \qmlproperty matrix4x4 QtQuick3D::Node::globalTransform diff --git a/src/quick3d/qquick3dnode_p.h b/src/quick3d/qquick3dnode_p.h index 0f206c390c6f23d2615651f479ae9e19305dcf43..8867f964126f5695fe69c480313ec41bdef799dc 100644 --- a/src/quick3d/qquick3dnode_p.h +++ b/src/quick3d/qquick3dnode_p.h @@ -70,6 +70,7 @@ class Q_QUICK3D_EXPORT QQuick3DNode : public QQuick3DObject Q_PROPERTY(QVector3D right READ right) Q_PROPERTY(QVector3D globalPosition READ globalPosition) Q_PROPERTY(QVector3D globalRotation READ globalRotation) + Q_PROPERTY(QVector3D globalScale READ globalScale) Q_PROPERTY(QMatrix4x4 globalTransform READ globalTransform NOTIFY globalTransformChanged) public: @@ -112,8 +113,10 @@ public: QVector3D forward() const; QVector3D up() const; QVector3D right() const; + QVector3D globalPosition() const; QVector3D globalRotation() const; + QVector3D globalScale() const; QMatrix4x4 globalTransform() const; QMatrix4x4 globalTransformLeftHanded() const; QMatrix4x4 globalTransformRightHanded() const;