篇首语:本文由编程笔记#小编为大家整理,主要介绍了Threejs:PropertyBinding:无法解析trackName:.bones []。position相关的知识,希望对你有一定的参考价值。
版本:THREE.WebGLRenderer 91dev
我试图获得一个简单的动画胸部开口在three.js工作,但我在尝试创建一个动作时不断收到以下错误。
PropertyBinding:无法解析trackName:.bones []。position
完整版的动画JSON对象位于pastebin:Full JSON String上。简短摘要如下:
{
"name": null,
"fps": 30,
"length": 0.5333333333333333,
"hierarchy": [{
"parent": -1,
"keys": [{
"time": 0,
"rot": [
0,
0,
0,
1
],
"scl": [
1,
1,
1
],
"pos": [
0,
0,
0
]
},
我使用以下命令创建一个动画片段。
var clip = THREE.AnimationClip.parseAnimation(animation, armSkeleton.bones);
geometry.animations.push(clip);
clip的值如下:
duration: 0.6
name: "default"
tracks: […]
0: Object {
name: ".bones[].position",
times: […],
values: […],
…
}
1: Object {
name: ".bones[].quaternion",
times: […],
values: […],
…
}
2: Object {
name: ".bones[].scale",
times: […],
values: […],
…
}
3: Object {
name: ".bones[].position",
times: […],
values: […],
…
}
4: Object {
name: ".bones[].quaternion",
times: […],
values: […],
…
}
5: Object {
name: ".bones[].scale",
times: […],
values: […],
…
}
length: 6
__proto__: Array[]
uuid: "3E37E10B-74D0-4421-92AF-7A366CF3804F"
问题是当我尝试使用剪辑时:
mixer = new THREE.AnimationMixer(mesh);
mixer.clipAction(mesh.geometry.animations[0]).play();
我得到的错误是threejs无法解析trackname“.bones.position”,即使这是parseAnimation函数返回的名称?如果有人能指出我正在做的蠢事,我会非常困惑,我会很感激。
在解决了问题后,我发现错误的原因是因为AnimationClip期望命名骨骼。因此,在将每个骨骼传递给THREE.AnimationClip.parseAnimation之前,只需给每个骨骼一个唯一的名称,就可以避免这个错误消失。