Three.JS - 没有皮肤的 DAE 动画

Posted

技术标签:

【中文标题】Three.JS - 没有皮肤的 DAE 动画【英文标题】:Three.JS - DAE Animation Without Skins 【发布时间】:2013-05-27 01:24:20 【问题描述】:

我目前正在尝试使用 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 数组中确实有一个条目。

【问题讨论】:

【参考方案1】:

我知道这是一篇旧帖子,但我在尝试使用 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

【讨论】:

干杯伙伴,耻辱赏金有一个到期日期。

以上是关于Three.JS - 没有皮肤的 DAE 动画的主要内容,如果未能解决你的问题,请参考以下文章

Three.js - 头像动画

如何使用 THREE.js 向 collada 文件 (.dae) 添加纹理?

使用vue学习three.js之创建动画-创建骨骼动画,使用SkinnedMesh制作蒙皮

在Three.js中加载DAE

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

如何使用 Three.js 和 Collada Loader 更新 .dae 文件中模型的特定部分