fbx 模型轉換 export

minggoddess發表於2015-06-30

最近在做自定義型別到fbx的轉換

有關polygon的理解

vertex,normal,color等資訊,是離散的放置的,對fbx裡面的mesh加了控制點(vertex)資訊之後,

需要再設定polygon資訊,就像索引那樣,由哪些資料組成一個多邊形

 

過程是這樣的

 

// Create the FBX SDK manager

FbxManager* lSdkManager = FbxManager::Create();

// Create the entity that will hold the scene

FbxScene*lScene = FbxScene::Create(pSdkManager,"scene");

 

// Build the node tree.
FbxNode* lRootNode = pScene->GetRootNode();
 
FbxNode* lNode = FbxNode::Create(pScene,"mynode");
lRootNode->AddChild(lNode);
 
FbxMesh* lMesh = FbxMesh::Create(pScene,pName);
lNode->SetNodeAttribute(lMesh);
 
// Create control points.
lMesh->InitControlPoints(numVertex);
FbxVector4* lControlPoints = lMesh->GetControlPoints();
 
for(..i<numVertex..)
lControlPoints [i] = ....initialize...
 
for(..i<numPolygon..)
lMesh->BeginPolygon(-1, -1, false);
 
for(..j<numverticesPoly..)//每個多邊形包含的頂點數 這個polygon是為了把之前那麼多的vertex索引起來
  lMesh->AddPolygon(lPolygonVertices[j] );//....initialize..by lPolygonVertices[i] seems like index buffer function spec to form a polygon
 
lMesh->EndPolygon ();
 -----------------------------------
對於一個node 可以新增多個material然後 到底裡面的polygon要加哪個material呢,用這個
lMesh->BeginPolygon(materialindex);
 ...
我是在face 的迴圈裡挨個加material的所以,materialIndex用的是 face 的迭代次數
 
因為這個materialindex需要寫 node 中材質新增進來的那個索引
--------------------
這些問題 在官方文件中都可以找到答案,他的搜尋功能非常好用,就是這個http://help.autodesk.com/view/FBX/2016/ENU/?guid=__files_GUID_3E0DCCD0_5F9A_44D0_8D5E_423237D49DB6_htm

 我還有一個認識就是,接觸新東西的時候一開始阻抗非常高,感覺很麻煩,應著頭皮做就好了, 在最初的一週靠各種猜想,靠最笨的方法,做最簡單的實現.

之後再回頭看同樣的文件,就有所見即所得那種暢快感了,覺得他說的真清楚,但是一開始看同樣這種東西的時候,會覺得...這都是什麼啊...

ps:在科學領域漸進真理也是這種模式..

pps:把複雜任務分解,是最基本最重要的技能之一, (另外一個技能是搜尋

---------=============================------

我現在遇到一個問題,我希望很多節點上的 mesh共用一個vertex 陣列  也就是一個controlpoint

 

//Now we have set the UVs as eIndexToDirect reference and in eByPolygonVertex mapping mode

//we must update the size of the index array.

lUVDiffuseElement->GetIndexArray().SetCount(24);

 

相關文章