FBX格式mesh解析与加载(一)

FBX格式mesh解析与加载(一)

**

理解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解析与加载(一)相关教程

Html监听Fbx文件加载,FBX格式mesh解析与加载(一)相关推荐

  1. FBX格式mesh解析与加载(一)

    ** 理解FBX格式中Mesh数据结构** fbx文件是现在许多建模动画软件和游戏引擎之间共用的模型文件格式.fbx文件分为两种方式从建模软件中导出,一种是二进制文件另一种是ASCII码保存. ASC ...

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

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

  3. 使用Epoll 能监听普通文件吗?

    epoll 是 Linux 系统中常用的多路复用 I/O 组件,一般用于监听 socket 是否能够进行 I/O 操作.那么,epoll 能监听普通文件吗? epoll 是 Linux 系统中常用的多 ...

  4. 玩转oracle 11g(24):数据文件设置自扩展和监听日志文件过大处理

    10. 数据文件为打开自动扩展 select * from dba_data_files; 查询结果: AUTOEXTENSIBLE MAXBYTES MAXBLOCKS INCREMENT_BY N ...

  5. linux+默认监听+目录,C# 时时监听目录文件改动

    C# 时时监听目录文件改动: public static class DirectoryListen { public static string CountListXmlPath = CountCo ...

  6. oracle11g日志分析,Oracle11g在Windows环境下监听日志文件达到4G问题解决方案

    1.症状表现:应用无法启动,数据库连接异常缓慢,或直接超时,无法连接. 2.病情分析:监听日志文件listener.log中记录着监听连接的各种信息,并不断增长,最终达到4G. 3.解决方案一:治标, ...

  7. Linux网络编程(六)-高并发服务器03-I/O多路复用03:epoll【红黑树;根节点为监听节点】【无宏FD_SETSIZE限制;不需每次都将要监听的文件描述符从应用层拷贝到内核;不需遍历树】

    一.epoll概述 epoll的本质是一个[红黑树].监听结点为根节点. 大量并发,少量活跃效率高. epoll是Linux下多路复用IO接口select/poll的增强版本,它能显著提高程序在大量并 ...

  8. PCL入门系列 —— 加载ply格式mesh模型、点云数据并作可视化展示

    PCL入门系列 -- 加载ply格式mesh模型.点云数据并作可视化展示 前言 程序说明 输出结果 代码示例 总结 前言 随着工业自动化.智能化的不断推进,机器视觉(2D/3D)在工业领域的应用和重要 ...

  9. php 监控文件夹变化,swoole 开发中监听目录文件变化, 自动重启项目

    在使用swoole的项目中, 在开发时, 会经常改动代码并查看效果, 由于swoole项目是常驻内存的, 代码改动后并不会影响已经在运行中并加载过该代码的程序, 所以需要重启项目. 为了在改动代码之后 ...

最新文章

  1. 为什么你的提问没人解答?
  2. 【Linux】一步一步学Linux——split命令(59)
  3. mysql错误码1709_MySQL5.6出现ERROR 1709 (HY000): Index column size too large问题的解决方法...
  4. 机械制图中外螺纹的画法_机械制图基础知识之图样简化画法
  5. 用sfc命令修复Windows7的系统文件
  6. 使用脚本将域账号添加到客户机的本地管理员组
  7. gVim 64位 Windows 7 安装过程 (使用spf13配置)
  8. 不等双11,立减¥3554!戴尔官网撩客服砍价带走高性能电脑,速来!
  9. Python 从入门到放弃(一)
  10. web.xml学习随笔
  11. Python获取QQ音乐某个歌手的歌单。
  12. html表白earth,浪漫表白的英文句子大全
  13. SpringBoot + Vue前后端分离开发:全局异常处理及统一结果封装
  14. 信托专替卖家刷淘宝信用 制造虚假交易赚人
  15. SitePoint播客#65:是否拥有IE6?
  16. X86机器安装麒麟UOS双系统
  17. vb计算机程序用到的知识点,2020年全国计算机二级VB复习知识点:程序的保存和装入...
  18. https实现原理(SSL认证过程)
  19. 适配 iPhone X 之异形屏
  20. turbolinux mysql 5.0 cluste,PostgreSQL存在多个安全漏洞

热门文章

  1. 数据指标 VS 标签体系,到底有啥区别?
  2. IBMMQ linux版安装(五)
  3. 电脑能上qq,浏览器不能联网
  4. 【笨嘴拙舌WINDOWS】消息机制
  5. KNIGHT修改怪物暴率
  6. Fabric 1.0源代码分析(40) Proposal(提案)
  7. 3星|《工作是最好的修行》:樊登读书会节目文稿,14篇读书笔记
  8. ca证书 csr_ca证书csr crt cer
  9. js 向页面输出html,javascript怎么输出?
  10. [乐意黎转载]云南公务员招录计划中将增加残疾人指标!