Threejs:PropertyBinding:无法解析trackName:.bones []。position

时间:2018-02-28 15:25:07

标签: javascript parsing animation three.js

版本: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);

剪辑的值如下:

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函数返回的名称?如果有人能指出我做的事情,我会感到非常困惑。我会很感激。

1 个答案:

答案 0 :(得分:1)

在解决了这个问题后,我发现错误的原因是因为AnimationClip期望命名骨骼。因此,在将每个骨骼传递给THREE.AnimationClip.parseAnimation之前,只需给每个骨骼一个唯一的名称,设法让这个错误消失。