个人原创文档,转载时,请备注来源!
模型导入:https://doc.babylonjs.com/api...
代码段:

BABYLON.SceneLoader.ImportMesh('', 'gltf/', 'Waterpump_3.glb', scene ,function(newMeshes, particleSystems, skeletons){
        scene.createDefaultCameraOrLight(true, true, true);
        // console.log(newMeshes);
        mesh = newMeshes[0];
        mesh.setPivotMatrix(BABYLON.Matrix.Translation(0.5, 0.5, 0.5), false);
        animGroups = scene.animationGroups;
        scene.activeCamera.setPosition(new BABYLON.Vector3(-1, 1, 1));
    })

1.动画分三种:骨骼动画,模型动画,动画制作
a.骨骼动画:https://www.babylonjs-playgro...
https://blog.csdn.net/qq_3010...
通过模型引入的成功回调参数里取值

b.模型动画是将模型放在scene里,在模型导入成功回调方法里写

animGroups = scene.animationGroups;
// 播放和停止动画
anime.start(); // 从头播放
anime.stop(); // 停止
anime.restart(); // 重置

//暂停继续播放组合
anime.pause();//暂停
anime.play();//播放

模型里的动画很多是动画组,多个动画组合进行达到效果。

scene.animationGroups[89].start(false,1,0,10)

或者同一动画同时应用多个模型元素,则可以

var ani3 = scene.beginAnimation('shang_1090xiaoshi',0,10,false,1,function(){console.log(1)},scene.animationGroups[89]);
ani3.start(false,1,0,10)

动画组方法

c.动画制作
官网链接

//创建Animation对象
var animationBox = new BABYLON.Animation("myAnimation", "scaling.x", 30, BABYLON.Animation.ANIMATIONTYPE\_FLOAT, BABYLON.Animation.ANIMATIONLOOPMODE\_CYCLE);
参数名称 含义
参数1 动画的名称
参数2 可以是任何网格属性,具体取决于您要更改的内容
参数3 每秒请求的帧数
参数4 要修改的值类型:浮点数(例如平移),矢量(例如方向)还是四元数
参数5 动画将在其上限处采取的行为类型
var animation = new BABYLON.Animation("camTar", "target", 30, BABYLON.Animation.ANIMATIONTYPE_VECTOR3, BABYLON.Animation.ANIMATIONLOOPMODE_CONSTANT);

// An array with all animation keys 
var keys = []; keys.push({ frame: 0, value: 1 }); keys.push({ frame: 20, value: 0.2 });

animation.setKeys(keys2);
camera.animations.push(animation);
scene.beginAnimation(scene.activeCamera, 0, time, false, 1, function () {
    callBack();
});

参考例子1
参考例子2
scene.beginAnimation的参数:

名称 类型 描述
target any 目标
from number fps起始帧
to number fps结束帧
loop boolean 如果为true,则动画将循环播放(取决于BABYLON.Animation.ANIMATIONLOOPMODE
speedRatio number 默认值:1。此动画的速比
onAnimationEnd () => void 即使动画已手动停止,该函数也会在动画结束时触发(也取决于ANIMATIONLOOPMODE)
animatable Animatable 可选的特定动画
stopCurrent boolean 如果有的话,我们应该停止现有的动画吗?默认是

此函数返回一个BABYLON.Animatable对象,您可以使用该对象来访问各个动画(例如,使用getAnimationByTargetPropertyfunction)。

BABYLON.Animatable对象还支持以下功能:

  • pause()
  • restart()
  • stop()
  • reset()
var newAnimation = scene.beginAnimation(box1, 0, 100, true);
newAnimation.pause();

缓动功能

您可以使用缓动功能将一些行为添加到动画中。如果您想了解有关缓动功能的更多信息,请参见以下有用链接

可以使用的预定义缓动功能:

  • BABYLON.CircleEase()
  • BABYLON.BackEase(amplitude)
  • BABYLON.BounceEase(bounces, bounciness)
  • BABYLON.CubicEase()
  • BABYLON.ElasticEase(oscillations, springiness)
  • BABYLON.ExponentialEase(exponent)
  • BABYLON.PowerEase(power)
  • BABYLON.QuadraticEase()
  • BABYLON.QuarticEase()
  • BABYLON.QuinticEase()
  • BABYLON.SineEase()
  • BABYLON.BezierCurveEase()

陌然浅笑
25 声望3 粉丝

坚持自律