1

因此,每当我将 3D 模型(.3ds、.obj 等)加载到我的 openGL 程序中时,它们要么被放置在看似随机的位置,要么被放置在不理想的位置。有没有一种简单的方法可以让我在导入模型时将它转到我指定的位置?我认为这可以使用顶点着色器来处理,并通过一些矢量添加来转换输入位置,但这需要首先知道它将出现在哪里,以便知道将其转换多少。

4

2 回答 2

1

这完全取决于应用于 3D 模型的转换,或 3D 建模包中使用的坐标系。我会说你从错误的一端接近这个。如果您希望数据保持一致,请确保以您期望的 3D 建模包中的方式导出数据。

于 2013-03-03T11:26:13.383 回答
1

很难弄清楚“正确的方向”是什么。当你看到一个茶壶时,它的把手应该在左边还是右边?

但是,正确的位置可能更容易调整。

假设您希望加载的对象显示在 (Lx, Ly, Lz)

首先,通过添加每个坐标并对其进行平均来计算顶点的质心(Cx、Cy、Cz)。例如:对于 (1,0,1)、(0,1,1) 和 (0,0,1) 这 3 个点,质心为 (1/3, 1/3, 1)。

现在将每个顶点偏移(Lx-Cx,Ly-Cy,Lz-Cz),并且您的几何图形应该围绕位置(Lx,Ly,Lz)“居中”。

注意:这适用于相当对称的模型(例如:人、生物、汽车等)。

于 2013-03-03T11:36:51.693 回答