Three.js ColladaLoader“无法读取未定义的属性'长度'”

Posted

技术标签:

【中文标题】Three.js ColladaLoader“无法读取未定义的属性\'长度\'”【英文标题】:Three.js ColladaLoader "Cannot read property 'length' of undefined"Three.js ColladaLoader“无法读取未定义的属性'长度'” 【发布时间】:2018-04-05 18:15:29 【问题描述】:

我正在尝试重复此处找到的运动学示例:

https://threejs.org/examples/#webgl_loader_collada_kinematics

如果我使用示例中提供的 collada,一切都很好。但是,如果我使用自己的 collada,我会在第 138 行收到“长度”错误(我现在使用完全相同的代码):

https://github.com/mrdoob/three.js/blob/master/examples/webgl_loader_collada_kinematics.html

有人知道为什么吗?

【问题讨论】:

【参考方案1】:

根据我在 Three.js github 上得到的答案,我的 dae 文件不包含任何运动学信息(所以标签如 library_kinematics_models 或 library_kinematics_scenes),而只是一个简单的骨架(骨骼动画)。我知道这一点,但我认为运动学是为了接触关节和一切。因此,由于它不包含任何动画数据,我只能使用 Collada Loader 静态显示它。

编辑:如果加载器检测到皮肤和骨骼层次结构,它会将相应的网格返回为子项下的SkinnedMesh(对我来说是子项[1])。该对象有一个skeleton 属性,可以访问所有骨骼。

之后,您必须使用Animation System 创建动画。

更多信息可以参考我在 Three.js 上的post。

【讨论】:

以上是关于Three.js ColladaLoader“无法读取未定义的属性'长度'”的主要内容,如果未能解决你的问题,请参考以下文章

WebGL Three.js ColladaLoader 示例失败

ColladaLoader2.js - 随机颜色覆盖 .dae 文件设置 (three.js)

three.js 图像纹理渲染为颜色(使用 ColladaLoader 加载)

网格组不可见 Three.JS ColladaLoader

ColladaLoader TypeError: THREE.LoaderUtils 未定义

三.js ColladaLoader 源文件的位置