Unity保存加载obj

在Unity中动态保存加载.obj文件,分为两个部分,保存文件和加载文件,不过再次之前需要对.obj文件简单了解下

关于obj文件

obj文件

它是3D模型的文件格式,适用于3D模型之间的互导。可以直接用记事本打开查看编辑修改,它支持多边形模型,支持法线贴图坐标,
但是并不记录动画等其他信息。关于材质它有相关的关联文件.mtl。它没有头文件,是由一些关键字、空格和文本字符组成的。

#表示注释行

这是注释

mtllib表示关联的材质文件名称
mtllib untitled.mtl
usemtl表示从当前行开始到下一个usemtl之间都是用对应的材质,关键词后面跟的是材质名称
usemtl material
v即vertex,表示顶点坐标,一般有三个值,以空格分割
v 1.0 0.0 1.0
vn即vertex normal,表示法线,有三个值
vn 1.0 0.0 1.0
vt即vertex texture,表示纹理坐标也就是UV,有两个值
vt 0.0 1.0
f即face,是真正描述面的关键字,下面显示的是一个三角面,2 1 4表示三个顶点索引,1 2 3表示UV索引,1 1 1表示法线索引
f 2/1/1 1/2/1 4/3/1
上面这些信息就够用了,还有其他的关键词,在此不做详细解释。

注意事项

在Unity中采用的是左手坐标系,大多数3D软件采用的是右手坐标系,所以在保存顶点坐标、法线坐标、面索引的时候,要做从左手坐标系转到右手坐标系。
可以对顶点坐标、法线坐标的X*-1,然后,面索引顺序由0 1 2改成1 0 2 。同样在加载的时候也要进行相应的处理。

保存obj

http://www.manew.com/3827.html

加载obj

https://github.com/hammmm/unity-obj-loader/tree/master/OBJ/src

上面这两个案例可能有问题,需要参照注意事项进行修改