|
楼主 |
发表于 2009-10-1 00:33:58
|
显示全部楼层
抱歉,讲述不够详细。
基本过程类似于osganimationskinning做的蒙皮
osg::Group *_group = new osg::Group;//场景节点
osg::ref_ptr<osgAnimation::Skeleton> _skelroot;/通过bvh plugin读入模型得到的骨骼根节点
osg::Geode *_skin;//通过3ds plugin读入模型得到的几何模型
osg::Geometry *geom = _skin->getDrawable(0)->asGeometry();
osgAnimation::RigGeometry *rigeom = new osgAnimation::RigGeometry(*geom);
osgAnimation::VertexInfluenceMap *vim = new osgAnimation::VertexInfluenceMap;
...
//bone16
(*vim)["bone16"].push_back(osgAnimation::VertexIndexWeight(17,0.81));
(*vim)["bone16"].push_back(osgAnimation::VertexIndexWeight(18,0.25));
...
rigeom->setInfluenceMap(vim);//设定映射关系,例如对应上面是bone16骨头,id为17,18号点受到的作用
osg::Geode* _geode = new osg::Geode;//挂载rigeom的节点
_geode->addDrawable(rigeom);
_skelroot->addChild(geode);//挂载节点_geode到骨骼根节点
_group->addChild(_skelroot);//挂载骨骼根节点到场景节点
之后对骨骼进行调整,作为皮肤的模型没有相应运动 |
|