700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > osg动态加载模型不显示_OSG仿真案例(8)——读取FBX格式文件并显示(无动画)...

osg动态加载模型不显示_OSG仿真案例(8)——读取FBX格式文件并显示(无动画)...

时间:2020-08-04 13:35:47

相关推荐

osg动态加载模型不显示_OSG仿真案例(8)——读取FBX格式文件并显示(无动画)...

包含的头

#include

#include

#include

#include

#include

#include

#include

#include

#include

using namespace std;

所需要的类(结构体)

struct AnimationManagerFinder : public osg::NodeVisitor

{

osg::ref_ptr<:basicanimationmanager> _am;

AnimationManagerFinder()

{

osg::NodeVisitor sss=osg::NodeVisitor::TRAVERSE_ALL_CHILDREN;

}

void apply(osg::Node& node) {

if (_am.valid())

return;

if (node.getUpdateCallback()) {

osgAnimation::AnimationManagerBase* b = dynamic_cast<:animationmanagerbase>(node.getUpdateCallback());

if (b) {

_am = new osgAnimation::BasicAnimationManager(*b);

return;

}

}

traverse(node);

}

};

加载吧显示模型

void xx()

{

osg::ref_ptr<:viewer> viewer1 = new osgViewer::Viewer;

osg::ref_ptr<:group> group1 = new osg::Group;

osg::ref_ptr<:matrixtransform> matrixTransform1 = new osg::MatrixTransform;

osg::ref_ptr<:node> node1 = osgDB::readNodeFile("E:\\......\\0000.fbx");

AnimationManagerFinder animationManagerFinder1;

group1->accept(animationManagerFinder1);

if (animationManagerFinder1._am.valid())

{

std::string playModeOpt;

osgAnimation::Animation::PlayMode playMode = osgAnimation::Animation::LOOP;

//此处加if的内容

for (osgAnimation::AnimationList::const_iterator animIter = animationManagerFinder1._am->getAnimationList().begin();

animIter != animationManagerFinder1._am->getAnimationList().end();

++animIter)

{

(*animIter)->setPlayMode(playMode);

}

}

matrixTransform1->setMatrix(osg::Matrix::translate(0.0, 0.0, 0.0));

matrixTransform1->addChild(node1);

group1->addChild(matrixTransform1);

viewer1->setSceneData(group1);

viewer1->setUpViewInWindow(200, 200, 800, 600, 0);

viewer1->run();

}

文件夹中数据

模型数据文件中的内容

灰度效果的模型展示

模型显示

参考技术

/p/c29f7c2fa865

/weixin_30622181/article/details/95825855

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。