osg调用虚拟人物fbx模型
写一篇关于利用osg控制虚拟人物fbx模型的文章,作为这阶段工作的总结,好久没有园子里写文章了。
版本:osg-2.8.5,3ds max 2010. fbx sdk 2011.2
工作流程:
- 下载安装所需要的文件。
这里包括:osg-2.8.5源文件,CMake编译软件,3ds Max design 2010,fbx20112_3dsmaxdesign2010_win.exe和fbx20112_fbxsdk_win.exe;
- 编译osg-2.8.5安装包。
在安装了3ds max design 2010之后,安装fbx的两个文件,这样就使得3ds max 2010 可以导出fbx模型文件。完成以上工作后,就可以开始编译osg-2.8.5安装文件,我们的工具是CMake软件,具体工作可以参见 《 OpenSceneGraph三维渲染引擎编程指南》等书籍。这里注意要添加fbx的相应动态链接库。因为我用的是VS2005,所以这里会添加如下图:
这样,在生成osg工程之后,运行工程得到相应的osg-2.8.5安装文件。然后按照前面那本教材的内用进行相应的配置,就可以在PC上使用osg三维渲染引擎了。
- 使用3ds max制作虚拟人物模型。
因为作者不是这方面的行家,所以这里仅说明一个思路。网络上可以下载很多biped人物骨骼模型。利用关键帧动画为人物设计动作,尽量保持原地动作,这样在osg引擎中操控会更加方便 。每个动作生成一个fbx模型文件,再利用Autodesk MotionBuilder软件将这些fbx文件整合到一个fbx文件中。这样,保存一个人物模型的fbx文件中包括多个行为动作,比如可以包括:走,跑,坐,站等。注意不同的动作使用不懂的名称。
- 使用osg调用fbx文件
编写节点访问器和节点控制器(具体方法参考网络), 进行调用,程序为
AnimationManagerFinder finder0;
osg::Group *model0 = dynamic_cast<osg::Group*>(osgDB::readNodeFile("f:\\fbxmodels\\fbx2009\\wait_walk_grab_f2.FBX"));
model0->accept(finder0);
AnimtkViewerModelController *controller0 =new AnimtkViewerModelController();
controller0->setModel(finder0._am.get());
controller0->playByName("wait");
在下面的代码中进行动作的更改即可
while (!viewer->done())
{
viewer->frame();
}