典型應用:
軟件:
(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