我已经实现了为Ray-Tracer读取.obj文件的代码,构造了一堆三角形并将其发送以由ray-tracer渲染。
它对我尝试的第一种.obj文件有效........ 例如,显示的文件。像这样的行:
f 3437 3438 3400 3419
事情似乎很好。
现在包含使用如下行的文件:
f -107 / -138 / -105 -116 / -149 / -114 -119 / -156 / -121 -112 / -143 / -110
它正在渲染这样的东西(应该是一辆车):
然后我开始检查构建的三角形是否有意义。例如该行:
f -107 / -138 / -105 -116 / -149 / -114 -119 / -156 / -121 -112 / -143 / -110
首先将使用顶点107,138,105创建一个三角形 然后它将使用顶点107,105,116创建另一个 然后另一个使用顶点138,116和149。 因此,除了第一个三角形外,它将始终选择一个顶点x,两个顶点x + 2和一个顶点x + 3。 它将以这种方式进行,直到构造出最后一个三角形。
此程序有什么问题吗?它与第一个文件一起工作。
我知道程序也在使用正确的顶点,因为我从上一行创建了一个重复的.obj文件:
f -107 / -138 / -105 -116 / -149 / -114 -119 / -156 / -121 -112 / -143 / -110
在每个顶点线处,例如
可以看出,我记下了行号,以便于查看三角形构造算法选择的顶点是否正确。他们是。v -4.3773 9.1046 33.4049 107
根据我在旧帖子中阅读的算法,三角形的构建似乎是正确的,并且似乎是从读取顶点的文件中选择正确的行。
那还有什么可能是原因。有可能会根据这些子组来构建三角形?
三角形1
107 / -138 / -105
三角形2
-116 / -149 / -114
....
文件中没有一行没有3个顶点的倍数。