基本动画
function createScene() {
//这里创建场景的基本对象:场景,光,相机
const scene = new BABYLON.Scene(engine);
const camera = new BABYLON.ArcRotateCamera(
"Camera",
-Math.PI / 2,
Math.PI / 4,
10,
BABYLON.Vector3.Zero()
);
camera.attachControl(canvas, true);
const light = new BABYLON.HemisphericLight(
"light",
new BABYLON.Vector3(1, 1, 0)
);
//创建一个立方体
const box = BABYLON.MeshBuilder.CreateBox("box", {});
box.position.x = 2;
}
创建动画(name,属性,每秒帧数,属性类型,循环模式)
var animationBox = new BABYLON.Animation("myAnimation", "scaling.x", 30, BABYLON.Animation.ANIMATIONTYPE_FLOAT, BABYLON.Animation.ANIMATIONLOOPMODE_CYCLE);
参数1:name
参数2:属性 例如:(position.x)||(scaling.x)
参数3:每秒帧数
参数4:属性类型
BABYLON.Animation.ANIMATIONTYPE_COLOR3; 【数字】
BABYLON.Animation.ANIMATIONTYPE_FLOAT; 【二维矢量】
BABYLON.Animation.ANIMATIONTYPE_MATRIX; 【三维矢量】
BABYLON.Animation.ANIMATIONTYPE_QUATERNION; 【四元数】
BABYLON.Animation.ANIMATIONTYPE_VECTOR2;【矩阵】
BABYLON.Animation.ANIMATIONTYPE_VECTOR3;【颜色】
参数5:循环模式
BABYLON.Animation.ANIMATIONLOOPMODE_CYCLE - 从初始值重新启动动画 BABYLON.Animation.ANIMATIONLOOPMODE_CONSTANT - 在最终值处暂停动画 BABYLON.Animation.ANIMATIONLOOPMODE_RELATIVE - 使用键值渐变重复动画递增
设置关键帧
// 设置关键帧
const keyFrames = [];
// 第一个键,第frameRate帧,
keyFrames.push({
frame: 0,
value: 2,
});
// 在动画第20帧时
keyFrames.push({
frame: frameRate,
value: -4,
});
// 在动画第frameRate * 2帧时
keyFrames.push({
frame: 2 * frameRate,
value: 2,
});
// 将动画组添加到动画对象
xSlide.setKeys(keyFrames);
// 动画链接到我们的框
box.animations.push(xSlide);
// 启动动画
scene.beginAnimation(box, 0, 2 * frameRate, true);