这个例子是一个简单的骨骼动画查看器。
"--drawbone"是否显示每个bone的坐标轴,通过AnimationManagerFinder获取到AnimationManagerBase
然后给了跟节点的UpdateCallback和AnimtkViewerModelController::setModel,
AnimtkViewerModelController是什么呢,是一个controller,界面和AnimationManagerBase之间的互操
作类,stop、play等等操作AnimationManagerBase的,注意一下 typedef std::map<std::string,
osg::ref_ptr<osgAnimation::Animation> > AnimationMap; 这里定义一个AnimationMap是操作了所有
的Animation,也就是Animation是一个动画的基本单位。
if (drawBone) {
osg::notify(osg::INFO) << "Add Bones Helper" << std::endl;
AddHelperBone addHelper;
node->accept(addHelper);
}
根据drawBone为每个bone绘制一个坐标轴。
AnimtkViewerGUI封装了WindowManager实现了一个操作按钮,这里面就是调用上面
AnimtkViewerModelController中的内容,这里设计很巧妙,
addChild(_buttonBox.get());
addChild(_labelBox.get());