javascript - three.js 问题:角色切换时出现多个动画但不播放
问题描述
新手来了 我已经加载了一个 ,fbx 角色,以及来自 Mixamo 的其他动画剪辑。这个想法是当点击一个键(“Q”)时动画切换。运行时,角色加载并播放第一个动画剪辑。按键时,动画剪辑发生变化,但动画不播放。这是我目前所在的地方..角色动画
这是相关的代码片段......
let Actions = [];
let action;
let animPaths = [ "./models/T-Pose.fbx","./models/Walking.fbx","./models/Running.fbx","./models/Idle.fbx" , "./models/Dancing.fbx"];
let pathIDs = ["t-pose","walking", "running", "idle", "dancing"];
let moe;
let mixer;
const loader = new FBXLoader();
loader.load("./models/T-Pose.fbx", function(object){
object.scale.set(0.1, 0.1, 0.1);
/* object.traverse(function(child){
if(child.isMesh){
child.material = material;
}
})*/
moe = object;
moe.position.y = -70;
mixer = new THREE.AnimationMixer(object);
action = mixer.clipAction(object.animations[0]);
Actions.push(action);
//action.play();
scene.add(object);
loadNextAnimation(loader);
});
function loadNextAnimation(loader){
for(let i=1;i<animPaths.length;i++){
loader.load(animPaths[i], (object) =>{
mixer = new THREE.AnimationMixer(moe);
Actions.push(mixer.clipAction(object.animations[0]));
scene.add(object);
action = Actions[i];
mixer.stopAllAction();
action.play();
})
}
}
let i = 0;
let fwd = true;
document.onkeydown = function(event) {
// 81 = q
if(event.keyCode == 81){
if(i < 1) fwd = true;
if(i > Actions.length) fwd = false;
if(fwd){
i++;
}else{
i--;
}
action = Actions[i];
mixer.stopAllAction();
//mixer.reset();
action.play();
console.log("i = " + i);
console.log(animPaths[i]);
document.getElementById("testtext").value = "currentClip = "+pathIDs[i];
animate();
}
};
谁能告诉我我在哪里搞砸了?谢谢。
解决方案
找到解决方案(感谢 Harold)。我在上传 T-Pose 时创建了一个混音器。然后,在loadNextAnimation(loader)函数中,每次加载新动画时,我都会创建一个新的混音器,覆盖之前的混音器。只需删除线混合器 = new THREE.AnimationMixer(moe); 解决了这个问题。
推荐阅读
- angular - 角路由器链接不导航
- angular - Angular rxjs Observables 找到第一个活着的服务器
- laravel - Laravel 邮件未从 Cron Job 发送
- javascript - 使用 MongoDB 调用 close 后 Node.js 再次连接
- javascript - 附加外部 .json 的搜索结果
- sas - 转换jsl脚本文件
- powershell - 在 PowerShell 中使用命令行参数运行可执行文件
- python - discord.py重写中discord.py中的“client.accept_invite”等价物是什么?
- curl - 使用带有 -o- 选项的 curl
- python-3.x - 使用 pyinstaller 编译后 os.popen 不起作用