scylla0120
scylla0120

Reputation: 131

How to display the same object multiple times in Three.js

        var vertgeometry = new THREE.BoxGeometry(75,75,150);
        var vertmaterial = new THREE.MeshPhongMaterial ( {
            color: 0xFFFFFF,
            wireframe: true
        });
        var vert = new THREE.Mesh(vertgeometry, vertmaterial);
        vert.rotation.x = -Math.PI * 0.5;
        vert.position.z = 0;
        vert.position.x = 0;
        vert.position.y = 75;
        vert.recaiveShadow = true


        var kogeometry = new THREE.BoxGeometry(15,15,15);
        var komaterial = new THREE.MeshPhongMaterial ({
            color: 0xFFFFFF,
            wireframe: true
        });
        var ko1 = new THREE.Mesh(kogeometry, komaterial);
        ko1.position.z = -30;
        ko1.position.x = -30;
        ko1.position.y = 157.5;


        var ko2 = new THREE.Mesh(kogeometry, komaterial);

        ko2.position.set(0,157.5,-30);

        var ko3 = new THREE.Mesh(kogeometry, komaterial);

        ko3.position.set(30,157.5,-30);

        var ko4 = new THREE.Mesh(kogeometry, komaterial);

        ko4.position.set(30,157.5,0);

        var ko5 = new THREE.Mesh(kogeometry, komaterial);

        ko5.position.set(30,157.5,30);


        var ko6 = new THREE.Mesh(kogeometry, komaterial);

        ko6.position.set(30,157.5,30);

        var ko7 = new THREE.Mesh(kogeometry, komaterial);

        ko7.position.set(0, 157.5, 30);

        var ko8 = new THREE.Mesh(kogeometry, komaterial);

        ko8.position.set(-30,157.5, 30);

        var ko9 = new THREE.Mesh(kogeometry, komaterial);

        ko9.position.set(-30, 157.5, 0);


        Bastion = new THREE.Object3D();
        Bastion.add(vert, ko1, ko2, ko3, ko4, ko5, ko6, ko7, ko8, ko9);
        scene.add(Bastion);

As you can see I merged 10 geometries into one object called 'Bastion'. Now I'd like to add this object to the scene 3 more times with different positions. How could I do that? When I try to add it to the scene the last one I added dissapears. Is there a way to do so or do I have to create 30 more geometries manually and calculate their required positions? I'm a beginner so sorry for my foolish question

Upvotes: 0

Views: 669

Answers (1)

scylla0120
scylla0120

Reputation: 131

I did my research and found the solution. I just had to clone my object like this:

var second = Bastion.clone();
        second.position.set(100,100,100);
        second.add(second);

Upvotes: 2

Related Questions