我目前正在尝试使用 Three.js 显示一个简单的动画 3D 模型。该文件可以从 3DS Max 导出,但当我尝试对其进行动画处理时,出现错误:
Uncaught TypeError: Cannot read property 'morphTargetInfluences' of undefined
我正在使用 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 数组中有一个条目。
最佳答案
我知道这是一篇旧帖子,但在尝试使用 ColladaLoader
加载 .dae
文件时也遇到了同样的问题,因此发布评论以防有人敲打他们的头也有同样的问题。
如果您有超过 30 个骨骼,您也许可以加载动画。
如果您查看ColladaLoader.js
,会发现有一行:
if(sortedbones.length < maxbones)
并且 maxbones 设置为 30。因此,如果骨骼不超过 30 个,则 geometry.morphTargets
未定义。
如果您不想拥有这么多骨骼,您可以破解 ColladaLoader
文件并将 maxbones 设置为 1。
添加到我的评论中。
我想,较新版本的 ColladaLoader 不会有这个问题。 我不确定我从哪里得到旧文件...
您可以从 GitHub 获取最新文件。 https://github.com/mrdoob/three.js
关于html5-canvas - Three.JS - 无皮肤 DAE 动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16853618/