我正在尝试将从3DWarehouse获得的model加载到three.js中。我无法让Collada Loader工作,所以我把它导入THREEJS编辑器并使用“导出对象”功能导出它。当我使用以下代码将对象加载到我的应用程序时:
var kiss = new THREE.Object3D(), loader = new THREE.JSONLoader(true);
loader.load("model/kiss/kiss.js", function (geometry, meshKiss) {
meshKiss = new THREE.Mesh(geometry, new THREE.MeshPhongMaterial());
kiss.addChild(meshKiss);
});
scene.add(kiss);
我收到了错误:
Uncaught TypeError: Cannot read property 'length' of undefined
指的是THREE.JSONLoader.prototype.parse中的行,它要求第一个参数的uvs长度。
目标文件'几何'没有uvs(它有顶点,法线和面):
geometries: data: uvs: [[]]
在将旧的JSON格式文件导入THREEJS导出器时(我测试了Ginger模型),我也发现了这个问题。
我的进程是否有效,若然,为什么json对象不会导入THREE.JS?
答案 0 :(得分:1)
这似乎正在开发中。作为解决方法,您只能从编辑器导出几何体,因此您的JSON如下所示:
{
"metadata": {
"version": 4,
"type": "geometry",
"generator": "GeometryExporter"
},
"vertices": [ ... ]
"normals": [ ... ]
"uvs": [[]],
"faces": [ ... ]
}
然后这样做:
loader.load( "Kiss2.js", function ( geometry, materials ) {
var mesh = new THREE.Mesh( geometry, new THREE.MeshPhongMaterial( { color: 0xff0000, ambient: 0xff0000 } ) );
scene.add( mesh );
});
three.js.r.58
答案 1 :(得分:0)
用户ObjectLoader。 您将得到一个Mesh数组作为响应
var loader = new THREE.ObjectLoader;
loader.load('http://localhost/threetest/assets/weaponThree.js', createScene);
var material = null;
var mesh = null;
function createScene( json ) {
material = new THREE.MeshLambertMaterial( json.material );
mesh = new THREE.Mesh( json.geometry, material );
//scene.add( json[0] );
scene.add( mesh );
}