最近在做三维方面的东西,用到了.obj文件及.mtl文件,期间走了不少弯路,记在这里希望能对别人起到启示作用。
对于.obj文件表示的三维模型,我在做实验时候用到了以下几个关键字:
v:顶点坐标,后面三个数分别为x,y,z坐标
vt:贴图坐标点
vn:顶点法线(当显示模型模糊时,应该是obj文件中没有计算法线,因而没法计算光照,这时候需要额外计算顶点法线)
p:点
l:线
f:面
g:组名称
usemtl:材质名称
mtllib:材质库
对于.mtl文件,一般情况下是这么定义的:
newmtl mymtl_1
ka r g b
kd r g b
ks r g b
其中newmtl代表着定义一个新的材质,mymtl_1位材质名称,obj文件中应该有对应的usemtl mymtl_1
ka:a为环境光,及ambient
kd:d为漫反射,及diffuse
ks:s为镜面反射,及specular