我正在使用c ++中的.obj处理程序。导入数据不应该是一个问题,但我不明白为什么有可能,.obj(例如从混合器导出)有更多的''条目不是' v' entires。如果有人能解释我的话,我会非常高兴!
谢谢!
答案 0 :(得分:4)
位置,法线和纹理坐标的数量可能不同,因为两个顶点可能在一个空间中共享坐标但在另一个空间中不同。
在纹理空间中使用6种不同的矩形形状(每个面一个)来考虑一个盒子(8个顶点) - >这是6 * 4 = 24个纹理坐标。
编辑:框的常见uv-map如下所示(14个纹理坐标)。我注释了三个不同的顶点:A
,B
和C
。请注意,在一个框中,每个顶点都与三个面相邻,在uv-map中也必须为真。 C
获取与三个面相邻的纹理坐标,但必须复制B
并且A
三倍才能这样做。
答案 1 :(得分:1)
我找到了问题的根源。我过早优化了我的程序,并没有意识到纹理坐标的数量可能比顶点坐标的数量更大,因为纹理是按每个面而不是每个顶点映射的,所以每个顶点可以有很多纹理坐标映射它。希望有人能从我的错误中吸取教训。
我发现奇怪的是,在运行sf::RenderWindow
解析器之前初始化.obj
导致没有抛出错误消息,并且报告崩溃的区域与实际发生的区域完全不同。
答案 2 :(得分:0)
LWO格式的命名引起了很多混乱。标记为“ v”的线实际上是定义点,而不是顶点。 定义面后,这些点将转换为顶点,从而得到一个立方体24个顶点,但只有8个点。