2

我目前正在尝试使用 Three.js 显示一个简单的动画 3D 模型。该文件从 3DS Max 导出正常,但是当我尝试对其进行动画处理时出现错误:

未捕获的类型错误:无法读取未定义的属性“morphTargetInfluences”

我正在使用http://threejs.org/examples/webgl_loader_collada.html中的动画代码

function animate() {

    requestAnimationFrame( animate );
    controls.update();

    for ( var i = 0; i < skin.morphTargetInfluences.length; i++ ) {

        skin.morphTargetInfluences[ i ] = 0;

    }

    skin.morphTargetInfluences[ Math.floor( explode * 30 ) ] = 1;

    render();
}

我已将错误归结为我的模型没有皮肤这一事实。无论如何,我是否可以对其进行动画处理?导入的 Three.js 对象在 Animations 数组中确实有一个条目。

4

1 回答 1

3

我知道这是一篇旧帖子,但我在尝试使用 加载.dae文件时也遇到了同样的问题ColladaLoader,所以发布评论以防有人遇到同样的问题。

如果您有超过 30 个骨骼,您可能可以加载动画。

如果您查看ColladaLoader.js,则有一行:

if(sortedbones.length < maxbones)

并且 maxbones 设置为 30。因此,如果不超过 30 个骨骼,geometry.morphTargets则未定义。

如果你不想有这么多的骨头,你可以破解ColladaLoader文件并将 maxbones 设置为 1。


添加到我的评论。

我想,较新版本的 ColladaLoader 没有这个问题。我不确定我从哪里得到旧文件...

您可以从 GitHub 获取最新文件。 https://github.com/mrdoob/three.js

于 2014-06-14T15:00:18.047 回答