0

3DWarehouse から取得したモデルを three.jsにロードしようとしています。Collada Loader を動作させることができなかったので、代わりにそれを THREEJS Editor にインポートし、「オブジェクトのエクスポート」機能を使用してエクスポートしました。次のコードを使用してオブジェクトをアプリにロードしたとき:

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

これは、最初のパラメーターの uvs の長さを要求する THREE.JSONLoader.prototype.parse の行を参照します。

オブジェクト ファイル 'geometries' には UV がありません (頂点、法線、面はあります)。

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

three.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 に答える