为什么obj。文件包含法线

时间:2013-05-12 00:43:50

标签: object

简单的问题,为什么对象文件包含法线,你可以直接计算法线吗?

如果我是正确的,我只需要在矢量point1-point2和point1-point3之间进行交叉产生,这样可以节省我从文件中读取它们的时间。

编辑:

尝试更具体,这是我找到的文件,我想使用它:

g cube

v  0.0  0.0  0.0
v  0.0  0.0  1.0
v  0.0  1.0  0.0
v  0.0  1.0  1.0
v  1.0  0.0  0.0
v  1.0  0.0  1.0
v  1.0  1.0  0.0
v  1.0  1.0  1.0

vn  0.0  0.0  1.0
vn  0.0  0.0 -1.0
vn  0.0  1.0  0.0
vn  0.0 -1.0  0.0
vn  1.0  0.0  0.0
vn -1.0  0.0  0.0

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

编辑2:

因为人们抱怨: http://en.wikipedia.org/wiki/Wavefront_.obj_file

1 个答案:

答案 0 :(得分:2)

你可以计算法线,但计算它们需要时间。当你有很多网格并且必须以60 fps(或更高)渲染时,将预先计算的法线加载到GPU中的效率更高。也可以在矢量point1-point2和point1-point3之间交叉产生,只是给出了正常面。要获得Goraud着色所需的每顶点法线,必须在每个顶点平均面法线。所以你可以看到计算越来越深。