我在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而不更改它的文件扩展名并且没有这样的错误?任何帮助将不胜感激......
答案 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 的帮助!