Unity中解析加载Obj文件(C#)

本文详细介绍了Obj文件格式和MTL材质模板库文件格式,包括顶点坐标、纹理坐标、法线向量等数据以及材质的阴影色、固有色、高光色等属性。同时,文章还讲解了如何在Unity中解析并加载这些文件,涉及数据结构定义、文件解析以及Unity加载步骤。
摘要由CSDN通过智能技术生成

Obj文件格式

mtllib master.mtl  
v -0.500000 -0.500000 0.500000  
v 0.500000 -0.500000 0.500000  
v -0.500000 0.500000 0.500000  
v 0.500000 0.500000 0.500000  
v -0.500000 0.500000 -0.500000  
v 0.500000 0.500000 -0.500000  
v -0.500000 -0.500000 -0.500000  
v 0.500000 -0.500000 -0.500000  
vt 0.000000 0.000000  
vt 1.000000 0.000000  
vt 0.000000 1.000000  
vt 1.000000 1.000000  
vt 0.000000 2.000000  
vt 1.000000 2.000000  
vt 0.000000 3.000000  
vt 1.000000 3.000000  
vt 0.000000 4.000000  
vt 1.000000 4.000000  
vt 2.000000 0.000000  
vt 2.000000 1.000000  
vt -1.000000 0.000000  
vt -1.000000 1.000000  
vn 0.000000 0.000000 1.000000  
vn 0.000000 0.000000 1.000000  
vn 0.000000 0.000000 1.000000  
vn 0.000000 0.000000 1.000000  
vn 0.000000 1.000000 0.000000  
vn 0.000000 1.000000 0.000000  
vn 0.000000 1.000000 0.000000  
vn 0.000000 1.000000 0.000000  
vn 0.000000 0.000000 -1.000000  
vn 0.000000 0.000000 -1.000000  
vn 0.000000 0.000000 -1.000000  
vn 0.000000 0.000000 -1.000000  
vn 0.000000 -1.000000 0.000000  
vn 0.000000 -1.000000 0.000000  
vn 0.000000 -1.000000 0.000000  
vn 0.000000 -1.000000 0.000000  
vn 1.000000 0.000000 0.000000  
vn 1.000000 0.000000 0.000000  
vn 1.000000 0.000000 0.000000  
vn 1.000000 0.000000 0.000000  
vn -1.000000 0.000000 0.000000  
vn -1.000000 0.000000 0.000000  
vn -1.000000 0.000000 0.000000  
vn -1.000000 0.000000 0.000000  
s off  
g pCube1  
usemtl initialShadingGroup  
f 1/1/1 2/2/2 4/4/3 3/3/4  
f 3/3/5 4/4/6 6/6/7 5/5/8  
f 5/5/9 6/6/10 8/8/11 7/7/12  
f 7/7/13 8/8/14 2/10/15 1/9/16  
f 2/2/17 8/11/18 6/12/19 4/4/20  
f 7/13/21 1/1/22 3/3/23 5/14/24  

mtllib指定材质数据文件;
v顶点坐标数据;
vt顶点纹理坐标数据;
vn顶点法线向量坐标数据;

“s off”表示关闭光滑组;
usemtl 指定使用的材质名称;
f面信息;1/1/1 三个数据分别表示顶点,纹理,法线坐标索引。

材质模板库(MTL)文件格式
在3D计算机图形学中,最为普遍的几何体交换文件格式之一就是OBJ,MTL文件则是其附属文件,用以描述几何体的表面描影属性。
尽管MTL格式被广泛使用,它已经过时,无法完全支持最新技术,诸如镜面贴图和视差贴图。然而,由于格式的开放和直观,不足之处可用定制MTL文件生成器轻易补完。
1 基础材质
单独一个.mtl文件包含多个材质。材质在文件中逐个定义,每一条语句以newmtl起首。
# 定义一个名为 ‘Colored’的材质
newmtl Colored
材质的阴影色(ambient color)用Ka声明。颜色用RGB定义,每条通道的值从0到1之间取。
Ka 1.000 1.000 1.000 # 白色
类似地,固有色(diffuse color)用Kd。
Kd 1.000 1.000 1.000 # 白色
高光色(specular color)用Ks。带权高光色则用高光系数Ns表示。
Ks 0.000 0.000 0.000 # 黑色(即关闭高光)
Ns 10.000 # 范围从0到1000
材质可以是透明的,即是说“溶解的”。与真透明度不同,其结果并不依赖于物体厚度。
d 0.9 # 有些用’d’实现
Tr 0.9 # 其他的用’Tr’
每个材质允许使用多照明模型。枚举如下:
0. 色彩开,阴影色关
1. 色彩开,阴影色开
2. 高光开
3. 反射开,光线追踪开
4. 透明: 玻璃开 反射:光线追踪开
5. 反射:菲涅尔衍射开,光线追踪开
6. 透明:折射开 反射:菲涅尔衍射关,光线追踪开
7. 透明:折射开 反射:菲涅尔衍射开,光线追踪开
8. 反射开,光线追踪关
9. 透明: 玻璃开 反射:光线追踪关
10. 投射阴影于不可见表面
illum 2
2 纹理贴图
带纹理材质使用如上相同的属性,并额外定义纹理贴图。
newmtl Textured
Ka 1.000 1.000 1.000
Kd 1.000 1.000 1.000
Ks 0.000 0.000 0.000
d 1.0
illum 2
map_Ka lenna.tga # 阴影色纹理贴图
map_Kd len

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值