因此,每当我将3D模型(.3ds,.obj等)加载到我的openGL程序中时,它们要么被放置在看似随机的位置,要么被定位在不理想的位置。是否有一种简单的方法可以使我在导入模型时进入我指定的位置?我认为这可以使用顶点着色器处理并通过一些向量加法来转换输入位置,但这需要知道它首先出现在哪里以便知道要翻译多少。
答案 0 :(得分:1)
这完全取决于应用于3D模型的变换,或3D建模包中使用的坐标系。我会说你是从错误的一端接近这个。如果您希望数据保持一致,请确保以您期望的3D建模包的方式导出数据。
答案 1 :(得分: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)周围“居中”。
注意:这适用于相当对称的模型(例如:人,生物,汽车等)。