`

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

 

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

 

 

[python] view plaincopy
  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 3D骨骼动画模型读取绘制Demo(基于Assimp)

    看别人的代码 Demo去学习,...我想这应该是最简单的一个3D骨骼动画模型的读取和显示的Demo。其中注释了几个比较关键的地方。包含了几个简单的md5模型,blender模型,blender MD5导出插件。VB.net + OpenTK + Assimp.net

    FBX-Loader-OpenGL-C-:使用 glut lib 和 fbx SDK 加载带有动画(opengl c++)的 3D 模型 FBX 文件。

    在本项目中,我们主要探讨如何使用OpenGL与C++结合FBX SDK来加载并渲染具有动画效果的3D模型FBX文件。OpenGL是一种强大的图形库,广泛用于2D和3D图形应用程序,而FBX(Filmbox)是Autodesk开发的一种文件格式,用于...

    基于Qt开发的C++程序。利用assimp读取gltf/fbx等文件,并显示

    综上所述,这个项目涉及到了使用Qt进行UI开发,通过Assimp库处理3D模型文件,利用OpenGL进行图形渲染,支持gltf和fbx两种常见模型格式,并且在Windows环境下使用Visual Studio 2013进行开发。通过这样的程序,开发者...

    Qt使用assimp加载fbx动画,assimp 3.3.1、Qt 5.6.1、Mingw4.9.2

    在Win0系统下,使用Mingw4.9.2编译器时,可能会遇到与Windows API的兼容性问题。确保你的代码遵循了跨平台编程的原则,并正确处理任何特定于平台的依赖。 总结一下,要在Qt中使用Assimp加载和播放FBX动画,你需要:...

    fbx:用于读取和写入FBX文件的C ++库

    FBX文件能够包含几何数据、材质、纹理、骨骼动画、相机、灯光等丰富的3D内容,使得跨平台的项目协作变得更为便捷。 标题提及的“fbx”是一个C++库,专门用于读取和写入FBX文件。这个库提供了API接口,开发者可以...

    3D-fbx3d.zip

    下面我们将详细探讨FBX格式、3D建模以及与之相关的技术。 FBX是由Autodesk开发的一种跨平台的3D模型交换格式,它可以存储包括几何数据、纹理、骨骼动画、材质和摄像机设置在内的多种信息。这种格式的广泛支持使得...

    OPENGL可一走动的人

    7. **动画与运动**:为了让人物能够行走,需要设计一套动画系统。这可能包括关键帧动画或骨骼绑定动画。开发者需要理解如何随着时间更新模型的状态,使其看起来在移动。 8. **输入处理**:用户通过键盘、鼠标或游戏...

    assimp-Cpp-OpenGL-骨骼动画:assimp C ++ OpenGL骨骼动画visual studio 2015项目

    4. **骨骼动画**:骨骼动画是一种在3D模型上应用的动画技术,通过将模型的各个部分与虚拟骨骼关联,然后改变骨骼的位置和旋转来驱动模型的运动。在Assimp中,骨骼信息包含在模型的骨骼节点和动画数据中。你需要学习...

    obj转osgb fbx转osgb dae转osgb

    FBX支持复杂的几何结构、材质、纹理、骨骼动画等,常用于游戏开发和电影制作中的跨平台数据交换。 3. DAE(Collada)格式:由Khronos Group维护,是一种XML基的开放标准,用于数字内容创作工具之间的互操作性。DAE...

    Light3D - SkinMesh CPU.rar

    《Light3D - SkinMesh CPU:使用openGLES实现骨骼动画与fbx模型转换详解》 在3D图形渲染领域,openGLES(OpenGL for Embedded Systems)是一种广泛应用于移动设备和嵌入式系统的图形库,它允许开发者创建复杂的3D...

    OpenglRipper v1.0.1.zip

    它会分析游戏内存中的OpenGL调用,解析模型数据,将其保存为常见的3D模型格式,如OBJ、FBX或 COLLADA,便于后续编辑和使用。 游戏资源通常包含3D模型、贴图、动画、光照信息等。3D模型由多边形面构成,每个面由多个...

    Opengl写的3d人物模型

    OpenGL是一种强大的图形库,用于在各种操作系统和硬件平台上创建2D和3D图形。这个“Opengl写的3d人物模型”项目显然利用了OpenGL的功能来构建一个能够行走、旋转并且支持纹理贴图的三维人物模型。下面将详细介绍相关...

    abc.rar_ABC_opengl vc_vc opengl_人体_人体建模

    OpenGL是计算机图形学中的一个重要库,它用于在各种操作系统和硬件平台上创建2D和3D图形。"abc.rar_ABC_opengl_vc_vc opengl_人体_人体建模"这个压缩包文件,显然包含了与使用OpenGL在Visual C++ 6.0环境下进行人体...

    OpenGL游戏程序设计(代码)

    在“OpenGL游戏程序设计(代码)”这个资源中,我们可以预见到一系列与使用OpenGL进行游戏开发相关的代码示例和教程。这些章节涵盖了从基础到高级的游戏编程概念。 在压缩包中的章节文件名中,我们看到有`chapter01`...

    Assignment2_v1.zip_OPenGL 鍏夌収_OpenGL 光照模型_opengl_opengl 光照_openg

    OpenGL是计算机图形学中广泛使用的应用编程接口(API),它允许程序员在各种操作系统上创建复杂的3D图形。本文将深入探讨OpenGL中的光照模型及其在导入3D模型时的应用。 首先,OpenGL光照模型是用于模拟真实世界中...

    bianxingjingang.rar_OLDMETAL.J_TRANSFORMERS_opengl_opengl deform

    5. **骨骼动画(Skeletal Animation)**:变形金刚的变形效果可能通过骨骼和权重系统来实现,每个关节对应一个骨骼,通过改变骨骼的位置和角度实现形变。 6. **帧缓冲对象(Frame Buffer Objects, FBOs)**:如果...

    minGW opengl bone

    1. **模型加载与骨骼结构**:首先,你需要加载3D模型,如OBJ、FBX或 Collada 格式,这些格式通常包含骨骼信息。模型的每个顶点可以被多个骨骼影响,权重分配决定了顶点如何随骨骼移动。 2. **矩阵变换**:每个骨骼...

    BoneAnimationOpenGL_flash_quit_20210820.rar

    OpenGL骨骼动画是计算机图形学中的一个复杂主题,用于在3D场景中使角色或对象表现得生动自然。在这个“BoneAnimationOpenGL_flash_quit_20210820.rar”项目中,开发者采用OpenGL库来实现骨骼动画,而不是依赖于像FBX...

    小程序源码 opengl小怪兽3D源码.zip

    7. **动画系统**:3D小怪兽的动态效果可能通过骨骼动画实现,每个关节对应一个骨骼,通过改变骨骼的旋转和位置来驱动模型的运动。源码中可能包含关键帧动画系统,或者使用更高级的插值算法来平滑过渡。 8. **用户...

    骨骼动画头文件.zip

    在IT行业中,骨骼动画是一种广泛应用于游戏开发、3D建模和虚拟现实等...这些文件共同构成了一个完整的骨骼动画系统,使得3D模型能够在各种场景中栩栩如生地运动。理解并掌握这些概念对于3D图形编程和游戏开发至关重要。

Global site tag (gtag.js) - Google Analytics