最近在做自定義型別到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");
FbxNode* lRootNode = pScene->GetRootNode();
FbxNode* lNode = FbxNode::Create(pScene,"mynode");
lRootNode->AddChild(lNode);
FbxMesh* lMesh = FbxMesh::Create(pScene,pName);
lNode->SetNodeAttribute(lMesh);
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]
-----------------------------------
對於一個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);