threejs,blender等一系列开源系统对obj,mtl格式文件的支持问题

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。

发表评论

邮箱地址不会被公开。 必填项已用*标注