如何将变换应用于网格几何

时间:2018-08-23 05:57:18

标签: qt mesh qt3d

在Qt3D上,实体可以具有以下两个组成部分:

  1. Qt3DRender::QGeometryRenderer组件,其中包含网格几何数据,例如顶点位置法线
  2. Qt3DCore::QTransform组件,包含旋转翻译缩放比例

我打算将所有变换应用于网格几何,将网格数据导出为STL。我的意思是,所有旋转和平移都需要应用于顶点位置...

当我访问网格几何数据时,如下所示,转换不会应用于几何。

mesh->geometry()->attributes().at(i)->buffer()->data();

如何将变换应用于几何


Qt3DCore::QTransform组件给了我一个4x4 Matrix,但是我的顶点位置是3x1,我不知道如何将此4x4矩阵应用于我的3x1顶点位置

1 个答案:

答案 0 :(得分:3)

根据转换的数学原理,要使用4x4转换矩阵转换向量,所有内容都必须位于homogeneous coordinates中。您可以通过向向量添加第四个分量并将其设置为一个,然后将其与(已经均匀的)4x4矩阵相乘来实现。所以:

convertToRaw(contentState)

要详细了解其背后的数学运算,可以查看this link