艺术家朋友向我发送了一个由3DS Max 2009导出的.obj文件,该文件包含三个纹理坐标作为vt
命令的参数。根据.obj规范,这是正确的。但是,我不确定如何映射为常规2D .jpg纹理提供的U-V-W坐标。
这对我来说相对重要,因为我玩3DS Max试图弄清楚如何强制它只输出U-V坐标,但似乎没有直接的方式。在这种情况下,这只是一个天空盒,但在其他情况下,它可能会更复杂,而且不能手动固定。
谢谢!
答案 0 :(得分:8)
文章What Is UVW Mapping?中有一节解释:
你可能会质疑为什么需要一个 2D的深度坐标,如W 平面。一个原因是因为它 有时可以翻转 相对于地图的方向 它的几何形状要做到这一点,你需要 第三个坐标。 W坐标 对三维也有意义 程序材料。
在您的情况下,您可以简单地忽略W坐标,只读取以vt
开头的前两行浮点数。这假设您并不十分担心W坐标占用的额外空间,因为.obj是一种非常低效的文件格式。
我个人不喜欢在OpenGL中使用.obj,因为它提供了每个面而不是每个顶点的顶点法线。要正确照亮对象,您必须复制顶点或通过平均面中的周围顶点法线来计算法线。如果您想探索更有效的替代方案,请查看二进制格式,例如完整记录的.md2格式。如果你还没有使用它,也可以考虑使用glDrawElements。
答案 1 :(得分:3)
希望这会有所帮助。