如何使用 QML 围绕原点缩放 QMesh

How to Scale a QMesh around the origin with QML

我正在使用 QML 来显示 STL 文件。我想对文件进行修改并将其显示在场景中(平移、旋转和缩放)我做了前两个但是对于缩放我想围绕原点缩放(x=0,y=0,z=0 ).我该如何进行?

原始网格 我想做的事 :

如果你想变换对象你需要使用旋转-缩放-变换顺序(简而言之:RST

如果你想变换一个坐标系,你可以反过来做:TSR.

顺序真的很重要。

如果你加载了stl文件并且原点已经是你想要的,那么你可以旋转对象,缩放然后平移它。如果原点不是您想要的,则需要将其转换为您想要的 "initial position"。如果您是生成 stl 文件的人,则可以使用生成该 stl 文件的软件将其放在正确的 "start position".

您想围绕原点 (x=0,y=0,z=0) 使用与 y 不同的比例因子进行缩放吗?

您可以按照以下方式完成此操作:

Transform {
     ...
    scale3D:  Qt.vector3d(1, 0.5, 1)
}

编辑:如果您的 STL 文件的原点与您的坐标系不同: 在这种情况下,将您的对象转换到坐标系的原点,进行缩放,然后按照我在第一个答案中的建议将其转换回来。要获得所需的翻译量,您可以查询 boundingvolume、minExtent 和 maxExtent