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)等都是一个节点,节点还可以有子节点。
- 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)等概念。骨骼和关节是运动的控制点,移动骨骼,并通过权重数据计算出各个顶点的运动向量,最终把这个运动向量赋予模型,完成运动行为。
骨骼:http://gpwiki.org/index.php/OpenGL:Tutorials:Basic_Bones_System
FBX:http://www.cnblogs.com/clayman/archive/2010/12/10/1901779.html
欢迎关注微信公众号——计算机视觉:
FBX与Opengl骨骼系统相关推荐
- opengl加载显示3D模型FBX类型文件)
opengl加载显示3D模型FBX类型文件 前置条件 注意事项 项目展示 项目完整C++源代码 前置条件 opengl三方库freeglut,显示FBX格式的三维模型文件 注意事项 源代码 model ...
- openGL使用assimp加载fbx格式三维模型
前言 前面的文章中有讲过assimp加载obj三维文档格式,如果想要加入纹理还得配合对应的mtl格式和png格式才能加入纹理,今天来说下使用assimp加载fbx格式的三维模型. 先看下运行效果 使用 ...
- FBX格式解析顶点信息和用OpenGL显示
FbxSDK是解析FBX的工具,在unity和ue中使用较多,下面介绍一下用这个工具解析FBX格式并用OpenGL显示出来. FBX的scene是由一系列node组成的,node包含一个Transfr ...
- 用Opengl实现骨骼系统
原文链接 有空会翻译,先保存 转载于:https://www.cnblogs.com/gentlecoding/archive/2013/03/10/3589400.html
- All about OpenGL ES 2.x – (part 2/3)(转载)
来源: http://db-in.com/blog/2011/02/all-about-opengl-es-2-x-part-23/ Very welcome back, my friends! No ...
- maya导入abc动画_三维文件格式知多少 | abc、glTF、fbx、obj、dae、stl、3ds...
三维文件格式 三维软件之间互相导入导出一般会涉及到一些格式不兼容的问题,这里就给大家普及一下这些常用的三维文件格式.不同的格式有着不同的定位及用处,有开源的也有商业的.目前很多三维软件之间互导迫在眉睫 ...
- OpenGL OBJ模型加载.
在我们前面绘制一个屋,我们可以看到,需要每个立方体一个一个的自己来推并且还要处理位置信息.代码量大并且要时间.现在我们通过加载模型文件的方法来生成模型文件,比较流行的3D模型文件有OBJ,FBX,da ...
- 3dmax坐标系与导出fbx的坐标系
3dmax和opengl都是右手坐标系,但是3dmax是z轴向上,而opengl中是Y轴向上.如图: 所以在3dmax的fbx导出对话框中有"轴转化"一项,可以设置"Y向 ...
- OpenGL实用开源代码列表
有了网络的最大好处就是可以资源共享.网络是最大的知识库,也是最好的老师,正所谓"没有你想不到的,只有你找不到的".以下是我收集的以游戏编程,OpenGL 3D编程相关的免费扩展库资 ...
最新文章
- 在Kubernetes集群上部署高可用Harbor镜像仓库
- NYOJ 题目68 三点顺序
- 经典C语言程序100例之二二
- poll()函数详解
- java查看日志命令_[Java教程]【Linux】linux查看日志文件内容命令tail、cat、tac、head、echo...
- jquerymobile 基础教程
- 设计模式之单例模式介绍
- python输入正整数n、求n以内能被17整除的最大正整数_求100之内自然数中最大的能被17整除的数资料...
- 【linux高级程序设计】(第十一章)System V进程间通信 1
- Sitecore开发 IP地理定位服务入门
- sketchup(草图大师)-倒圆角-避免破面现象
- matlab怎样批量裁剪图片大小,wps 批量调整图片大小 宏
- Windows 8.1 安装Ruby on Rails手记
- 银河麒麟桌面V10SP1安装nosqlbooster 可视化工具
- java什么是reference_如何理解java中的Reference和引用类型?正确的案例讲解
- ARM SMMU介绍
- w7计算机管理器怎么打开,windows7系统任务管理器怎么打开?快捷键是什么?
- 手写表单及h5表单验证举例
- 日系赛璐璐鼻子上色教程,干货满满!
- Mac开发利器之程序员编辑器MacVim学习总结