obj格式是WaveFront公司推出的一种3d模型格式,该文件通过点,线,自由参数曲面等信息来描述mesh模型。也算是比较通用的3d交互格式。但是在通过blender, threejs等系统导入此格式时却需要特别注意一个点。那就是对参数曲面的支持问题。
大部分的开源系统是不支持参数曲面的。尤其要注意以下几点:
- 几何体的顶点(v),法线(vt),纹理点(vt)是支持的。
- 空间参数点 (vp) 是不支持的.
- 自由曲线和曲面是不支持的 (cstype, deg, bmat, step, curv, curv2, surf, parm, trim, hole, scrv, sp, end, con).
- 面 (f) 是支持的, 但是,点 (p) 和线 (l) 是不支持的.
- 面的声明必须使用凸多边形,例如三角形和四边形。
- 面的声明用点,必须是顺时针的。
- 分组名称 (g) 是支持的, 但是所有位于g后面的字符会被解析成一个名字.
- call 和 csh 是 不支持的.
- 对象名称 (o) 是 不支持的.
- 第二版本的补丁和曲线是 不支持的 (bsp, bzp, cdc, cdp, res).
- bevel, c_interp, d_interp, lod, shadow_obj, trace_obj, ctech 和 stech 是 不支持的。
- 材质库 (mtllib) 是支持的。
- 材质名称是支持的 (usemtl) ,但仅仅支持ascii编码的名称。
因此,在通过软件导出便于第三方系统解析的obj时,需要对导出的几何类型做一些限制。例如在配置导出曲线选择nurbs还是polyline时,都需要选择polyline。