OBJ Wavefront文件:由于面顶点顺序而产生的问题

问题描述

我创建的一个简单的obj文件面临一些奇怪的问题。 obj文件包含8个顶点,它们代表长方体形状的角。对于每个顶点,我计算一个顶点法线(我需要进行渲染)。该对象包含12个三角形面,这些面由对顶点和法线的引用定义。定义面的顶点顺序似乎与面的正常方向有所不同。例如。面孔 “ f 2 // 2 1 // 1 3 // 3”和“ f 1 // 1 2 // 2 3 // 3”可能没有相同的法线方向。 谁能告诉我,定义三角形面的顶点应该如何排序?我没有找到有关此的信息(认情况下,顶点认为逆时针排序,尽管我不确定3D点云中“逆时针”的实际含义)。 我要附加一个屏幕截图(使用了CloudCompare),该屏幕截图显示了具有错误(顶部)和正确(底部)面朝向的obj。

rendered output

我在下面添加的.obj文件代码。注意:第二个obj仅在面顶点顺序上有所不同。

非常感谢您的帮助。谢谢!

不正确的脸部方向:

v 142.275 -164.684 -222.937
v 144.341 -156.611 -189.123
v 144.475 -189.798 -192.755
v 142.505 -195.249 -224.626
v 330.045 -162.613 -234.9
v 332.11 -154.539 -201.085
v 332.245 -187.727 -204.718
v 330.274 -193.177 -236.589

vn -0.988559636 0.113057396 -0.09983923
vn -0.949405612 0.193458398 0.247392061
vn -0.965486533 -0.148224101 0.214162018
vn -0.972490893 -0.202126966 -0.11578494
vn 0.965175897 0.134606199 -0.224313751
vn 0.96863934 0.214622417 0.125200028
vn 0.98787863 -0.126679515 0.089711275
vn 0.954142849 -0.180867505 -0.238533788

f 1//1 2//2 3//3
f 1//1 3//3 4//4
f 5//5 6//5 7//7
f 5//5 7//7 8//8
f 1//1 2//2 6//6
f 1//1 5//5 6//6
f 1//1 4//4 8//8
f 1//1 5//5 8//8
f 3//3 6//6 7//7 
f 2//2 3//3 6//6
f 3//3 8//8 7//7
f 3//3 4//4 8//8

正确的面部方向

v 142.275 -164.684 -222.937
v 144.341 -156.611 -189.123
v 144.475 -189.798 -192.755
v 142.505 -195.249 -224.626
v 330.045 -162.613 -234.9
v 332.11 -154.539 -201.085
v 332.245 -187.727 -204.718
v 330.274 -193.177 -236.589

vn -0.988559636 0.113057396 -0.09983923
vn -0.949405612 0.193458398 0.247392061
vn -0.965486533 -0.148224101 0.214162018
vn -0.972490893 -0.202126966 -0.11578494
vn 0.965175897 0.134606199 -0.224313751
vn 0.96863934 0.214622417 0.125200028
vn 0.98787863 -0.126679515 0.089711275
vn 0.954142849 -0.180867505 -0.238533788

f 2//2 1//1 3//3
f 3//3 1//1 4//4
f 5//5 6//6 7//7
f 5//5 7//7 8//8
f 1//1 2//2 6//6
f 5//5 1//1 6//6
f 4//4 1//1 8//8
f 1//1 5//5 8//8
f 6//6 3//3 7//7
f 2//2 3//3 6//6
f 3//3 8//8 7//7
f 3//3 4//4 8//8

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)