是否可以在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平移的位置,但是矩形只是消失而不是靠近相机。
答案 0 :(得分:0)
在Rectangle
上应用转化:Translate {x: 0; y: 0; z: 100}
会引发错误,因为Translate
只有x
和y
属性(参见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 Canvas3D或Qt3D模块。如果您想使用three.js,请查看此post