渲染引擎入门到精通一_导入模型的实现和解决fbxsdk的使用坑
Posted avi9111
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了渲染引擎入门到精通一_导入模型的实现和解决fbxsdk的使用坑相关的知识,希望对你有一定的参考价值。
前置条件,
学习这个文章前,需完全跑通项目
渲染引擎入门到精通-前篇零-HLSL编译的方法研究_avi9111的博客-CSDN博客
导入模型
因为渲染需要用到法线,切线,原来的cub,四边形已经不够用了
所以我们的引擎还是需要导入模型,因为受unity影响很深,还有某“大神”的Engine, 在有这个迭代需求后的第一反应还是,使用fbx加载模型,yaml做序列化
当然这不是渲染的重点
1.安装fbx sdk(1.6g还挺大的)
//官方下载 exe
2.碰到Fbxstring 转 string问题
(大神的代码能够直编译无转换,最下面会贴出大神代码)
std::string nodeName=MyString::FbxStr2StdStr(pNode->GetName());
3.无法解析的外部符号
(一开始用的sdk2017.lib,会有这个问题,无解)
后来转到 sdk2010 会出现,更加莫名的提示
xxxxxxxx 无法解析的外部符号 __cdcel 2019
解决
貌似新版本改了一些调用方式
增加几个静态库就好了
(右键,项目属性,链接器->输入
libfbxsdk-mt.lib
wininet.lib
libxml2-mt.lib
zlib-mt.lib
上面用了-mt.lib,所以会提示 LNK2038,
VC编译时: MT,MTd,MD,MDd的区别_JoliceYU的博客-CSDN博客
有一种解决方法:在工程上右键-》属性-》c/c++-》代码生成-》运行库
想了以下,没理由为了一个库,而改变整个项目的配置吧
因为我用了这个库,所以直接写-md.lib,即可
mt,md的不同,可参考:
VC编译时: MT,MTd,MD,MDd的区别_JoliceYU的博客-CSDN博客
3.1 无语的C++结构体
//有毒不能用
//#include <DirectXMath.h>
//using namespace DirectX;
//用的很旧的 d3d,而用xnamth之前必须include <d3d11.h>
#include<d3d11.h>
#include<xnamath.h>
3.2 FBX SDK环境搭建
【学习填坑之路】FBX-SDK环境搭建及测试_吴亦旦的枯燥生活的博客-CSDN博客_fbx sdk 下载
4.读取fbx的实现代码
死马当活马用
按照上面的配置好 fbx SDK后,会提示找不到.dll
把dll从fbx sdk的安装目录,放在.sln同级目录(试过直接放在/debug 目录不行)
要放在根目录,不知道为什么lib 目录明明旧在,就是说找不到
非得复制一遍
读取fbx代码:(现在,网上资料很多了)
https://www.twblogs.net/a/5ee5d022b4c39c99158fb411
扩展阅读:
FBX SDK 之模型分离与解析(Python/C++) - 知乎
Fbx Offical Documents Help
3dmax坐标系与导出fbx的坐标系 - wantnon - 博客园
Visual Studio 2017 VC项目设置 printf 输出到 Console 窗口调试_路过人间本尊的博客-CSDN博客
以上是关于渲染引擎入门到精通一_导入模型的实现和解决fbxsdk的使用坑的主要内容,如果未能解决你的问题,请参考以下文章