**

理解FBX格式中Mesh数据结构**

fbx文件是现在许多建模动画软件和游戏引擎之间共用的模型文件格式。fbx文件分为两种方式从建模软件中导出,一种是二进制文件另一种是ASCII码保存。
ASCII保存的格式右键打开方式选文本可以打开看到里面保存的数据。对于模型网格来说,模型中点坐标、点索引、 点法线、uv 是生成模型的重要参数。在文本中Object properties 能找到这个些数据。
比如打开一个简单正方提模型我们可以看到下面数据:

Vertices的24个值是三维数据集的8个顶点(3个值代表一个顶点三维坐标)。
PolygonVertexIndex 下的36个值是顶点索引(mesh中点的索引)
Normals 的108是12个三角形的每个三角形角的36个法线(3个值代表一个法向量)。
UV 下的24是12个纹理坐标(2个值代表一个纹理坐标对)。
UVIndex 的36是三维数据集的36个三角形角的纹理坐标索引(引用 UV 的值)。

Vertices中数据不难理解,就是这些数据三个一组对应X、Y、Z构成一个三维坐标,所以可以得到正方体的8个顶点坐标。
PolygonVertexIndex 看到这个数据中的大家都会有疑问:
为什么顶点索引数据会有负数?
因为模型为了区分模型网格是三角面还是四边面,如果数据每隔三个为负数则为三角面,每隔四个为四边面。
如何将负数的索引值转成有效索引数据呢?
假如n为负数索引值,m = |n|-1 。m为计算后的正确索引值。

因为normal和uv所计算的值都是对应的点的值:点法线是对应的点的法线,uv是点映射在平面上的坐标值,他们根本都是点的属性。 而 PolygonVertexIndex、Normals和UVIndex的数量都是36,可以猜测Normals 和 UV 是在每个PolygonVertexIndex所映射的点所相应 normal 或者 uv 的值的集合。

**

FBX文件中Mesh数据结构与游戏引擎中Mesh数据结构差异

**

fbx文件中的数据结构与游戏引擎中的模型数据有所不同,如果拿fbx中的数据在unity3d或者UE4的场景中生成模型依然会出现问题。
游戏引擎与fbx数据结构不同:
1.游戏引擎mesh中点索引triangles,都是三角面,三个数据为一组。而fbx中有可能为四边面。
2.游戏引擎中mesh中的normal数量、uv数量与vertices中点数量一致。而fbx中normal数量、uv数量与vertices的点索引数量一致。
想要把fbx导入到游戏引擎中必须解决这些问题。将数据转化后才能在场景中生成正确的模型。

FBX格式mesh解析与加载(一)相关推荐

  1. Html监听Fbx文件加载,FBX格式mesh解析与加载(一)

    FBX格式mesh解析与加载(一) FBX格式mesh解析与加载(一) ** 理解FBX格式中Mesh数据结构** fbx文件是现在许多建模动画软件和游戏引擎之间共用的模型文件格式.fbx文件分为两种 ...

  2. FBX格式mesh解析与加载(二)

    直接上代码: using System; using System.Collections.Generic; using System.Linq; using System.Text; namespa ...

  3. Spring解析,加载及实例化Bean的顺序(零配置)

    点击上方蓝色"方志朋",选择"设为星标"回复"666"获取独家整理的学习资料! 作者:jb_hz blog.csdn.net/qq_2752 ...

  4. 页面加载完毕_【前端面试】dom 的解析,加载,渲染

    本文会把 dom 的解析,加载,渲染结合 window.performance 一起讲. dom 的解析 解析:HTMl 解析器把 HTML 构建成 HTML 树形数据结构,也就是 DOM 树. 注意 ...

  5. 基于FBX SDK的FBX模型解析与加载 -(三)

    6. 加载Camera和Light 在FBX模型中除了几何数据外较为常用的信息可能就是Camera和Light,虽然在游戏中一般不直接从模型中得到这两部分信息,而是由引擎来提供,但是FBX中提供了对这 ...

  6. 深度解析——图片加载到内存中的大小计算内存优化

    本篇文章已授权微信公众号 hongyangAndroid (鸿洋)独家发布 最近封装了个高斯模糊组件,正好将图片相关的理论基础也梳理了下,所以,这次就来讲讲,在 Android 中,怎么计算一张图片在 ...

  7. 详细解析浏览器加载网页的整个过程

    现代浏览器的工作原理 简介 浏览器可以被认为是使用最广泛的软件,本文将介绍浏览器的工 作原理,我们将看到,从你在地址栏输入google.com到你看到google主页过程中都发生了什么. 将讨论的浏览 ...

  8. Glide 4.9源码解析-图片加载流程

    本文Glide源码基于4.9,版本下载地址如下:Glide 4.9 前言 由于Glide源码真的很复杂,因此本文只分析和贴出与图片加载流程相关的功能以及代码.另外本文Glide源码基于4.9,与3.x ...

  9. Android 插件化原理解析——插件加载机制

    上文 Activity生命周期管理 中我们地完成了『启动没有在AndroidManifest.xml中显式声明的Activity』的任务:通过Hook AMS和拦截ActivityThread中H类对 ...

最新文章

  1. 如何避免重构带来的危险
  2. 【PC工具】图片批量添加水印工具,绿色免安装工具软件
  3. 对flex深入研究一点
  4. sqlalchemy_SQLAlchemy使ETL变得异常简单
  5. 实验3-9 三天打鱼两天晒网 (15 分)
  6. qml自定义控件:简易的带图标按钮
  7. PHP控制连接打印机
  8. vue生命周期学习(watch跟computed)
  9. 小水智能-智能楼宇智慧建筑3d可视化,让钢铁水泥也可以沟通交流
  10. (HG模块,简洁明了)Hourglass Module介绍
  11. 你应该知道的 89 个操作系统核心概念
  12. mvn install BUILD FAILURE : Downloading from central: https://repo.maven.apache.org/maven2/org/sp...
  13. unity瓦片地图调整图片大小
  14. SHT30温湿度模块使用
  15. 向量或矩阵的微分计算
  16. synaptics linux驱动程序,Synaptics
  17. 稳稳压二极管原理及主要参数
  18. 如何确定抽样统计的最小样本量(附:随机抽样统计的抽样误差Excel计算表格)...
  19. 【教程】kiftd 为账户设置上传文件的最大体积限制
  20. Vue路由动态渲染和动态传参

热门文章

  1. 新媒体大数据在线课堂第一讲《危机事件中的舆论引导》课堂笔记
  2. 计算机网络联网方法实验报告,计算机网络实验报告报告方案.doc
  3. 稳定wow60级服务器,魔兽世界怀旧服:永久60级服务器可能人多还是人少?玩家吵开了!...
  4. python儿童宣传-天津少儿python编程
  5. 计算机求职信英语作文80字,求职信英语作文(共8篇)
  6. Linux(ubunto)安装flash教程
  7. access数据库拆分的用途_手动拆分 Access 数据库 | Microsoft Docs
  8. 自然语言处理与深度学习: 集智俱乐部活动笔记
  9. 汽车行业能长出新“贝壳”吗?
  10. 药学薛定谔专题干货总结