FBX与Opengl骨骼系统

转自:http://blog.csdn.net/mink365/article/details/6328033

 

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)结构:

FBX与Opengl骨骼系统

 

摄像机,灯光,骨骼(skeleton),网格(Mesh)等都是一个节点,节点还可以有子节点。

 

 

[python]  view plain copy
  1. if lAttributeType == KFbxNodeAttribute.eMARKER:  
  2.     DisplayMarker(pNode)  
  3. elif lAttributeType == KFbxNodeAttribute.eSKELETON:  
  4.     DisplaySkeleton(pNode)  
  5. elif lAttributeType == KFbxNodeAttribute.eMESH:  
  6.     DisplayMesh(pNode)  
  7. elif lAttributeType == KFbxNodeAttribute.eNURB:  
  8.     DisplayNurb(pNode)  
  9. elif lAttributeType == KFbxNodeAttribute.ePATCH:  
  10.     DisplayPatch(pNode)  
  11. elif lAttributeType == KFbxNodeAttribute.eCAMERA:  
  12.     DisplayCamera(pNode)  
  13. elif lAttributeType == KFbxNodeAttribute.eLIGHT:  
  14.     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)等概念。骨骼和关节是运动的控制点,移动骨骼,并通过权重数据计算出各个顶点的运动向量,最终把这个运动向量赋予模型,完成运动行为。

 

骨骼:http://gpwiki.org/index.php/OpenGL:Tutorials:Basic_Bones_System

 

FBX:http://www.cnblogs.com/clayman/archive/2010/12/10/1901779.html

 

欢迎关注微信公众号——计算机视觉:

 

你可能感兴趣的:(OpenGL)