美文网首页
31three.js AnimationMixer变形动画

31three.js AnimationMixer变形动画

作者: 狂暴机甲 | 来源:发表于2018-06-06 15:46 被阅读0次
图片.png

1. AnimationMixer 动画混合器

AnimationMixer是场景中特定对象的动画播放器。当场景中的多个对象独立动画时,可以为每个对象使用一个AnimationMixer。

AnimationMixer( rootObject : Object3D )

var mixer = new THREE.AnimationMixer(mesh);

方法:clipAction

action = mixer.clipAction( mesh.geometry.animations[ 0 ] );

mixer .clipAction (clip : AnimationClip, optionalRoot : Object3D) : AnimationAction
Returns an AnimationAction for the passed clip, optionally using a root object different from the mixer's default root. The first parameter can be either an AnimationClip object or the name of an AnimationClip.

If an action fitting these parameters doesn't yet exist, it will be created by this method.

Note: Calling this method several times with the same parameters returns always the same clip instance.

参考:https://threejs.org/docs/index.html#api/animation/AnimationMixer

2 . AnimationClip

AnimationClip(动画剪辑)是一组可重用的表示动画的关键帧轨迹。

3. 使用AnimationMixer实现变形动画

hrose.gif

代码如下,加载了一个马的变形动画。

var camera;
var scene;
var renderer;
var mesh,mixer,action;
var width = window.innerWidth;
var height = window.innerHeight;
scene = new THREE.Scene();
camera = new THREE.PerspectiveCamera(45, width / height, 0.1, 1000);
camera.position.set(-60, 40, 0);
camera.lookAt(scene.position);
renderer = new THREE.WebGLRenderer();
renderer.setSize(width, height);
renderer.setClearColor(0x222222);
renderer.shadowMap.enabled = true;

var plane = new THREE.Mesh( new THREE.PlaneBufferGeometry( 400, 400 ), new THREE.MeshPhongMaterial( { color: 0xCCCCCC, depthWrite: false } ) );
plane.rotation.x = - Math.PI / 2;
plane.receiveShadow = true;
scene.add( plane );

var grid = new THREE.GridHelper( 400,100, 0x000000, 0x000000 );
grid.material.opacity = 0.2;
grid.material.transparent = true;
scene.add( grid );

var amblight = new THREE.AmbientLight(0x666666);
scene.add(amblight);
var spotlight = new THREE.SpotLight(0x888888);
spotlight.position.set(0, 50, 0);
spotlight.castShadow = true;
spotlight.shadowMapWidth = 1024;
spotlight.shadowMapHeight = 1024;
scene.add(spotlight);
var axes = new THREE.AxesHelper(1);
scene.add(axes);

var loader = new THREE.JSONLoader();
loader.load("models/horse.js", function (geometry) {
    mesh = new THREE.Mesh(geometry, new THREE.MeshLambertMaterial({
        vertexColors: THREE.FaceColors,
        morphTargets: true
    }));
    mesh.scale.set(0.05,0.05, 0.05);
    mesh.castShadow = true;
    scene.add(mesh);
    console.log(mesh);
    mixer = new THREE.AnimationMixer(mesh);
    action = mixer.clipAction( mesh.geometry.animations[ 0 ] );
    action.play();
});

document.getElementById('webgl-output').appendChild(renderer.domElement);
renderer.render(scene, camera);

var clock = new THREE.Clock();
function render() {

    requestAnimationFrame(render);
    renderer.render(scene, camera);

    var time = clock.getDelta();
    if (mixer) {
        mixer.update(time);
        mesh.position.z += 0.25;
        if(mesh.position.z >=100){
            mesh.position.z = -100
        }
    }
}

render();

相关文章

  • 31three.js AnimationMixer变形动画

    1. AnimationMixer 动画混合器 AnimationMixer是场景中特定对象的动画播放器。当场景...

  • 2018-11-28

    变形 元素旋转 变形中心点 背面可见 图片翻面 animation动画 人物走路动画 多帧动画

  • 变形动画

    2. 如何使用变形动画? transform: 变形函数1 变形函数2 ...; 使用的前提是借助于过渡动画,才能...

  • HTML-08day

    1、背面可见 2、变形 3、变形中心点 4、多帧动画 5、动画 6、过渡动画 7、图片翻页 8、文字遮罩 9、小人...

  • 前端(动画)

    变形中心 背面可见 图片翻面 animation动画 人物走路动画 多帧动画 loading动画

  • 2019-06-04

    css基础知识 变形: 元素旋转 变形中心点: 背面可见 图片翻转: animation动画: 定义动画名称及形式...

  • svg Vector 章节(4):变形paths

    变形pathS 我们将在本文中介绍的最先进的图标动画技术是路径变形。 路径变形可让我们通过动画其绘制命令中的差异(...

  • 数字人C4D角色动画研究之十二:姿态变形

    副标题:制作七巧板变形动画 【前言】 上一篇讲到地图展开,制作动画的时候,应用到姿态变形标签。这个标签在制作变形动...

  • 2017-06-18

    css3中变形与动画(上) 1.Animation 动画定义animation动画2.Animation动画播放 ...

  • iOS立方体动画和帧动画

    这次主要是对动画做淡如淡出的处理,变形立方体的处理以及渐褪色的变形动画,关键帧动画 淡入淡出动画 是在2个视图之间...

网友评论

      本文标题:31three.js AnimationMixer变形动画

      本文链接:https://www.haomeiwen.com/subject/tfwbsftx.html