Three.js json loader错误而不更改文件扩展名

时间:2017-05-26 09:55:04

标签: json three.js blender loader

我在Blender中创建了一个模型,然后使用Three.js官方导出器将其导出到JSON。然后我尝试使用下一个代码加载它:

const loader = new THREE.JSONLoader();
loader.load('assets/models/bear.json', (geometry, materials) => {
  const bear = new THREE.Mesh(geometry, new THREE.MeshFaceMaterial(materials));
  scene.add(bear);
});

然后我收到了错误:

(unknown) TypeError: url.split is not a function
  at Object.extractUrlBase (eval at <anonymous> (app.js:742), <anonymous>:32860:19)
  at JSONLoader.load (eval at <anonymous> (app.js:742), <anonymous>:33166:120)

这是我的json文件:https://github.com/elliepooh/VRcard/blob/master/src/assets/models/bear.json

我找到了一些决定,但它们都是关于将.json文件重命名为.js并加载它。由于我使用webpack和eslint,因为某些原因而存在问题...

我也尝试过这样使用Clara.io JSON加载程序代码:

const loader = new THREE.ObjectLoader();
loader.load('assets/models/bear.json', (obj) => {
  scene.add(obj);
});

然后我得到以下TypeError:url.lastIndexOf不是函数

如果有任何方法将json加载到three.js而不更改它的文件扩展名并且没有这样的错误?任何帮助将不胜感激......

1 个答案:

答案 0 :(得分:1)

问题在于导入.json文件。相反,我应该用字符串加载它。 (正如在描述中那样,但我在代码中使用了@import)

现在它看起来像这样:

const loader = new THREE.JSONLoader();
loader.load('/static/bear.json', (geometry, materials) => {
  const bear = new THREE.Mesh(geometry, new THREE.MeshFaceMaterial(materials));
  scene.add(bear);
});

非常感谢 @ TheJim01 的帮助!