Theater at top level in menu

This commit is contained in:
2026-04-08 10:59:58 +02:00
parent c6e0314769
commit 556086117b
4 changed files with 117 additions and 120 deletions

228
config.js
View File

@@ -44,120 +44,120 @@ export const config = {
uri : `${BASE_URI}/scenes/ssgp/`, uri : `${BASE_URI}/scenes/ssgp/`,
popup: theater2Popup, popup: theater2Popup,
coords: [45.4401, 12.3408], coords: [45.4401, 12.3408],
nodes: [ nodes: {
{ label: 'Teatro',
label: 'Teatro', model: 'models/ssgp/Teatro_SSGP_Full_ConSottrazioni.glb',
children: [ opacity: 0.0,
/* children: [
{ /*
label: 'Struttura complessiva', {
model: 'models/ssgp/Teatro_SSGP_Full_ConSottrazioni.glb', label: 'Struttura complessiva',
}, model: 'models/ssgp/Teatro_SSGP_Full_ConSottrazioni.glb',
*/ },
{ */
label: 'Involucro', {
model: 'models/ssgp/Teatro_SSGP_Layer_Struttura_parete_di_fondo.glb', label: 'Involucro',
isMain: true, model: 'models/ssgp/Teatro_SSGP_Layer_Struttura_parete_di_fondo.glb',
opacity: 0.2, isMain: true,
}, opacity: 0.2,
] },
}, {
{ label: 'Sala / Auditorium',
label: 'Sala / Auditorium', children: [
children: [ {
{ label: 'Peplano / Platea',
label: 'Peplano / Platea', model: 'models/ssgp/Teatro_SSGP_Platea_peplano.glb',
model: 'models/ssgp/Teatro_SSGP_Platea_peplano.glb', },
}, {
{ label: 'Ordini di palchi',
label: 'Ordini di palchi', children: [
children: [ {
{ label: 'Ordine 1',
label: 'Ordine 1', model: 'models/ssgp/Teatro_SSGP_Ordine1.glb',
model: 'models/ssgp/Teatro_SSGP_Ordine1.glb', },
}, {
{ label: 'Ordine 2',
label: 'Ordine 2', model: 'models/ssgp/Teatro_SSGP_Ordine2.glb',
model: 'models/ssgp/Teatro_SSGP_Ordine2.glb', },
}, {
{ label: 'Ordine 3',
label: 'Ordine 3', model: 'models/ssgp/Teatro_SSGP_Ordine3.glb',
model: 'models/ssgp/Teatro_SSGP_Ordine3.glb', },
}, {
{ label: 'Ordine 4',
label: 'Ordine 4', model: 'models/ssgp/Teatro_SSGP_Ordine4.glb',
model: 'models/ssgp/Teatro_SSGP_Ordine4.glb', },
}, {
{ label: 'Ordine 5',
label: 'Ordine 5', model: 'models/ssgp/Teatro_SSGP_Ordine5.glb',
model: 'models/ssgp/Teatro_SSGP_Ordine5.glb', },
}, ]
] },
}, {
{ label: 'Parapetto',
label: 'Parapetto', model: 'models/ssgp/Teatro_SSGP_parapetto_scala_piani.glb',
model: 'models/ssgp/Teatro_SSGP_parapetto_scala_piani.glb', },
}, {
{ label: 'Percorsi pubblico',
label: 'Percorsi pubblico', model: 'models/ssgp/Teatro_SSGP_Percorsi_scale_corridoi.glb',
model: 'models/ssgp/Teatro_SSGP_Percorsi_scale_corridoi.glb', },
}, ]
] },
}, {
{ label: 'Scena',
label: 'Scena', children: [
children: [ {
{ label: 'Palcoscenico',
label: 'Palcoscenico', model: 'models/ssgp/Teatro_SSGP_Palcoscenico.glb',
model: 'models/ssgp/Teatro_SSGP_Palcoscenico.glb', },
}, {
{ label: 'Boccascena / Proscenio',
label: 'Boccascena / Proscenio', model: 'models/ssgp/Teatro_SSGP_Boccascena.glb',
model: 'models/ssgp/Teatro_SSGP_Boccascena.glb', },
}, {
{ label: 'Quinte architettoniche fisse',
label: 'Quinte architettoniche fisse', model: 'models/ssgp/Teatro_SSGP_Layer_quinte_architettoniche_fisse.glb',
model: 'models/ssgp/Teatro_SSGP_Layer_quinte_architettoniche_fisse.glb', },
}, {
{ label: 'Quinte architettoniche mobili',
label: 'Quinte architettoniche mobili', model: 'models/ssgp/Teatro_SSGP_Layer_quinte_architettoniche_mobili.glb',
model: 'models/ssgp/Teatro_SSGP_Layer_quinte_architettoniche_mobili.glb', },
}, ]
] },
}, {
{ label: 'Spazi tecnici',
label: 'Spazi tecnici', children: [
children: [ {
{ label: 'Spazio tecnico superiore',
label: 'Spazio tecnico superiore', model: 'models/ssgp/Teatro_SSGP_Layer_Spazio_tecnico_sup_soffitta.glb',
model: 'models/ssgp/Teatro_SSGP_Layer_Spazio_tecnico_sup_soffitta.glb', children: [
children: [ {
{ label: 'Graticcia',
label: 'Graticcia', model: 'models/ssgp/Teatro_SSGP_Graticcia.glb',
model: 'models/ssgp/Teatro_SSGP_Graticcia.glb', },
}, {
{ label: 'Ballatoio',
label: 'Ballatoio', model: 'models/ssgp/Teatro_SSGP_Ballatoio.glb',
model: 'models/ssgp/Teatro_SSGP_Ballatoio.glb', },
}, {
{ label: 'Spazio tecnico inferiore',
label: 'Spazio tecnico inferiore', model: 'models/ssgp/Teatro_SSGP_Spazio_tecnico_inf.glb',
model: 'models/ssgp/Teatro_SSGP_Spazio_tecnico_inf.glb', },
}, ]
] },
}, ]
] },
}, {
{ label: 'Orchestra',
label: 'Orchestra', children: [
children: [ {
{ label: 'Fossa orchestra',
label: 'Fossa orchestra', model: 'models/ssgp/Teatro_SSGP_Fossa_orchestra.glb',
model: 'models/ssgp/Teatro_SSGP_Fossa_orchestra.glb', },
}, ]
] }
} ]
], },
pano: `pano/gradient.jpg`, pano: `pano/gradient.jpg`,
} }
], ],

