osganimationtimeline例子

本文介绍了osg中的TimelineAnimationManager,它是基于时间线的动画管理器,不同于BasicAnimationManager。TimelineAnimationManager通过Timeline更新动作,利用UpdateActionVisitor遍历并执行Action。在Timeline::update中,ActionStripAnimation中的ActionBlendIn、ActionBlendOut和ActionAnimation被调用。通过addActionAt将动作添加到时间线,并设置更新回调以确保动画在场景图遍历过程中得到执行。
摘要由CSDN通过智能技术生成

继承AnimationManagerBase的类有BasicAnimationManager和TimelineAnimationManager,之前我们一直

讨论的是BasicAnimationManager。
下面回忆一下BasicAnimationManager的驱动过程,
当执行BasicAnimationManager::playAnimation(Animation* pAnimation, int priority, float

weight)时候,一个Animation开始根据优先级和权重通过时间驱动,在具体的实现playAnimation中,
_animationsPlaying[priority].push_back(pAnimation);
    // for debug
    //std::cout <<

"player Animation " << pAnimation->getName() << " at " << _lastUpdate << std::endl;
   

pAnimation->setStartTime(_lastUpdate);
    pAnimation->setWeight(weight);
就是设置了这个animation的开始时间和权重,然后加入_animationsPlaying map中,看看

_animationsPlaying在什么地方应用了,没错是update中,没一帧都在调用,遍历_animationsPlaying

中所有的animation,然后执行list[i]->update(time, priority),根据时间和优先级驱动每一个

animation。
这是BasicAni

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值