Three.js: So klonen Sie Modelle im Programm

Erstellt am 20. Feb. 2012  ·  3Kommentare  ·  Quelle: mrdoob/three.js

Hallo, ich möchte ein Dae-Modell in mein Programm laden, zum Beispiel eine Teekanne und ich möchte 10 Teekannen in der Szene haben. Ich verwende die Klonfunktion wie folgt, aber das Objekt scheint auf sein Elternteil zu verweisen und dann auf sich selbst Ich kann es also nicht klonen. Wie kann ich 10 Kopien meines Objekts haben?

var dae;
var dae = [];
var loader = new THREE.ColladaLoader();
    loader.options.convertUpAxis = true;
    loader.load( 'teapot.dae',function colladaReady( collada ) {
        dae = collada.scene;
        for(var i = 0;i < 10;++i){
            daes[i] = clone(dae);
        }
    });
}
function clone(obj){
    if(obj == null || typeof(obj) != 'object')
        return obj;
    var temp = new Object();//obj.constructor(); // changed
    for(var key in obj)
        temp[key] = clone(obj[key]);
    return temp;
}
Question

Hilfreichster Kommentar

Bitte nicht in Threads posten, die seit Jahren geschlossen sind. Öffnen Sie stattdessen eine neue Ausgabe, geben Sie Ihre dae Datei und den entsprechenden three.js Code an.

Alle 3 Kommentare

Sie sollten in der Lage sein, so etwas zu tun:

var geometry = collada.scene.children[ 0 ].geometry;
var material = collada.scene.children[ 0 ].material;

for ( var i = 0; i < 10; i ++ ) {
    var mesh = new THREE.Mesh( geometry, material );
    mesh.position.set( i * 100, 0, 0 );
    scene.add( mesh );
}

Es hat nicht funktioniert, ich habe das gleiche Problem.
das ist mein collada.scene-Objekt
image

Bitte nicht in Threads posten, die seit Jahren geschlossen sind. Öffnen Sie stattdessen eine neue Ausgabe, geben Sie Ihre dae Datei und den entsprechenden three.js Code an.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen