FBX与Opengl骨骼系统

2023-10-27

转自: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 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

 

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

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

FBX与Opengl骨骼系统 的相关文章

  • Pycharm 在 os.path 连接上出现“未解析的引用”

    将pycharm升级到2018 1 并将python升级到3 6 5后 pycharm报告 未解析的引用 join 最新版本的 pycharm 不会显示以下行的任何警告 from os path import join expanduser
  • 覆盖控制器 Symfony 3.4/4.0

    我目前正在尝试覆盖 FOSUserBundle 中的控制器 在新的文档中 https symfony com doc 3 4 bundles override html https symfony com doc 3 4 bundles o
  • MongoEngine 查询具有以列表中指定的前缀开头的属性的对象的列表

    我需要在 Mongo 数据库中查询具有以列表中任何前缀开头的特定属性的元素 现在我有一段这样的代码 query mymodel terms term in query terms 并且这会匹配在列表 term 上有一个项目的对象 该列表中的
  • jQuery Mobile 表单验证

    我有一个移动网站 除了验证之外一切都工作正常 基本上我希望从用户那里获取值 然后在单独的页面 process php 上处理它们 但是 在这样做之前 我需要检查以确保字段已填充 我已经研究了几种方法来做到这一点 但似乎没有一种有效 我现在有
  • 从 Powershell 脚本安装 Python

    当以管理员身份从 PowerShell 命令行运行以下命令时 可以在 Windows 11 上成功安装 Python c temp python 3 11 4 amd64 exe quiet InstallAllUsers 0 Instal
  • 使用 Ajax.Request 将 JSON 从浏览器传递到 PHP 的最佳方法

    您好 我有一个 JSON 对象 它是一个二维数组 我需要使用 Ajax Request 将其传递给 PHP 我知道的唯一方法 现在我使用js函数手动序列化我的数组 并获取以下格式的数据 s 1 d 3 4等 我的问题是 有没有办法更直接 有
  • 跟踪用户何时点击浏览器上的后退按钮

    是否可以检测用户何时单击浏览器的后退按钮 我有一个 Ajax 应用程序 如果我可以检测到用户何时单击后退按钮 我可以显示适当的数据 任何使用 PHP JavaScript 的解决方案都是优选的 任何语言的解决方案都可以 只需要我可以翻译成
  • 表单计算器脚本基本价格未加载 OnLoad

    我的表单中有一个计算器来计算我的下拉选项选择 function select calculate on change calc input type checkbox calculate on click calc function cal
  • 表单提交后如何保留选择字段中的选定值?

    我有一个用于将票证上传到数据库的主页 我有一个选择字段 我想保留用户在提交表单之前选择的值 但它没有发生 这是我选择字段的代码
  • 无法导入 langchain.agents.load_tools

    我正在尝试使用 LangChain Agents 但无法导入 load tools 版本 langchain 0 0 27 我尝试过这些 from langchain agents import initialize agent from
  • pandas - 包含时间序列数据的堆积条形图

    我正在尝试使用时间序列数据在 pandas 中创建堆积条形图 DATE TYPE VOL 0 2010 01 01 Heavy 932 612903 1 2010 01 01 Light 370 612903 2 2010 01 01 Me
  • 如何使用 Python 3 检查目录是否包含文件

    我到处寻找这个答案但找不到 我正在尝试编写一个脚本来搜索特定的子文件夹 然后检查它是否包含任何文件 如果包含 则写出该文件夹的路径 我已经弄清楚了子文件夹搜索部分 但检查文件却难倒了我 我发现了有关如何检查文件夹是否为空的多个建议 并且我尝
  • Protobuf 如何编码 oneof 消息结构

    对于这个 python 程序 在编码时运行 protobuf 编码会给出以下输出 0a 10 08 7f8a 0104 08 02 10 0392 0104 08 02 10 03 18 01 我不明白的是为什么8a后面有一个01 为什么9
  • 如何使用 AWS Lambda Python 读取 AWS S3 存储的 Word 文档(.doc 和 .docx)文件内容?

    我的场景是 我尝试使用 python 实现从 Aws Lambda 读取 AWS 存储的 S3 word 文档 doc 和 docx 文件内容 下面的代码是我使用的 我的问题是我可以获取文件名 但无法读取内容 def lambda hand
  • 如何以正确的方式为独立的Python应用程序制作setup.py?

    我读过几个类似的主题 但还没有成功 我觉得我错过或误解了一些基本的事情 这就是我失败的原因 我有一个用 python 编写的 应用程序 我想在标准 setup py 的帮助下进行部署 由于功能复杂 它由不同的 python 模块组成 但单独
  • 内部 while 循环不工作

    这是我项目网页上的代码片段 这里我想显示用户选择的类别 然后想显示属于该类别的主题 在那里 用户可以拥有多个类别 这没有问题 我可以在第一个 while 循环中打印所有这些类别 问题是当我尝试打印主题时 结果只显示一行 但每个类别中有更多主
  • 如何在 Flask 中的视图函数/会话之间传递复杂对象

    我正在编写一个 Web 应用程序 当 且仅当 用户登录时 该应用程序从第三方服务器接收大量数据 这些数据被解析为自定义对象并存储在list 现在 用户在应用程序中使用这些数据 调用不同的视图 例如发送不同的请求 我不确定什么是最好的模式在视
  • 如何将Python3设置为Mac上的默认Python版本?

    有没有办法将 Python 3 8 3 设置为 macOS Catalina 版本 10 15 2 上的默认 Python 版本 我已经完成的步骤 看看它安装在哪里 ls l usr local bin python 我得到的输出是这样的
  • 对具有混合类型值的数组进行数字排序

    我有一个像这样的混合数组 fruits array lemon Lemon 20 banana apple 121 40 50 然后申请sort 其功能如下 sort fruits SORT NUMERIC foreach fruits a
  • 无法显示 Laravel 欢迎页面

    我的服务器位于 DigitalOcean 云上 我正在使用 Ubuntu 和 Apache Web 服务器 我的家用计算机运行的是 Windows 7 我使用 putty 作为终端 遵循所有指示https laracasts com ser

