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();

}

文件夹中数据

0ff36b8daa38

模型数据文件中的内容

灰度效果的模型展示

0ff36b8daa38

模型显示

参考技术

https://www.jianshu.com/p/c29f7c2fa865

https://blog.csdn.net/weixin_30622181/article/details/95825855

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值