我们如何在Z轴上转换QML矩形,而不仅仅是X和Y?

时间:2015-10-26 06:50:54

标签: qt 3d qml transform

是否可以在Z轴上转换QML矩形,类似于我们在使用CSS transform:translateZ()transform:translate3d()的HTML中的方式?

在Rectangle上应用transform: Translate {x: 0; y: 0; z: 100}会抛出一个错误,即z属性未被定义。

我能够将transform: Rotation{}应用于具有z轴旋转的矩形,并且它看起来像3D。我希望我也可以用3D翻译东西。

有办法吗?

编辑:我尝试像这样设置Matrix4x4:

        transform: Matrix4x4 {
            matrix: Qt.matrix4x4(
                1,0,0,0,
                0,1,0,0,
                0,0,1,10,
                0,0,0,1
            )
        }

我将数字10设置为我相信Z平移的位置,但是矩形只是消失而不是靠近相机。

1 个答案:

答案 0 :(得分:0)

Rectangle上应用转化:Translate {x: 0; y: 0; z: 100}会引发错误,因为Translate只有xy属性(参见http://doc.qt.io/qt-5/qml-qtquick-translate.html })。

Transform与您尝试使用它的方式不符,因为z不是沿z轴的位置。 z是"堆叠顺序"用于控制在其他项目(http://doc.qt.io/qt-5/qml-qtquick-item.html#z-prop)的顶部或下方绘制哪些项目。

如果你想让你的Rectangle出现并且#34;离相机更近一点,那么Scale似乎可以使用Transform http://doc.qt.io/qt-5/qml-qtquick-scale.html })或只使用商品scale属性(http://doc.qt.io/qt-5/qml-qtquick-item.html#scale-prop)。

answer也可能对您有所帮助,因为其他人也有类似的问题。它说明了如何沿不同的轴旋转。例如,您可以执行以下操作:transform: Rotation { origin.x: 50; origin.y: 55; axis { x: 0; y: 1; z: 0 } angle: 60}

请注意,无法沿着" z轴"实际翻译QML Rectangle。因此,如果您的目标是在QML中创建3D场景,则有两个可能的选项:Qt Canvas3DQt3D模块。如果您想使用three.js,请查看此post