View File

@@ -77,7 +77,7 @@ function loadNodes(nodes) {
node.setRotation(0, 1.5, 0); node.setRotation(0, 1.5, 0);
// Apply any transparency before attaching to scene // Apply any transparency before attaching to scene
if (n.opacity) { if (n.opacity !== undefined && n.opacity !== null) {
node.setMaterial(new THREE.MeshPhongMaterial({ node.setMaterial(new THREE.MeshPhongMaterial({
transparent: true, transparent: true,
opacity: n.opacity, opacity: n.opacity,

View File

@@ -25,7 +25,7 @@ const contentMenuTabs = `
<!-- Tab panes --> <!-- Tab panes -->
<div class="tab-content ps-4 ms-3 overflow-y-auto"> <div class="tab-content ps-4 ms-3 overflow-y-auto">
<div class="tab-pane active p-3 ms-3" id="layer" role="tabpanel" aria-labelledby="layer-tab" tabindex="0"></div> <div class="tab-pane active p-3 ms-2" id="layer" role="tabpanel" aria-labelledby="layer-tab" tabindex="0"></div>
<div class="tab-pane p-3" id="media" role="tabpanel" aria-labelledby="media-tab" tabindex="0"></div> <div class="tab-pane p-3" id="media" role="tabpanel" aria-labelledby="media-tab" tabindex="0"></div>
</div> </div>
`; `;

View File

@@ -62,10 +62,7 @@ function traverse(node, flatList, depth = 1) {
**/ **/
export function normalizeNodes (nodes) { export function normalizeNodes (nodes) {
let flatList = []; let flatList = [];
traverse(nodes, flatList);
for (let node of nodes) {
traverse(node, flatList);
}
return flatList; return flatList;
} }