SDK의 코드를 참조합니다.
// UseFBXSDK.cpp -- 2014/01/15-21:36
#include "stdafx.h"
#include <fbxsdk.h>
int numTabs = 0;
void PrintTabs()
{
for(int i = 0; i < numTabs; i++)
printf("\t");
}
FbxString GetAttributeTypeName(FbxNodeAttribute::EType type)
{
switch(type)
{
case FbxNodeAttribute::eUnknown: return "unidentified";
case FbxNodeAttribute::eNull: return "null";
case FbxNodeAttribute::eMarker: return "marker";
case FbxNodeAttribute::eSkeleton: return "skeleton";
case FbxNodeAttribute::eMesh: return "mesh";
case FbxNodeAttribute::eNurbs: return "nurbs";
case FbxNodeAttribute::ePatch: return "patch";
case FbxNodeAttribute::eCamera: return "camera";
case FbxNodeAttribute::eCameraStereo: return "stereo";
case FbxNodeAttribute::eCameraSwitcher: return "camera switcher";
case FbxNodeAttribute::eLight: return "light";
case FbxNodeAttribute::eOpticalReference: return "optical reference";
case FbxNodeAttribute::eOpticalMarker: return "marker";
case FbxNodeAttribute::eNurbsCurve: return "nurbs curve";
case FbxNodeAttribute::eTrimNurbsSurface: return "trim nurbs surface";
case FbxNodeAttribute::eBoundary: return "boundary";
case FbxNodeAttribute::eNurbsSurface: return "nurbs surface";
case FbxNodeAttribute::eShape: return "shape";
case FbxNodeAttribute::eLODGroup: return "lodgroup";
case FbxNodeAttribute::eSubDiv: return "subdiv";
default: return "unknown";
}
}
void PrintAttribute(FbxNodeAttribute* pAttribute)
{
if(pAttribute == nullptr)
return;
FbxString typeName = GetAttributeTypeName(pAttribute->GetAttributeType());
FbxString attrName = pAttribute->GetName();
PrintTabs();
printf("<attribute type='%s' name='%s'/>
", typeName.Buffer(), attrName.Buffer());
}
void PrintNode(FbxNode* pNode)
{
PrintTabs();
const char* nodeName = pNode->GetName();
FbxDouble3 translation = pNode->LclTranslation.Get();
FbxDouble3 rotation = pNode->LclRotation.Get();
FbxDouble3 scaling = pNode->LclScaling.Get();
printf("<node name='%s' translation='(%f, %f, %f)' rotation='(%f, %f, %f)' scaling='(%f, %f, %f)'>
",
nodeName,
translation[0], translation[1], translation[2],
rotation[0], rotation[1], rotation[2],
scaling[0], scaling[1], scaling[2]
);
numTabs++;
for(int i = 0; i < pNode->GetNodeAttributeCount(); i++)
PrintAttribute(pNode->GetNodeAttributeByIndex(i));
for(int j = 0; j < pNode->GetChildCount(); j++)
PrintNode(pNode->GetChild(j));
numTabs--;
PrintTabs();
printf("</node>
");
}
int main(int argc, char** argv) {
const char* pFilename = "humanoid.fbx";
FbxManager* pSdkManager = FbxManager::Create();
FbxIOSettings *pIOSettings = FbxIOSettings::Create(pSdkManager, IOSROOT);
pSdkManager->SetIOSettings(pIOSettings);
FbxImporter* lImporter = FbxImporter::Create(pSdkManager,"");
if(lImporter->Initialize(pFilename, -1, pSdkManager->GetIOSettings()) == nullptr)
{
printf("Call to FbxImporter::Initialize() failed.
");
printf("Error returned: %s
", lImporter->GetStatus().GetErrorString());
getchar() ;
exit(-1);
}
FbxScene* pScene = FbxScene::Create(pSdkManager,"myScene");
lImporter->Import(pScene);
lImporter->Destroy();
FbxNode* pRootNode = pScene->GetRootNode();
if(pRootNode != NULL)
{
for(int i = 0; i < pRootNode->GetChildCount(); i++)
PrintNode(pRootNode->GetChild(i));
}
pSdkManager->Destroy();
getchar() ;
return 0;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.