FBX SDK 总结之中文问题
最近几个月一直在做FBX数据转换方面的工作,记录下一些工作中遇到的问题和相应解决方案,算是对自己多日工作的总结也希望有需要的人能看到。
今天讨论的Fbx中文问题主要是集中在两方面:1、使用Sdk加载的Fbx文件的路径中存在中文 2、Fbx中保存的数据存在中文(例如Node 名称、材质名称等)。当我们按Sdk提供的范例直接加载路径中存在中文的Fbx文件时会直接报错。这里的解决方案是在将Fbx文件路径字符串交由Sdk加载前先进行一次字符编码转换,代码如下:
FbxString filePath=MyString::StdStr2FbxStr(srcFile);// srcFile 为Fbx文件路径// Use the first argument as the filename for the importer.
if(!lImporter->Initialize(filePath.Buffer(), -1, lSdkManager->GetIOSettings())) { printf("Call to FbxImporter::Initialize() failed.\n"); printf("Error returned: %s\n\n", lImporter->GetStatus().GetErrorString()); return false;
}FbxString MyString::StdStr2FbxStr(string str)
{FbxString retStr="";char * newStr=NULL;FbxAnsiToUTF8(str.c_str(),newStr);// Fbx Sdk 提供的字符编码转换APIif(NULL!=newStr){retStr=newStr;delete[] newStr; // 要记得释放}return retStr;
}
解决了Fbx中文路径问题后,我们再来看看Fbx文件中本身数据包含中文的处理方法,若调用Sdk接口返回的字符串不经过转码处理会显示为乱码,这时我们只要我们进行一次转码就OK啦,代码如下:
FbxNode *pNode=...
std::string nodeName=MyString::FbxStr2StdStr(pNode->GetName());string MyString::FbxStr2StdStr(FbxString fbxStr)
{string retStr="";char * newStr=NULL;FbxUTF8ToAnsi(fbxStr.Buffer(),newStr);if(NULL!=newStr){retStr=newStr;delete[] newStr;}return retStr;
}
经过上面的解释相信大家都知道了Fbx中的中文问题产生的原因主要是字符编码上面,Fbx内部是以UTF-8编码保存字符的,而我们的开发环境中的字符多是以ANSI或者Unicode存储的,解析使用的编码和实际数据的编码不匹配产生乱码也就在所难免了。
PS:以上只是针对开发环境字符编码设置为ANSI的情况进行说明的,若字符编码设置为Unicode,则可使用windows API WideCharToMultiByte(...)或直接使用FBX SDK提供的FbxWCToAnsi(...)将Unicode字符转成Ansi再按以上处理即可。
FBX SDK编码转换API头文件:
fbxsdk/core/base/fbxstring.h
SDK相关参考:
FBX SDK Programmer's Guide > FBX SDK Object Model > Connections> Supported String Formats
FBX SDK 总结之中文问题相关推荐
- fbx sdk android,Autodesk FBX SDK Program 中文 (一)
这是我的FBX SDK学习笔记.如文有错误.麻烦各位大大指出 为什么要使用FBX SDK? 由于3D建模软件都被AutoDesk收购了.FBX能够在各个建模软件之间互相导入导出,在非常多游戏引擎中也用 ...
- Working with FBX SDK (2)
Working with FBX SDK (2) 仅供个人学习使用,请勿转载,勿用于任何商业用途 作者:clayman 更新2012.5: *****fbx sdk 2013以后的版本做了大幅更新, ...
- FBX SDK下载安装教程
目录 FBX SDK介绍 FBX SDK下载安装 FBX SDK介绍 Fbx 是 Autodesk MotionBuilder 固有的文件格式,用于创建.编辑和混合运动捕捉和关键帧动画,也常用于动画文 ...
- FBX SDK快速简笔(基本)
FBX SDK快速简笔(摘至官方文档(因不开源,大部分地方官方文档中存在保密,以个人理解进行了一部分的推导,该文章免费并承诺不涉及如何利益)) FBX模型的组织结构 FBX是以scene graph的 ...
- Directx11教程四十六之FBX SDK
在之前的DX11入门系列文章中,有篇有关 Directx11教程四十之加载OBJ模型 读取obj模型数据的博客.不过在obj读取的那篇博客我有些坑并没有说,就是我写的那个obj解析器只能解析特定的ob ...
- fbx sdk android,FBX SDK环境配置
参照这个https://blog.csdn.net/lilysara/article/details/53940353 注意事项1. 选择lib文件夹的时候注意和电脑配置匹配 不匹配的话会报这个错误. ...
- 基于FBX SDK的FBX模型解析与加载 -(三)
6. 加载Camera和Light 在FBX模型中除了几何数据外较为常用的信息可能就是Camera和Light,虽然在游戏中一般不直接从模型中得到这两部分信息,而是由引擎来提供,但是FBX中提供了对这 ...
- FBX SDK动画开发
本文翻译自FBX SDK官方英文地址: https://help.autodesk.com/view/FBX/2020/ENU/?guid=FBX_Developer_Help_animation_h ...
- FBX SDK对象模型
FBX SDK对象模型 FBX SDK对象模型 一.FBX对象 1.FBX对象创建和销毁 2.属性 3.集合 4.复制FBX对象 二.FBX属性 1.管理属性 2.属性数据 3.属性层次 4.示例代码 ...
最新文章
- SQL Server自定义字符串分割函数——Split
- linux 服务器 安装网卡驱动,linux下安装编译网卡驱动的方法
- JavaScript创建Map对象(转)
- HtmlParser 简介
- Linux 信号signal处理函数--转
- 时间日期格式转换_JAVA
- Python学习笔记:常用内建模块7XML
- PMP之项目相关方管理
- Boost - 序列化 (Serialization)
- 多线程销售问题java_Java多线程Runable售票系统实现过程解析
- python-自定义模块-文件的操作
- 共享锁与排它锁区别(转)
- 50行javaScript代码实现简单版的 call , apply ,bind 【中级前端面试基础必备】
- Android 系统(30)---如何用DDMS分析native memory leak
- C语言学习笔记---结构体的定义和初始化
- 每天一道剑指offer-翻转单词顺序列
- ACS——网管的九阳神功
- 怎么将图片旋转一定角度?
- QQ淘宝自动转链转发机器人MkStone京东淘宝转链助手
- Java实现音频格式转换 WAV—mp3,可使音频压缩