three.js导出器'导出对象'不能使用jsonLoader(r58)

时间:2013-06-19 21:42:00

标签: import three.js webgl collada

我正在尝试将从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?

2 个答案:

答案 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 );


}