Three.js + Threex + Javascript:“fromArray 不是函数”?

Posted

技术标签:

【中文标题】Three.js + Threex + Javascript:“fromArray 不是函数”?【英文标题】:Three.js + Threex + Javascript: "fromArray is not a function"? 【发布时间】:2015-07-12 04:59:18 【问题描述】:

我已经尽力通过自己的研究来解决这个问题,但不幸的是,我对 three.js 和 javascript 是个绝对的新手,我真的需要一些帮助。

我正在尝试将来自 threex(谷歌 threex——我无法发布另一个链接)的模型导入到我的 three.js 场景中。不幸的是,当我按如下方式添加代码时:

    var spaceship = null;
THREEx.SpaceShips.loadSpaceFighter03(function(object3d)
    scene.add(object3d)
    spaceship = object3d
)

我最终得到了一个空白场景,并且在我的 javascript 控制台中出现了这个错误:

Uncaught TypeError: (intermediate value).fromArray 不是 功能:8000/bower_components/threex.spaceships/examples/vendor/three.js/examples/js/loaders/MTLLoader.js:299

这让我看到了 MTLLoader.js 中(可能是)有问题的代码行(无论该文件是什么。)

params[ 'ambient' ] = new THREE.Color().fromArray( value );

我不知道发生了什么,我想我有点过头了。有人知道如何解决这个问题吗?

我正在学习本教程:https://www.youtube.com/watch?v=vw5_YyM4hn8(如果有帮助,请在此处找到本教程该部分的示例代码:https://github.com/jeromeetienne/flying-spaceship-minigame/blob/master/step1-01-naked-spaceship.html -- 我看不到任何问题 -- 我是这样的far 试图非常密切地遵循这些步骤。)

提前致谢。

【问题讨论】:

Threex 与一年前的 three.js 版本兼容。由于您刚刚学习,我建议您遵循以下建议:***.com/questions/11966779/…。 谢谢!在检查了前三个.js 版本的变更日志后,我看到 fromArray() 函数发生了变化。我想我怀疑是这样的……你在哪里找到了 threex 的兼容性信息?我似乎找不到任何说明它明确兼容的three.js版本的文档。 github.com/jeromeetienne/threex/tree/master/vendor 这三个肯定应该更新 :) 只是一个注释。我完全同意理解底层技术的必要性。我想指出,打包扩展是有价值的。它可以在 jQuery 生态系统或统一资产库中看到。它避免了每个人一遍又一遍地重做同样的事情。我的 2 美分 :) 我遵循 Meta SO 中投票最高的答案中的建议,并将 cmets 中的答案和其他有用信息编辑为社区 Wiki 答案,请参阅“没有答案的问题,但问题已解决cmets”的理由:meta.***.com/questions/251597/…。也许与这个不太通用的问题不太相关,但无论如何为了清理未回答的问题列表是有用的。人们也经常遇到这些版本不兼容的问题。 【参考方案1】:

这是当前 three.js 与该 threex 中使用的代码之间的版本不兼容。 Threex 与一年前的 three.js 版本兼容。

学习three.js的时候,这个有很好的建议:Learning WebGL and three.js

threex使用的three.js版本可见https://github.com/jeromeetienne/threex/tree/master/vendor

【讨论】:

以上是关于Three.js + Threex + Javascript:“fromArray 不是函数”?的主要内容,如果未能解决你的问题,请参考以下文章