Html监听Fbx文件加载,FBX格式mesh解析与加载(一)
FBX格式mesh解析與加載(一)
FBX格式mesh解析與加載(一)
**
理解FBX格式中Mesh數(shù)據(jù)結(jié)構(gòu)**
fbx文件是現(xiàn)在許多建模動畫軟件和游戲引擎之間共用的模型文件格式。fbx文件分為兩種方式從建模軟件中導(dǎo)出,一種是二進(jìn)制文件另一種是ASCII碼保存。
ASCII保存的格式右鍵打開方式選文本可以打開看到里面保存的數(shù)據(jù)。對于模型網(wǎng)格來說,模型中點(diǎn)坐標(biāo)、點(diǎn)索引、 點(diǎn)法線、uv 是生成模型的重要參數(shù)。在文本中Object properties 能找到這個(gè)些數(shù)據(jù)。
比如打開一個(gè)簡單正方提模型我們可以看到下面數(shù)據(jù):
Vertices的24個(gè)值是三維數(shù)據(jù)集的8個(gè)頂點(diǎn)(3個(gè)值代表一個(gè)頂點(diǎn)三維坐標(biāo))。
PolygonVertexIndex 下的36個(gè)值是頂點(diǎn)索引(mesh中點(diǎn)的索引)
Normals 的108是12個(gè)三角形的每個(gè)三角形角的36個(gè)法線(3個(gè)值代表一個(gè)法向量)。
UV 下的24是12個(gè)紋理坐標(biāo)(2個(gè)值代表一個(gè)紋理坐標(biāo)對)。
UVIndex 的36是三維數(shù)據(jù)集的36個(gè)三角形角的紋理坐標(biāo)索引(引用 UV 的值)。
Vertices中數(shù)據(jù)不難理解,就是這些數(shù)據(jù)三個(gè)一組對應(yīng)X、Y、Z構(gòu)成一個(gè)三維坐標(biāo),所以可以得到正方體的8個(gè)頂點(diǎn)坐標(biāo)。
PolygonVertexIndex 看到這個(gè)數(shù)據(jù)中的大家都會有疑問:
為什么頂點(diǎn)索引數(shù)據(jù)會有負(fù)數(shù)?
因?yàn)槟P蜑榱藚^(qū)分模型網(wǎng)格是三角面還是四邊面,如果數(shù)據(jù)每隔三個(gè)為負(fù)數(shù)則為三角面,每隔四個(gè)為四邊面。
如何將負(fù)數(shù)的索引值轉(zhuǎn)成有效索引數(shù)據(jù)呢?
假如n為負(fù)數(shù)索引值,m = |n|-1 。m為計(jì)算后的正確索引值。
因?yàn)閚ormal和uv所計(jì)算的值都是對應(yīng)的點(diǎn)的值:點(diǎn)法線是對應(yīng)的點(diǎn)的法線,uv是點(diǎn)映射在平面上的坐標(biāo)值,他們根本都是點(diǎn)的屬性。 而 PolygonVertexIndex、Normals和UVIndex的數(shù)量都是36,可以猜測Normals 和 UV 是在每個(gè)PolygonVertexIndex所映射的點(diǎn)所相應(yīng) normal 或者 uv 的值的集合。
**
FBX文件中Mesh數(shù)據(jù)結(jié)構(gòu)與游戲引擎中Mesh數(shù)據(jù)結(jié)構(gòu)差異
**
fbx文件中的數(shù)據(jù)結(jié)構(gòu)與游戲引擎中的模型數(shù)據(jù)有所不同,如果拿fbx中的數(shù)據(jù)在unity3d或者UE4的場景中生成模型依然會出現(xiàn)問題。
游戲引擎與fbx數(shù)據(jù)結(jié)構(gòu)不同:
1.游戲引擎mesh中點(diǎn)索引triangles,都是三角面,三個(gè)數(shù)據(jù)為一組。而fbx中有可能為四邊面。
2.游戲引擎中mesh中的normal數(shù)量、uv數(shù)量與vertices中點(diǎn)數(shù)量一致。而fbx中normal數(shù)量、uv數(shù)量與vertices的點(diǎn)索引數(shù)量一致。
想要把fbx導(dǎo)入到游戲引擎中必須解決這些問題。將數(shù)據(jù)轉(zhuǎn)化后才能在場景中生成正確的模型。
FBX格式mesh解析與加載(一)相關(guān)教程
總結(jié)
以上是生活随笔為你收集整理的Html监听Fbx文件加载,FBX格式mesh解析与加载(一)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 结构化方法、面向对象方法的区别
- 下一篇: 创新+工匠,TCL推XESS重定义电视行