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