查看: 3997|回复: 12

怎样在osg中导入并显示bvh角色运动数据

[复制链接]

该用户从未签到

发表于 2010-5-13 13:21:16 | 显示全部楼层 |阅读模式
在osg中如何导入bvh运动数据文件,并显示出角色的动画效果?貌似斑竹做过bvh插件,但捣鼓了半天也不知如何使用,我是osg新手,希望能给出具体的方法,最好是一段参考代码,万分感谢!!!

该用户从未签到

 楼主| 发表于 2010-5-13 15:36:03 | 显示全部楼层
哪位好心人指点指点我这个新手?

该用户从未签到

 楼主| 发表于 2010-5-13 17:01:08 | 显示全部楼层
本帖最后由 amen.w 于 2010-5-13 17:07 编辑

一下是我写的代码:请问哪里有问题?
int main( int argc, char **argv )
{
        osgViewer::Viewer viewer;

        osg::ref_ptr<osgAnimation::Skeleton> skelroot = new osgAnimation::Skeleton;
        osg::ref_ptr<osg::Node> node = osgDB::readNodeFile("PickUpBox.bvh");
        skelroot->setDefaultUpdateCallback();
        skelroot->addChild(node.get());

        osg::ref_ptr<osgAnimation::Animation> anim = new osgAnimation::Animation;
        anim->setPlaymode(osgAnimation::Animation::PPONG);

        osg::ref_ptr<osgAnimation::BasicAnimationManager> manager = new osgAnimation::BasicAnimationManager;
        manager->registerAnimation(anim.get());
        manager->playAnimation(anim.get());

        osg::ref_ptr<osg::Group> root = new osg::Group;
        root->addChild(skelroot.get());
        root->setUpdateCallback(manager.get());

        viewer.setSceneData( root.get() );
        return viewer.run();
}

该用户从未签到

 楼主| 发表于 2010-5-13 17:09:57 | 显示全部楼层
为什么运行之后什么也看不到?请高手指点,期待中......

该用户从未签到

发表于 2010-5-14 12:52:43 | 显示全部楼层
BVH本身并不是模型,而是运动姿态和动作的捕捉数据。因此直接读入是不会有什么绘制效果的,但是骨骼节点结构已经建立并赋予了运动关键帧。

我制作BVH插件的时候也考虑到了这个问题,因此提供了相应的测试选项。您可以使用下面的命令来测试您的BVH数据(注意它可能不是一开始就居中的,请自己调整一下视角):
osgviewer test.bvh -O solids

该用户从未签到

发表于 2010-5-14 14:19:45 | 显示全部楼层
那数据怎么关联到模型的

该用户从未签到

发表于 2010-5-14 17:08:32 | 显示全部楼层
简单来说就是Bone::addChild

该用户从未签到

 楼主| 发表于 2010-5-14 19:09:21 | 显示全部楼层
osgviewer test.bvh -O solids测试后果然可以看到效果,但是运动捕获数据放在哪里?用方法osg::ref_ptr<osg::Node> node = osgDB::readNodeFile("test.bvh");读取后,数据放在了node里了吗?怎样在osg里查看和改变bvh捕获数据呢?若用Bone::addChild(bone0),那么bone0怎么设置的呢?我要达到的效果是显示动画效果,并且可以随时改变角色的骨骼结构(如骨骼长度)和改变角色运动姿势等。可否提供一段简单的参考代码?谢谢!

该用户从未签到

发表于 2010-5-16 23:13:29 | 显示全部楼层
osgdb_bvh的插件代码就是最简单的参考代码了,您可以在其中看到节点和回调的构造过程,并反推出自己应当采取的方案

该用户从未签到

发表于 2010-10-21 09:35:05 | 显示全部楼层
楼主 您好 这个问题解决的怎么样了 我也是被这个问题困扰中

该用户从未签到

发表于 2012-7-4 15:24:52 | 显示全部楼层
请问比最后怎么把bvh文件转化为模型的?

该用户从未签到

发表于 2012-7-10 09:30:59 | 显示全部楼层
bvh不能转换为模型,要把自己另外建立的模型分别addChild到不同的Bone上面

该用户从未签到

发表于 2014-3-18 10:38:24 | 显示全部楼层
请高手指点:bvh数据读入内存并且将fbx的人物模型也读入了,可以通过什么方式将bvh数据关联到人物模型上,使得人物可以按照bvh数据进行运动?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

OSG中国官方论坛-有您OSG在中国才更好

网站简介:osgChina是国内首个三维相关技术开源社区,旨在为国内更多的技术开发人员提供最前沿的技术资讯,为更多的三维从业者提供一个学习、交流的技术平台。

联系我们

  • 工作时间:09:00--18:00
  • 反馈邮箱:1315785073@qq.com
快速回复 返回顶部 返回列表