典型应用:
软件:
(1)Advanced Visualizer(Wavefront)
(2)Poser
其他应用:
所有dcc/cad/cam都支持该格式
问题提出:
3D软件模型之间的互导时出现的错误,比如如果Maya自身的模型出错,也可以先转成OBJ格式,修改之后
再导回Maya。
################----OBJ文件 -- 概念----#######################
OBJ文件有2种基本格式:
ASCII格式(.obj)。
binary格式(.mod),该专利尚未公开.
文档版本:v2.11\v3.0。
#############----OBJ文件 -- 特点----#######################
(1)OBJ是一种3D模型文件,支持法线和贴图坐标,但是不包含动画、动力学、粒子等信息。
(2)OBJ3.0格式支持多边形(Polygon),直线(Lines),表面(Surfaces),和5种自由形态曲线(Free-form
Curves)。包括那些基于Bezier\B-spline\Cardinal\Taylor equations曲线。
注意:
各三维软件由于多方面原因,对obj格式的容纳能力不尽相同,比如Maya导出的OBJ文件只支持多边形。
(3)OBJ文件支持三角面。
很多其它的模型文件格式只支持三角面,所以我们导入Maya的模型经常被三角化了,这对于我们对模型
的再加工甚为不利。
################----基本结构 File structure----#####################
Syntax | Specifying | |
顶点数据(Vertex data) | v(v x y z w) | Geometric vertices |
vt(u v w) | Texture vertices | |
vn(i j k) | Vertex normals | |
vp(u v w) | curve/surface attributes (Parameter space vertices) | |
自由形态曲线(Free-form curve)/表面属性(surface attributes) | deg(degu degv) | Degree |
bmat(u matrix) (v matrix) | Basis matrix | |
step(stepu stepv) | Step size | |
cstype | Curve or surface type | |
元素(Elements) | p(v1 v2 v3 ……) | -Point |
l (v1/vt1 v2/vt2 v3/vt3 ……) | -Line | |
f (v1/vt1/vn1 v2/vt2/vn2 v3/vt3/vn3 ……) | Face | |
curv(u0 u1 v1 v2 ……) | Curve | |
curv2 (vp1 vp2 vp3……) | 2D curve | |
surf(s0 s1 t0 t1 v1/vt1/vn1 v2/vt2/vn2……) | Surface | |
自由形态曲线(Free-form curve)/表面主体陈述(surface body statements) | parm (u p1 p2 p3……) (v p1 p2 p3……) | Parameter values |
trim(u0 u1 curv2d u0 u1 curv2d ……) | Outer trimming loop | |
hole(u0 u1 curv2d u0 u1 curv2d …… ) | Inner trimming loop | |
scrv(u0 u1 curv2d u0 u1 curv2d……) | Special curve | |
sp( vp1 vp……) | special point | |
end | End statement | |
自由形态表面之间的连接(Connectivity between free-form surfaces) | con(surf_1 q0_1 q1_1 curv2d_1 surf_2 q0_2 q1_2 curv2d_2) | Connect |
成组(Grouping) | g(group_name1 group_name2 ……) | Group name |
s(group_number) | Smoothing group | |
mg(group_number res) | Merging group | |
o(object_name) | object name | |
显示(Display)/渲染属性(render attributes) | bevel(on/off) | Bevel interpolation |
c_interp(on/off) | Color interpolation | |
d_interp(on/off) | issolve interpolation | |
lod(level) | Level of detail | |
maplib(filename1 filename2……) | ||
usemap(map_name/off) | ||
usemtl( material_name) | Material name | |
mtllib(filename1 filename2 ……) | Material library | |
shadow_obj(filename) | Shadow casting | |
trace_obj(filename) | Ray tracing | |
ctech(cparm res) (cspace maxlength) (curv maxdist maxangle) | Curve approximation technique | |
stech(cparma ures vres) (cparmb uvres) (cspace maxlength) (curv maxdist maxangle ) | Surface approximation technique |
OBJ文件不包含面的颜色定义信息,不过可以引用材质库,材质库信息储存在一个后缀是".mtl"的独立文件中。关键字"mtllib"即材质库的意思。
材质库中包含材质的漫射(diffuse),环境(ambient),光泽(specular)的RGB(红绿蓝)的定义值,以及反射(specularity),折射(refraction),透明度(transparency)等其它特征。
-------------------****基本结构*****-------------------------------
###########################################################
最优秀的模型格式01----DAE
最优秀的模型格式02----FBX
maya读取dae/fbx,可能需要自己安装插件!!
maya导入(import)obj等等模型后,可能需要做几个工作:
(1)cleanup清除重叠面
polygons>cleanup>lamina faces。
(2)qudrangulate 转为4边面
polygons>qudrangulate
(3)translation 调整大小等
(4)重新指定贴图
maya有一个bug,没有赋予材质的mtl文件不能正确读取,但是如果该mtl文件被正确的赋予了材质的话,就可以正确读取了
参考文献:
(1)http://www.martinreddy.net/gfx/3d/OBJ.spec
(2)http://en.wikipedia.org/wiki/Obj
(3)http://www.alias.com/eng/index.shtml, The Alias web site.
(4)http://people.sc.fsu.edu/~burkardt/data/obj/obj.html