个人原创文档,转载时,请备注来源!
模型导入: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
对象,您可以使用该对象来访问各个动画(例如,使用getAnimationByTargetProperty
function)。
该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()
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。