在Qt3D上,实体可以具有以下两个组成部分:
Qt3DRender::QGeometryRenderer
组件,其中包含网格几何数据,例如顶点位置和法线。Qt3DCore::QTransform
组件,包含旋转,翻译和缩放比例。我打算将所有变换应用于网格几何,将网格数据导出为STL。我的意思是,所有旋转和平移都需要应用于顶点位置...
当我访问网格几何数据时,如下所示,转换不会应用于几何。
mesh->geometry()->attributes().at(i)->buffer()->data();
如何将变换应用于几何?
Qt3DCore::QTransform
组件给了我一个4x4 Matrix,但是我的顶点位置是3x1
,我不知道如何将此4x4矩阵应用于我的3x1
顶点位置
答案 0 :(得分:3)
根据转换的数学原理,要使用4x4转换矩阵转换向量,所有内容都必须位于homogeneous coordinates中。您可以通过向向量添加第四个分量并将其设置为一个,然后将其与(已经均匀的)4x4矩阵相乘来实现。所以:
convertToRaw(contentState)
要详细了解其背后的数学运算,可以查看this link。