Three.js: Cómo clonar modelos en el programa

Creado en 20 feb. 2012  ·  3Comentarios  ·  Fuente: mrdoob/three.js

hola, quiero cargar un modelo dae en mi programa, por ejemplo, una tetera y quiero tener 10 teteras en la escena.Utilizo la función de clonación de la siguiente manera, pero el objeto parece referirse a su padre y luego a sí mismo. así que no puedo clonarlo, ¿cómo puedo tener 10 copias de mi objeto?

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

Comentario más útil

No publiques en hilos que estén cerrados durante años. En su lugar, abra una nueva edición, proporcione su archivo dae y el código three.js respectivo.

Todos 3 comentarios

Debería poder hacer algo como esto:

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

No funcionó, me encuentro con el mismo problema.
este es mi objeto collada.scene
image

No publiques en hilos que estén cerrados durante años. En su lugar, abra una nueva edición, proporcione su archivo dae y el código three.js respectivo.

¿Fue útil esta página
0 / 5 - 0 calificaciones