scene = {
const scene = new THREE.Scene();
scene.background = new THREE.Color(0x001b42);
genererFigures.figures.forEach((fig) => {
var geometry, edgeGeometry;
if (fig.geometry.type === "ExtrudeGeometry") {
var shape = new THREE.Shape();
fig.geometry.shapeArgs.forEach((d) => shape[d.draw](...d.drawArgs));
geometry = new THREE.ExtrudeGeometry(shape, fig.geometry.extrudeSettings);
geometry.center();
edgeGeometry = new THREE.EdgesGeometry(geometry);
} else {
geometry = new THREE[fig.geometry.type](...fig.geometry.args);
geometry.center();
edgeGeometry = new THREE.EdgesGeometry(geometry);
}
var pos = new THREE.Vector3(fig.pos.x, fig.pos.y, fig.pos.z);
var rot = new THREE.Vector3(fig.rot.x, fig.rot.y, fig.rot.z);
var scale;
if (fig.scale) {
scale = new THREE.Vector3(fig.scale.x, fig.scale.y, fig.scale.z);
}
if (fig.lines) {
const line = new THREE.LineSegments(edgeGeometry, lineMaterial);
line.position.set(pos.x, pos.y, pos.z);
line.rotation.set(rot.x, rot.y, rot.z);
if (fig.scale) {
line.scale.set(scale.x, scale.y, scale.z);
} else {
line.scale.set(1, 1, 1);
}
scene.add(line);
}
if (fig.hatch) {
const hatch = new THREE.Mesh(geometry, hatchMaterial);
hatch.position.set(pos.x, pos.y, pos.z);
hatch.rotation.set(rot.x, rot.y, rot.z);
if (fig.scale) {
hatch.scale.set(scale.x, scale.y, scale.z);
} else {
}
scene.add(hatch);
}
if (fig.full) {
const full = new THREE.Mesh(geometry, fullMaterial);
full.position.set(pos.x, pos.y, pos.z);
full.rotation.set(rot.x, rot.y, rot.z);
if (fig.scale) {
full.scale.set(scale.x, scale.y, scale.z);
}
scene.add(full);
}
});
return scene;
}