|
- An update callback has no name, it means it could link only with "" named Targe
- , often an error, discard
复制代码
大家好,本人在加载自己做的FBX模型的时候总是有上面这种提示,网上下载的模型就没有这种提示,但是模型在MotionBuilder里面以及OSG实例osganimationviewer都是可以播放的。本来也不会在意这种这种提示的,但是本人在UpdateCallback更新回调里面添加playAnimation的代码时出现如下异常现象(只是在更新回调的时候播放一次模型动画的简单代码):- 1.正常模型(加载模型时没有上面提示的模型)在更新回调里面能够播放动画;
- 2.不正常模型在更新回调里面第一次无法播放动画,而第二次回调以后就能够播放动画了。
- 3.使用GUIEventHandler按键响应按J,K分别触发模型动画,正常模型和不正常模型都能播放动画。
复制代码 我搜索谷歌,发现上面这段提示是AnimationUpdateCallbackBase里面的ERROR提示。源码如下
- #ifndef OSGANIMATION_ANIMATION_UPDATE_CALLBACK
- #define OSGANIMATION_ANIMATION_UPDATE_CALLBACK 1
- #include <osg/Object>
- #include <osgAnimation/Channel>
- #include <osgAnimation/Animation>
- #include <string>
- namespace osgAnimation
- {
- class AnimationUpdateCallbackBase : public virtual osg::Object
- {
- public:
- virtual bool link(Channel* channel) = 0;
- virtual int link(Animation* animation) = 0;
- };
- template <class T>
- class AnimationUpdateCallback : public AnimationUpdateCallbackBase, public T
- {
- public:
- AnimationUpdateCallback() {}
- AnimationUpdateCallback(const std::string& name) { T::setName(name);}
- AnimationUpdateCallback(const AnimationUpdateCallback& apc,const osg::CopyOp& copyop): T(apc, copyop) {}
- META_Object(osgAnimation, AnimationUpdateCallback<T>);
- const std::string& getName() const { return T::getName(); }
- bool link(Channel* channel) { return 0; }
- int link(Animation* animation)
- {
- if (T::getName().empty())
- {
- osg::notify(osg::WARN) << "An update callback has no name, it means it could link only with "" named Target, often an error, discard" << std::endl;
- return 0;
- }
- int nbLinks = 0;
- for (ChannelList::iterator it = animation->getChannels().begin();
- it != animation->getChannels().end();
- ++it)
- {
- std::string targetName = (*it)->getTargetName();
- if (targetName == T::getName())
- {
- AnimationUpdateCallbackBase* a = this;
- a->link((*it).get());
- nbLinks++;
- }
- }
- return nbLinks;
- }
- };
- }
- #endif
复制代码 本人才疏学浅,只知道T是泛型,琢磨不透这T是指什么。希望大家能指导下怎么处理这个问题,模型需要修改哪里呢。亦或者是在代码里面能修补这个问题。烦请大家帮下忙,先谢谢看帖的各位了。
|
|