设为首页 加入收藏

TOP

Autodesk FBX SDK Program 中文 (二)(一)
2015-07-24 05:46:46 来源: 作者: 【 】 浏览:12
Tags:Autodesk FBX SDK Program 中文

这是Autodesk FBX SDK学习笔记第二篇,以下部分汉字翻译自Autodesk FBX SDK Program,翻译人:有道翻译。

上一篇讲了一些FBX SDK的基本操作,创建FbxManager这些,也写了我们第一个FBX SDK 的例子。

今天是FBX SDK指南的第二篇,创建一个FBX文件转换器,有什么用?

把FBX转换成DAE、Obj这些格式啦!把FBX 二进制转换成文本格式啦!


这一篇的知识点:

1、FbxManager的创建与销毁

2、FbxImporter的创建与使用

3、FbxExporter的使用

4、Fbx SDK支持的文件格式


Autodesk FBX SDK document本篇地址:

http://docs.autodesk.com/FBX/2014/ENU/FBX-SDK-Documentation/index.html

官方例子运行效果:

\


不知道是MFC还是.Net 。这两个我一个都不会,所以还是写个控制台的……

#include
  
   

#pragma comment(lib,"libfbxsdk.lib")

FbxManager *g_pFbxManager=NULL;

/*** 初始化FbxSDK ***/
bool InitializeFbxSDK()
{
	bool bRet=false;

	do
	{
		//创建FbxManager
		g_pFbxManager=FbxManager::Create();

		//创建FbxIOSetting
		FbxIOSettings *pFbxIOSettings=FbxIOSettings::Create(g_pFbxManager,IOSROOT);

		//绑定关系
		g_pFbxManager->SetIOSettings(pFbxIOSettings);

		bRet=true;

	} while (0);
	return bRet;
}

/***  获取Fbx SDK 支持读入的格式  ***/
void GetFileCanImport()
{
	int count= g_pFbxManager->GetIOPluginRegistry()->GetReaderFormatCount();

	printf("支持导入以下 %d 种文件格式:\n",count);

	FbxString s;
	int i=0;
	for (int i = 0; i 
   
    GetIOPluginRegistry()->GetReaderFormatDescription(i); //获取描述 //s+=g_pFbxManager->GetIOPluginRegistry()->GetReaderFormatExtension(i); //获取文件后缀 s="%d : "+s+" \n"; printf(s.Buffer(),i); s.Clear(); } } /*** 获取Fbx SDK 可以导出的格式 ***/ void GetFileCanExport() { int count=g_pFbxManager->GetIOPluginRegistry()->GetWriterFormatCount(); printf("支持导出以下 %d 种文件格式:\n",count); FbxString s; int i=0; for (int i = 0; i < count; i++) { s+=g_pFbxManager->GetIOPluginRegistry()->GetWriterFormatDescription(i); //获取描述 //s+=g_pFbxManager->GetIOPluginRegistry()->GetWriterFormatExtension(i);//获取文件后缀 s="%d : "+s+" \n"; printf(s.Buffer(),i); s.Clear(); } } /*** 读入一个Fbx文件到FbxScene ***/ bool ImportFbxModel(FbxScene* scene,const char* importfilename) { int fileVerMajorNum,fileVerMinorNum,fileVerRevision; //文件大版本号、小版本号,修正版本号 int sdkVerMajorNum,sdkVerMinorNum,sdkVerRevision; //FBX SDK版本号 int animStackCount; //动画的数量 bool bRet=false; char password[1024]; //密码,文件可能加密了需要输入密码 //获取FBX SDK的版本号 FbxManager::GetFileFormatVersion(sdkVerMajorNum,sdkVerMinorNum,sdkVerRevision); //创建FbxImporter FbxImporter *pFbxImporter=FbxImporter::Create(g_pFbxManager,importfilename); //初始化FbxImporter const bool importret= pFbxImporter->Initialize(importfilename,-1,g_pFbxManager->GetIOSettings()); //获取Fbx文件的版本号 pFbxImporter->GetFileVersion(fileVerMajorNum,fileVerMinorNum,fileVerRevision); if(!importret) //导入出错 { FbxString errorStr=pFbxImporter->GetStatus().GetErrorString(); printf("\nFbxImporter初始化失败,错误原因:%s\n",errorStr.Buffer()); if(pFbxImporter->GetStatus().GetCode() == FbxStatus::eInvalidFileVersion) //如果是文件版本不正确 { printf("\n FBX SDK 版本:%d.%d.%d\n",sdkVerMajorNum,sdkVerMinorNum,sdkVerRevision); printf("\nFBX 文件版本 :%d.%d.%d\n",fileVerMajorNum,fileVerMinorNum,fileVerRevision); } return false; } printf("\n ***** 导入文件成功****** \n"); printf("\n FBX SDK 版本:%d.%d.%d \n",sdkVerMajorNum,sdkVerMinorNum,sdkVerRevision); if(pFbxImporter->IsFBX() ) //如果导入的文件是FBX格式 { printf("\n FBX 文件版本 :%d.%d.%d \n",fileVerMajorNum,fileVerMinorNum,fileVerRevision); //在FBX文件中,一个Scene中可能有一个或多个 "animation stack",一个"animation stack"里面存放一个动画数据,如果想获取"animation stack"的信息,不必要载入全部的Scene printf("\n Animation s
首页 上一页 1 2 3 下一页 尾页 1/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇HDU 1394 Minimum Inversion Numb.. 下一篇uva 766 - Sum of powers(数学+递..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: