Three.js加载动画模型并控制播放

Three.js支持多种3D模型格式的文件加载。本例中我们以fbx文件为例。

首先当然是加载模型了。

    loader.load("fbx/Naruto.fbx", function (mesh) {
        scene.add(mesh);
    }

以上代码为加载模型并添加到场景中。

这是一个多动画的模型。那么首先我们先获取它到底有多少个动作动画。

        //  AnimationMixer 动画混合器是用于场景中特定对象的动画的播放器。当场景中的多个对象独立动画时,每个对象都可以使用同一个动画混合器。
        mixer = new THREE.AnimationMixer( mesh );
        console.log(mesh.animations.length);

这里输出的是28.那么就是说这个模型有28个动画动作。

现在我们来播放第一个动作动画

        //  clipAction 返回所传入的剪辑参数的AnimationAction, 根对象参数可选,默认值为混合器的默认根对象。
        //  第一个参数可以是动画剪辑(AnimationClip)对象或者动画剪辑的名称。
        mixer.clipAction( mesh.animations[ 0] ).play();

当你兴高采烈的localhost测试的时候发现。我擦。好像并没有出现想像中的画面。

那么这是为什么呢。

因为要在你的循环中 加入

  
  • 3
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
three.js加载动画需要用到以下三个类: 1. `GLTFLoader`:用于加载gltf文件,它是three.js官方提供的一个加载器。 2. `AnimationMixer`:用于管理动画的混合器,每个模型只需创建一个AnimationMixer对象即可。 3. `AnimationAction`:用于控制动画播放、停止、暂停等操作。 下面是一个加载gltf模型播放动画的示例代码: ```javascript import * as THREE from 'three'; import { GLTFLoader } from 'three/examples/jsm/loaders/GLTFLoader.js'; const loader = new GLTFLoader(); loader.load('model.gltf', function (gltf) { const model = gltf.scene; const mixer = new THREE.AnimationMixer(model); const action = mixer.clipAction(gltf.animations[0]); action.play(); scene.add(model); function animate() { requestAnimationFrame(animate); mixer.update(deltaTime); renderer.render(scene, camera); } animate(); }, undefined, function (error) { console.error(error); }); ``` 在上述代码中,我们先创建了一个GLTFLoader对象,并通过它加载了一个gltf模型。在加载成功的回调函数中,我们获取到了模型的根节点,创建了一个AnimationMixer对象,并使用它来管理模型动画。通过clipAction方法可以获取到动画的Action对象,并对其进行播放等操作。最后,将模型添加到场景中,并在animate函数中更新AnimationMixer对象的状态。 需要注意的是,在动画播放时需要在循环渲染的函数中调用mixer.update方法来更新AnimationMixer对象的状态,同时需要传入deltaTime参数以便计算动画的进度。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

人工智能-肥鹅

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值