0

我正在尝试将从 3DWarehouse 获得的模型加载到 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 长度的行。

目标文件 'geometries' 没有 uvs(它确实有顶点、法线和面):

geometries: data: uvs: [[]]

在将较旧的 JSON 格式文件导入 THREEJS 导出器时,我也发现了这个问题(我测试了 Ginger 模型)。

我的流程是否有效,如果有效,为什么 json 对象没有导入到 THREE.JS 中?

4

2 回答 2

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 );
});

三.js.r.58

于 2013-06-19T23:42:58.667 回答
0

而是使用用户 ObjectLoader。你会得到一个网格数组作为响应

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


}
于 2013-11-27T17:23:38.323 回答