随机推荐

  • AI“看片儿”比人快,鉴黄师却说不靠谱?

    本文转载自钛媒体 一直以来 鉴黄师 被认为是一种神秘且高薪的职业 很多普通人都对这个职业充满了好奇 甚至有人想做个兼职 以为轻轻松松就能赚钱 但这个职业真的是 钱多事少 吗 事实上 鉴黄师 是自20世纪80年代起 公安部应 扫黄打非 需求而
  • java总结之基础类型与常量池

    1 基础类型有byte short int long char boolean float double八种 其中byte short int long char 的包装类型是存放在常量池 用来维护该类型所用到常量的有序集合 中的 浮点类型
  • IT6302 电源后面板的 DB9 接口输出为 TTL 电平,您需要通过附件电平转换后才可连接到 PC 机的串口上

    IT6302 电源后面板的 DB9 接口输出为 TTL 电平 您需要通过附件电平转换后才可连接到 PC机的串口上 该DB9接口的接口定义为 1 VCC 5V 由IT6302输出 2 RX 5V TTL电平 3 TX 5V TTL电平 5 G
  • html5超酷苹果风格,CSS3 苹果应用商店风格的5星评价组件

    CSS 语言 CSSSCSS 确定 body background 000 review holder position relative clear both display inline block left calc 50 50px
  • 刷题-leetcode-字节跳动高频题

    字节跳动研发岗高频考题之链表 lt 持续更新 7月8日 gt 链表 0 单链表的增删查改 1 反转链表 206 2 相交链表 160 3 环形链表II 142题 4 合并两个有序链表 5 合并K个排序链表 5 回文链表 6 环形链表 7 环
  • 如何设计一个安全的对外接口

    来源 juejin im post 5dd5283af265da47a11f5578 1 前言 最近有个项目需要对外提供一个接口 提供公网域名进行访问 而且接口和交易订单有关 所以安全性很重要 这里整理了一下常用的一些安全措施以及具体如何去
  • blender05乐高中级版

    1 新建一个2 4的平面 2 点击环切 将平面切割为两个平面 3 选中两个面 按下I内部挤压 变成下面的样子 但其实这样不对 x和y的距离不一样长 所以要回到物体模式 点击应用 点击缩放 将x y z的缩放比例都设置为1 4 继续环切 成下
  • IAR使用之破解

    http www amobbs com thread 5526625 1 1 html 对于学习AVR单片机的人来说 IAR是必不可少的开发软件 IAR以编译效率高著称 相比AVR STUDIO 6 0 它有小巧的体型 这点对于电脑配置不是
  • 大数据是什么意思

    在大数据的越来越火的今天 相信很多朋友都不清楚大数据到底是什么 可以解决实际生活中的什么问题 那么今天科多大数据老师就给各位小伙伴儿普及下大数据的概念吧 大数据到底是什么勒 大数据 是一个体量特别大 数据类别特别大的数据集 并且这样的数据集
  • 请用 python 打印出 10000 以内的对称数 (对称数特点:数字左右对称,如:1,2,11,121,1221 等)

    就用正序等于倒序的办法就可解决 lis for i in range 1 10000 i str i if i i 1 lis append i print lis ps 这个面试题在这么大的网站中找起来居然这么费劲 不是收费就是广告
  • 【硬创邦】跟hoowa学做智能路由(二):从芯片开始

    上一章我们讲了 这次DIY活动的来龙去脉 本章我们将一起了解下路由器的架构 芯片 操作系统相关的知识 我们的目标是让大家都能做智能路由 所以hoowa会尽可能少涉及到嵌入式的知识 因为这孩子本身学习就不好 他自己也害怕那些所谓的各种 定义
  • delphi xe10.2 FIREDAC 三种连接

    以下都是在DELPHI XE10 2中测试通过 FireDAC supports three distinct options for connecting to your database These are Temporary conn
  • 越狱iOS设备利用itms-services协议,实现Safari一键安装IPA

    http kryhear asia blog 2012 07 14 use itms services install ipa to a jailbreak ios device 利用MobileInstallation实现IPA程序安装后
  • Python 3.8 pandas 安装不了

    如果您在安装 Pandas 时遇到了问题 有以下几种常见解决方案 检查您的 Python 版本是否为 3 8 Pandas 对于 Python 3 8 的支持可能不是很好 因此您可以尝试安装旧版本的 Pandas 检查您是否安装了所有 Pa
  • C语言这么厉害,它自身又是用什么语言写的?

    作者 码农翻身刘欣 出自 码农翻身 ID coderising 这是来自我的星球的一个提问 C语言本身用什么语言写的 换个角度来问 其实是 C语言在运行之前 得编译才行 那C语言的编译器从哪里来 用什么语言来写的 如果是用C语言本身来写的
  • opencv中图像的旋转

    opencv中进行图像旋转的方法 flip函数 rotate函数但是这两种函数只能进行90 180 270的旋转 CV EXPORTS W void flip InputArray src OutputArray dst int flipC
  • 《数据挖掘导论》笔记(四)

    分类 本章介绍分类的基本概念 讨论诸如模型的过拟合等关键问题 并提供评估和比较分类技术性能的方法 尽管本章主要关注一种称作决策树归纳的技术 但是本章讨论的大部分内容也适用于其他的分类技术 预备知识 分类任务的输入数据是记录的集合 每条记录称
  • SQL查询半年内没有违纪记录,并且期末考试总分为每个班级前10名的学生名单。(日期函数、where、group by)

    面试题 有三张表 学生表 期末成绩表 违纪表 查询半年内没有违纪记录 并且期末考试总分为每个班级前10名的学生名单 解题思路 可以把这个复杂业务问题 使用多维度拆解分析方法 拆解为以下3个子问题 1 从 违纪表 中查询半年内有违纪记录的学生
  • MMClassification Python 教程(二)

    若纠结查看格式可以移步 学习笔记https study chenkequan cn E6 B7 B1 E5 BA A6 E5 AD A6 E4 B9 A0 E6 A1 86 E6 9E B6 openLab E7 B3 BB E5 88 9
  • FBX与Opengl骨骼系统

    转自 http blog csdn net mink365 article details 6328033 FBX是Autodesk提供的一个三维模型格式 由于AutoDesk已经收购了Maya 3D max等流行三维建模软件 FBX可以说