2013-03-03 90 views
1

因此,无论何时将3D模型(.3ds,.obj等)加载到我的openGL程序中,它们要么置于看似随机的位置,要么置于不理想的位置。是否有一种简单的方法可以使它在导入模型时进入我指定的位置?我认为这可以使用顶点着色器来处理,并通过一些向量添加来翻译输入位置,但是这需要知道它将在哪里出现在第一位以便知道要翻译多少。导入的3D模型的位置

回答

1

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

但是,正确的位置可以稍微容易调整。

让我们假设你想你所加载的对象时(LX,LY,LZ)

首先展现出来,通过将每个协调,取平均值计算的顶点(CX,CY,CZ)的重心。例如:对于3点(1,0,1),(0,1,1)和(0,0,1),质心为(1/3,1/3,1)。现在用(Lx-Cx,Ly-Cy,Lz-Cz)偏移每个顶点,并且你的几何图形应该围绕位置(Lx,Ly,Lz)“居中”。

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

+0

谢谢!我一定会试试这个。 – user1782677 2013-03-03 11:49:48

1

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

+0

由于我从像turbosquid或谷歌3D仓库这样的网站获得大部分模型,我不确定是否可以检查特定模型使用的坐标系。 – user1782677 2013-03-03 11:28:53

+0

我不知道这个网站是否有这个迹象,或者你是否可以从它创建的包中推断出来。但如果不是,我会简单地将模型放入你最喜欢的包中并在那里修改。我不想采取试图推断方向/翻译,然后自动纠正它的路线。让你的输入一致。 – Bart 2013-03-03 11:31:00