如何

群体动画


如何分组动画

An AnimationGroup a允许您将动画和网格链接在一起并播放它们,暂停它们并将它们作为一组停止。

组建一个团队

按照创建动画的教程设置一个或多个动画。

例如具有创建动画1,animation2和动画3和也啮合mesh1,mesh2,mesh3和mesh4可以形成以下基团的动画

var animationGroup1 = new BABYLON.AnimationGroup("Group1");
var animationGroup2 = new BABYLON.AnimationGroup("Group2");

然后使用addTargetedAnimation方法将动画与网格链接,并将这些动画添加到组中

animationGroup1.addTargetedAnimation(animation1, mesh1);
animationGroup1.addTargetedAnimation(animation3, mesh1);
animationGroup1.addTargetedAnimation(animation2, mesh2);

animationGroup2.addTargetedAnimation(animation2, mesh3);
animationGroup2.addTargetedAnimation(animation1, mesh4);
animationGroup2.addTargetedAnimation(animation2, mesh4);
animationGroup2.addTargetedAnimation(animation3, mesh4);

由于动画可能是使用不同的时间轴创建的,因此必须使用标准化对齐

规范化组

可能是animation1,animation2和animation3都是使用不同数量的帧创建的。例如动画1可以从帧0到帧80,animation2从帧0到75和动画3从帧0到帧100可以使用归一化方法以使帧的数量相同为所有的动画,如在

animationGroup2.normalize(0, 100);

通常,规范化的参数是数字beginFrame和endFrame。

所述beginFrame数必须小于或等于最小开始所有动画的帧,对于上面的实施例不大于0 的endFrame数目必须大于或等于所有动画的最大端部框架,对于上述的实施例不不到100。

集团的速度比率

例如,可以设置组中所有动画的speedRatio

animationGroup1.speedRatio = 0.25;
animationGroup2.speedRatio = 3;

加快或减慢动画。

关于群体动画结束

有一个onAnimationEnd observable可用于在动画结束时触发一个函数。

animationGroup1.onAnimationEndObservable.add(function(){
    mesh2.material = redMaterial;
})

进一步阅读

基本

动画简介

高级

结合动画的
动画序列