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

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

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

**

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

fbx文件是现在许多建模动画软件和游戏引擎之间共用的模型文件格式。fbx文件分为两种方式从建模软件中导出,一种是二进制文件另一种是ASCII码保存。

ASCII保存的格式右键打开方式选文本可以打开看到里面保存的数据。对于模型网格来说,模型中点坐标、点索引、 点法线、uv 是生成模型的重要参数。在文本中Object properties 能找到这个些数据。

比如打开一个简单正方提模型我们可以看到下面数据:

137b9d8aa73a13fc15ed3fc1f0b746fc.png

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值