**:
fbx是autodesk提供的乙個三維模型格式,由於autodesk已經收購了maya,3d max等流行三維建模軟體,fbx可以說是乙個完美通用的格式了。
fbx主要用途是三維場景的交流,所以它單個檔案就描述了整個三維工程,包括攝像機設定,燈光引數,texture,**,動畫,骨骼,關鍵幀資料等。
fbx是乙個閉源的格式,我們並不清楚fbx檔案內部的儲存方式,但是autodesk給出了乙個很好的sdk,可以通過呼叫sdk內部的dll等庫檔案建立/匯出fbx資料。fbx的sdk現在提供c++和python兩種語言支援,支援windows,linux,mac os三大平台。
sdk提供的場景(scene)介面十乙個節點(node)結構:
攝像機,燈光,骨骼(skeleton),網格(mesh)等都是乙個節點,節點還可以有子節點。
[python]view plain
copy
if lattributetype == kfbxnodeattribute.emarker:
displaymarker(pnode)
elif lattributetype == kfbxnodeattribute.eskeleton:
displayskeleton(pnode)
elif lattributetype == kfbxnodeattribute.emesh:
displaymesh(pnode)
elif lattributetype == kfbxnodeattribute.enurb:
displaynurb(pnode)
elif lattributetype == kfbxnodeattribute.epatch:
displaypatch(pnode)
elif lattributetype == kfbxnodeattribute.ecamera:
displaycamera(pnode)
elif lattributetype == kfbxnodeattribute.elight:
displaylight(pnode)
patch,nurb??
nurbs:non-uniform rational b-spline,具有比重控制點和曲線次序和節點集合向量的集。典型例子是貝塞爾曲線,在ps,gimp,autocad等中可以見到,通過節點和角度控制整個曲線。也可以用於描述曲面,與mesh對應,代表兩類不同的實現方法。詳見wiki
重要節點結構:mesh,skeleton
網格(mesh)儲存了模型結構的重要資料,包括頂點座標,顏色,uv(紋理座標),法線(normal)等。
重要概念:layer, control point, vertex, eby_control_point, eby_polygon_vertex, :
layer,層次:法線,紋理座標等是儲存在layer中的,每個模型可以有多個層次,每個層次有一套紋理,法線等。但是,通常我們只會用到乙個層次,很多建模軟體也只支援乙個層次。
法線,紋理,顏色與頂點資料有兩個重要的對應關係,by_control_point就是每個控制點對應乙個法線,紋理資料,而by_polygon_vertex是指每個頂點對應乙個法線,紋理等資料。就是說,由於乙個點可以包含在多個多邊形中,而在不同的多邊形中,其可以有不同的法線,顏色等。
kfbxlayerelement.edirect, kfbxlayerelement.eindex_to_direct引用方式:???
material,texture材質和紋理:只有紋理座標並不能解決紋理問題,由於fbx把紋理貼圖直接儲存在fbx檔案中,而且乙個模型可以用多個紋理貼**件,具體的對應和管理就是個很重要的問題了。
骨骼系統(skeleton):骨骼系統是高階模型動畫的重要方面,就是採用模擬真實事物的方法,提供了骨骼(bone),關節(joint),權重(weight)等概念。骨骼和關節是運動的控制點,移動骨骼,並通過權重資料計算出各個頂點的運動向量,最終把這個運動向量賦予模型,完成運動行為。
骨骼:
fbx:
OpenGL3 3使用Assimp匯入骨骼
我們在每個頂點中新增骨骼陣列 如圖 weight是每個骨骼對該頂點的權重 總共加起來不能超過1 骨骼 id 是存放所有骨骼變換的陣列中的索引,這些變換會在進行 wvp 變換之前作用到位置向量和法線向量上 即將頂點從骨骼空間中變換到區域性座標系中 骨骼樹中的骨骼變換是在骨骼空間中進行的 每個骨骼都有其...
OpenGL系統設計 OpenGL擴充套件
和微軟的direct3d directgraphics相比較,opengl的乙個最大的優點是其擴充套件機制。對於顯示卡硬體的新功能,除非微軟發布了directx的新版本,否則,程式設計師是無法使用的。但opengl就不同了,opengl給硬體廠商和程式設計師提供了擴充套件機制,讓硬體廠商增加基於顯示...
置頂 OpenGL10 骨骼動畫原理篇 2
簡單的例程,這一例程將給展示乙個最初級的人物動畫,具備多細節內容 以人走路為例子,當人走路的從乙個站立開始,到邁出一步,這個過程是 乙個連續的過程,在這個乙個過程中,人身體的骨頭在位置在發生變化,骨頭發生變化以後,人的 肌肉就隨著變化,上乙個例程中我們計算 opengl10 骨骼動畫原理篇 1 計算...