2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > Html监听Fbx文件加载 FBX格式mesh解析与加载(一)

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

时间:2021-01-13 07:26:42

相关推荐

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

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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。