Three.js ColladaLoader无法加载模型:某些元素似乎没有顶点

时间:2014-12-03 10:42:29

标签: three.js collada

我尝试从3D模型库中导入模型,但某些模型无法加载(ColladaLoader.js中的错误(第2808行)  未捕获的TypeError:无法读取null的属性“input”。我在3D仓库中使用了很多不同的模型,我遇到了这个错误。

我准备了一个小提琴(elcsiga / rep1z1xt / 4),它通过ajax(CORS违规)从不同的域加载模型,但它在Chrome中起作用。

完整的工作示例(无法加载模型): http://projecthost.hu/webview/jsfiddle/metro.html

与three.js存储库中的怪物模型完全相同的代码(它可以工作): http://projecthost.hu/webview/jsfiddle/monster.html

collada模型可在此处获取:projecthost.hu/webview/jsfiddle/metro.dae 首先,我尝试将其下载为.kmz文件,解压缩并直接使用.dae文件。另外,我尝试下载.skp文件,在Sketchup中打开它并将其导出为.dae格式,但在ColladaLoader.js中也出现了相同的错误。

这些模型是否包含不受支持的几何图形,或者它是Collada加载程序中的错误?

感谢。

2 个答案:

答案 0 :(得分:0)

模型没有任何顶点,因此Loader无法创建几何体。 (也许我错了)

您是通过Google SketchUp创建的模型吗? https://github.com/mrdoob/three.js/wiki/Using-SketchUp-Models

答案 1 :(得分:0)

查找

var vertexData = sources[ this.vertices.input['POSITION'].source ].data;
在ColladaLoader.js中

,将其替换为

var vertexData = [];
if (this.vertices && this.vertices.input['POSITION'].source) {
    vertexData = sources[ this.vertices.input['POSITION'].source ].data;
}

这可以通过避免空顶点来解决我的问题。它可能会丢失一些dae文件的信息,但它不会损害ColladaLoader.js的功能。