Как отобразить один и тот же объект несколько раз в Three.js

#javascript #three.js

#javascript #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);
 

Как вы можете видеть, я объединил 10 геометрий в один объект под названием «Бастион». Теперь я хотел бы добавить этот объект в сцену еще 3 раза с разными позициями. Как я мог это сделать? Когда я пытаюсь добавить его в сцену, последний, который я добавил, исчезает. Есть ли способ сделать это или мне нужно создать еще 30 геометрий вручную и рассчитать их требуемые позиции? Я новичок, поэтому прошу прощения за мой глупый вопрос

Ответ №1:

Я провел свое исследование и нашел решение. Мне просто нужно было клонировать свой объект следующим образом:

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