【3D】几何物体——三角网格的表示与显示(obj)

版权声明:本文为博主原创文章,未经博主允许不得转载。如遇到疑问,评论会给出答复。学习交流——关注页面微信公众号。【吃良心,拉思想】 https://blog.csdn.net/Taily_Duan/article/details/82905430

OBJ文件格式

OBJ是一种标准的3D模型文件格式;软件:3dsMax,LightWare,Maya都支持OBJ文件的读写;

OBJ是以纯文本的形式存储了模型的顶点、法线和纹理坐标和材质使用信息;

格式:前缀参数1 参数2 参数3.......

前缀

说明

v

表示本行指定一个顶点 

此前缀后跟着3个单精度浮点数,分别表示顶点的x,y,z坐标值

vt

表示本行指定一个纹理坐标 

此前缀后跟着两个单精度浮点数,分别表示此纹理坐标的u,v值

vn

表示本行指定一个法线向量 

此前缀后跟着3个单精度浮点数,分别表示顶点法向量x,y,z坐标值

f

表示本行指定一个表面(Face) 

此前缀后面的数据见“面的格式说明”

usemtl

此前缀后只跟着一个参数。该参数指定了从此行之后到下一个以usemtl开头的行

之间的所有表面所使用的材质名称。该材质可以在此OBJ文件所附属的MTL文件

中找到具体信息。

mtllib

此前缀后只跟着一个参数,该参数指定了此OBJ文件所使用的材质库文件(*.mtl)

的文件路径

参考:https://wenku.baidu.com/view/3d47b9b73086bceb19e8b8f67c1cfad6195fe9b2.html

面的格式说明:

f  顶点坐标索引 / 纹理坐标索引 / 顶点法向索引

f Vertex / Texture / Normal

其中,纹理坐标索引/顶点法向索引可以为空;

f 1 2 3 等同于 f 1// 2// 3//

f 1/3 2/5 3/4 (顶点法向索引为空)

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

f 1//4 2//6 3//2

obj格式对纹理的支持是通过关键字mtllib指定的;

newmtl blinn1SG 

illum 4 

Ka 0.2 0.2 0.2 

Kd 1 1 1 

Ks 0.2 0.2 0.2 

Tf 1.00 1.00 1.00 

map_Kd carp.bmp

Ka——物体材质中环境光的颜色

Kd——物体材质中漫反射光的颜色

Ks——物体材质中镜面光颜色

map_Kd——纹理图像的路径

三角网格的数据结构

三角网格的数据由几何和连接关系组成;

几何包括顶点的x,y,z坐标及顶点的法向量等;

连接关系即三角网格是如何连在一块的;

常用的三角网格数据结构包括:

顶点-边(Vertex-Edge)

顶点-面(Vertex-Face)

邻接矩阵 和 邻接表

顶点-边-面

半边结构(half Edge)

纹理数据

obj文件中不但包含顶点几何坐标,还可以指定纹理数据,mtllib命令指定了材质属性的文件,材质属性文件中可以指定纹理图像所在的文件。纹理的显示包含三个步骤:

1、生成纹理数据

2、将纹理数据载入纹理内存

3、将纹理数据映射到物体表面

mtl 格式文件

newmtl name #name为材质名称

Ns exponent #exponent指定材质的反射指数,定义了反射高光度

Ka r g b #环境光反射,g和b两参数是可选的,如果只指定了r的值,则g和b的值都等于r的值

Kd r g b #漫反射

Ks r g b #镜面光反射

# Ka Kd Ks 都还有其他两种格式,可查阅其他资料:

#Kd spectral file.rfl factor

#Kd xyz x y z

map_Kd picture.png #固有纹理贴图

map_Ka picture1.png #阴影纹理贴图

map_Ks picture2.png #高光纹理贴图 illum 2

#光照模型

#光照模型属性如下:

#0. 色彩开,阴影色关

#1. 色彩开,阴影色开

#2. 高光开

#3. 反射开,光线追踪开

#4. 透明: 玻璃开 反射:光线追踪开

#5. 反射:菲涅尔衍射开,光线追踪开

#6. 透明:折射开 反射:菲涅尔衍射关,光线追踪开

#7. 透明:折射开 反射:菲涅尔衍射开,光线追踪开

#8. 反射开,光线追踪关

#9. 透明: 玻璃开 反射:光线追踪关

#10. 投射阴影于不可见表面

猜你喜欢

转载自blog.csdn.net/Taily_Duan/article/details/82905430
今日推荐