Three.js: 如何在程序中克隆模型

创建于 2012-02-20  ·  3评论  ·  资料来源: mrdoob/three.js

你好,我想在我的程序中加载一个 dae 模型,例如一个茶壶,我想在场景中有 10 个茶壶我使用克隆函数如下,但对象似乎引用了它的父级,然后引用了它自己所以我不能克隆它,我怎么能有我的对象的 10 个副本?

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

最有用的评论

请不要在关闭多年的帖子中发帖。 而是打开一个新问题,提供您的dae文件和相应的three.js代码。

所有3条评论

你应该能够做这样的事情:

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

它没有用,我遇到了同样的问题。
这是我的 collada.scene 对象
image

请不要在关闭多年的帖子中发帖。 而是打开一个新问题,提供您的dae文件和相应的three.js代码。

此页面是否有帮助?
0 / 5 - 0 等级