# Necropoli Aga Khan — paesaggio offline EIMAWA

Scena di lavoro aggiornata il 17 settembre 2026: area di 900 × 900 m, terreno, accesso sterrato dalla riva del Nilo, strada in tafla mista a cemento, mausoleo con cinta, acqua e feluca ormeggiata. BASE e AGH040 del 13 settembre 2026, AGH035 EoD del 21 maggio 2023 e AGH018 del 21 maggio 2023 sono incluse **senza la mesh INVOLUCRO**, come richiesto. La strada cementata è una soletta appoggiata al piano di campagna, spessa 0,15 m; questo dato viene dall’osservazione sul posto fornita dall’utente.

## File

- `NECROPOLI_AGA_KHAN.blend`: scena con texture incorporate e scansioni a piena risoluzione.
- `necropoli_complete.glb`: scena completa autonoma, con texture incorporate.
- `necropoli_game.glb`: derivato più leggero per Three.js; BASE e AGH040 semplificate al 42%, AGH035 e AGH018 al 12% dei triangoli e texture fino a 2048 px. L’originale Blender conserva il dettaglio pieno.
- `necropoli_terrain.glb`: terreno, strada, forme di superficie interpretate, mausoleo, cinta, acqua e feluca.
- `necropoli_collision.glb`: terreno asciutto, strada, scansioni semplificate, cinta, mausoleo, feluca e passerella per le collisioni. Non è destinato alla visualizzazione.
- `georeference.json`, `site_placement.json`, `additional_surveys.json`, `routes.json`: origine, trasformazione del gruppo di rilievi, percorsi e fonti.
- `panorama.png`, `raccordo_tombe.png`, `strada_15cm.png`: verifiche Blender di una versione precedente, conservate per confronto.
- `altre_tombe.png`, `panorama_ricostruzioni.png`: viste della ricostruzione delle altre forme del catalogo.
- `raccordo_39_retro.png`, `tomba18_raccordo_roccioso.png`, `tomba18_vista_nilo.png`: verifiche dei raccordi aggiornati.
- `reconstructed_tombs.json`: registro completo delle fonti, delle associazioni provvisorie e delle assunzioni per ciascuna forma.
- `reconstruction_views.json`: catalogo compatto per il gioco; `landscape_repairs.json`: raccordi interpretativi della 39 e della 18.

## Anteprima offline

Le librerie Three.js sono già nella cartella `lib`. Non serve una connessione Internet. Un server locale serve a caricare i moduli e i file GLB nel browser:

```sh
cd /Users/riccardogiovanelli/Script/EIMAWA
python3 -m http.server 8127 --bind 127.0.0.1 --directory _world/output
```

Aprire `http://127.0.0.1:8127/`. Le destinazioni permettono di entrare direttamente sul piano delle tombe 38–40, presso la 35 e la 18, all’approdo, al mausoleo o sulla strada. «Mappa 3D» offre rotazione, zoom e panoramica. Il percorso dal Nilo dura 50 secondi e termina in esplorazione libera.

- WASD / frecce: movimento; mouse: guarda; Esc: libera il mouse.
- Andatura: 2,6 / 6 / 10 m/s; Maiusc: velocità ×2,3.
- C: accovacciati, ingombro circa 78 cm; premere di nuovo per rialzarsi.
- X: striscia, ingombro circa 44 cm e avanzamento 0,8 m/s; premere di nuovo per rialzarsi.
- Il personaggio si rialza soltanto se il soffitto lo consente. Spazio salta in posizione eretta; M apre la mappa.
- Suono facoltativo: vento e passi sintetizzati localmente. Nessun audio remoto.

Il controller usa una capsula con collisioni tridimensionali, gravità, piccoli gradini e appoggio in discesa. I controlli di integrazione sono in `walk_validation.json`; comprendono passaggi alti 85 cm e 51 cm e il tentativo di rialzarsi sotto un soffitto basso. Il controllo sul GLB esportato percorre anche tutti i 150 punti dell’accesso laterale alla 18, in entrambi i sensi, accovacciandosi vicino al passaggio basso, senza recuperi dopo cadute. Il controllo dei gradini guarda davanti alla capsula; l’appoggio sulle superfici irregolari delle scansioni non spinge più il visitatore indietro. Questo non implica che ogni interno sia stato rilevato: il movimento nelle tombe è limitato dalla geometria disponibile.

Il cielo atmosferico, le ombre mobili, la foschia e i materiali minerali multiscala sono renderizzati da `game.js` / `environment.js`. Gli effetti runtime richiedono il visualizzatore; non sono incorporati come shader speciali nei GLB standard. Le due texture generative sono salvate in `assets/`, con prompt e provenienza. Sono materiali visivi interpretativi, non fotografie del sito.

## Altre tombe e forme del paesaggio

«Altre tombe» apre il catalogo: scegliere un riferimento, guardarlo dall’alto oppure premere «Avvicinati» per esplorarlo a piedi. I contorni evidenziati sono facoltativi. La scheda distingue la fonte della forma dalle profondità e dai dettagli ricostruiti.

Sono stati incrociati i **220 riferimenti della pianta** del progetto di analisi Aga Khan e i **129 poligoni della ricognizione 2023**. Le sovrapposizioni geometriche sono associate in modo provvisorio, mantenendo tutti i riferimenti originali; non costituiscono un’identificazione archeologica. Dieci forme candidate ricadono nel settore protetto delle scansioni e non sono sovrapposte ai rilievi originali. La scena contiene **297 forme di superficie interpretate**: 142 accessi con gradini, 123 cavità, 23 depressioni poco profonde e 9 cumuli. Questo **non è un conteggio di 297 tombe confermate**: sono presenti anche forme naturali o indeterminate.

Per 123 forme la base è il poligono di campo; per 166 la forma del simbolo in pianta; per 8 una proposta geometrica ricavata dalle ombre dell’immagine aerea. Queste ultime restano da verificare. I centri della pianta conservano l’allineamento provvisorio del progetto, indicativamente nell’ordine di 2–5 m; per P027 e P028 è mantenuta la correzione locale già documentata. La numerazione della pianta è distinta da quella dei segnaposto EIMAWA: vicinanza e numero non sono stati usati come prova di identità.

La ricostruzione comprende scavi aperti, gradini consumati, bordi rocciosi e detrito. Profondità, lato di discesa, gradini e pietre sono interpretativi; l’orientamento del lato di discesa è una proposta basata sulla quota del terreno, non un azimut rilevato dell’ingresso. Le fotografie di campo guidano la tipologia visiva, senza assumere che il GPS del fotografo sia la posizione esatta del soggetto. **Non sono ricostruite camere sotterranee non documentate.** La scena riunisce fonti di epoche diverse e non rappresenta una fase cronologica certificata della necropoli.

I controlli `reconstruction_validation.json` verificano la presenza dei 220 riferimenti, la protezione delle scansioni e tre avvicinamenti a piedi sul collider esportato; i percorsi esistenti sono verificati insieme. Le forme si trovano anche nei file Blender e GLB autonomi, non soltanto nell’interfaccia del gioco.


## Geografia e precisione

Il terreno usa UTM 36N, EPSG:32636, in metri, con origine **E 487587.0817, N 2664097.0901, H 133.5513**. Blender: X est, Y nord, Z quota. glTF/Three.js: X est, Y quota, Z sud. I GLB consegnati hanno già le trasformazioni applicate nella gerarchia; importarli con trasformazione identità.

Il precedente abbinamento diretto fra coordinate locali delle scansioni e nord UTM non corrispondeva alla disposizione indicata dall’utente. La nuova scena contiene un **aggancio visivo provvisorio** dell’intero gruppo, con rotazione e traslazione rigide, scala 1, quote invariate. I file originali e l’allineamento reciproco delle scansioni non sono stati modificati. L’oggetto vuoto `AGGANCIO SITO` in Blender permette di correggerlo.

I segnaposto utente 38 e 39 provengono dal KML salvato; il 40 è stato letto dalle proprietà di Google Earth (32°52′40.54″ E, 24°5′20.97″ N). Sono stati associati a zone riconoscibili, interpretate nella vista dall’alto delle scansioni. Lo scarto di circa **1,77 m** riguarda questi riferimenti indicativi: **non certifica precisione GPS**. Il contorno BASE disegnato dall’utente era soltanto indicativo ed è stato escluso dal calcolo. I punti e tutte le assunzioni sono in `site_placement.json`.

Il DEM Copernicus ha passo nativo di circa **30 m**. La maglia più fitta serve a modellare percorsi e raccordi e non aggiunge rilievo misurato. L’immagine QField 2022 ha pixel di 0,5 m, che non vanno confusi con precisione geometrica o risoluzione ottica verificata. Le scansioni di BASE/40 sono del 2026 e quelle di 35/18 del 2023: il fondo fotografico rappresenta una fase precedente dello scavo.

Le strade seguono i tracciati forniti dall’utente, confrontati con l’immagine del progetto e i collegamenti OpenStreetMap. Larghezze, piccoli raccordi, finiture e l’ultimo accesso alle tombe sono ricostruiti. Le quote derivano dal DSM e da raccordi locali; non sono profili stradali rilevati. I circa 15 cm della soletta sono invece il dato specifico fornito dall’utente. Non è stato applicato uno scavo sotto la soletta. La porzione della strada a nord del riquadro, verso il monastero, resta fuori da questo asset.

Il datum verticale delle scansioni non è specificato nei metadati disponibili; il DEM usa EGM2008. Il raccordo visivo non sostituisce una trasformazione altimetrica certificata. Il mausoleo e la cinta sono ricostruiti in volume; gli altri edifici e la vegetazione restano rappresentati dalla fotografia di fondo. La scena completa non è una singola mesh manifold: le cavità archeologiche rimangono aperte e le superfici rilevate restano separate.

## Fonti e attribuzioni

- Scansioni e immagine QField `EIMAWA2023/aswan_ground_truthing/AS_23_07_2022_QFIELD.tif`: dati forniti nel progetto. La provenienza commerciale/licenza di redistribuzione dell’immagine non è stata stabilita; questa cartella è una derivazione locale di lavoro.
- Copernicus GLO-30: https://dataspace.copernicus.eu/explore-data/data-collections/copernicus-contributing-missions/collections-description/COP-DEM — DOI https://doi.org/10.5270/ESA-c5d3d65.
- produced using Copernicus WorldDEM-30 © DLR e.V. 2010-2014 and © Airbus Defence and Space GmbH 2014-2018 provided under COPERNICUS by the European Union and ESA; all rights reserved.
- © OpenStreetMap contributors, https://www.openstreetmap.org/copyright, ODbL 1.0. La geometria OSM scaricata è conservata in `../sources/osm_context.osm` e `../sources/osm_context.json`; `roads_and_buildings.json` riporta i riferimenti originali.
- Nessun modello 3D è stato estratto da Google Earth. Sono stati letti i segnaposto e i tracciati disegnati dall’utente per l’aggancio indicativo e le strade.

## Riproducibilità

Gli script sono nella cartella superiore `_world`: `acquire.py`, `inspect_site.py`, `survey_footprint.py`, `place_site.py`, `roads.py`, `prepare.py`, `build_blender.py`, `finalize_glb.py`. La copia della scena di partenza è `../sources/site_snapshot.blend`. La pipeline centrale EIMAWA e il suo esploratore non sono stati sovrascritti.

Con le fonti e gli agganci già preparati, l’ordine di aggiornamento è `site_context.py` → `reconstruct_tombs.py` → `prepare.py` → `reconstruction_views.py` → `site_context.py --geometry` → `build_blender.py` → `finalize_glb.py`. Per contenere memoria e spazio temporaneo, usare `build_blender.py -- --no-game`, poi aprire il Blender generato in un nuovo processo ed eseguire `export_game.py`, infine `finalize_glb.py`. `landscape_joins.py` separa il bordo del terreno interpretato dalla proiezione dei frammenti sotterranei; `blender_reconstruction.py` genera il detrito. `test_reconstruction.mjs` include anche i controlli di movimento precedenti.

## AGH035 e AGH018

I due OBJ selezionati sono `EIMAWA2023/AGH035_21_May_EoD_16_33_33/textured_output.obj` e `EIMAWA2023/TOMB_18_2_16_42_41/textured_output.obj`. La data nominale di acquisizione è distinta dalla data di esportazione del file. `AGH035_final.blend` contiene cinque fasi di scavo (15, 16, 17, 18 e 21), senza un oggetto separato per gli interni: non sono state sovrapposte fasi vecchie a quella finale.

Il centro planimetrico di ogni modello è agganciato al relativo punto di `_satellite/eimawa/EIMAWA.kml`. Le aperture sono orientate indicativamente verso est, secondo l'osservazione dell'utente, identificando il lato di accesso nella mesh isolata. Un solo punto KML non determina l'azimut; questo orientamento non è misurato. Le quote sono raccordate al DEM, non ricavate dall'altitudine KML clampToGround. I vertici sorgente conservano esattamente le coordinate locali; nella copia di lavoro sono rimosse soltanto facce duplicate o degeneri.

Il terreno attorno alla 18 è trattato come bordo roccioso, non come distesa di sabbia: la scarpata concentra il dislivello del DEM e include un raccordo pedonale laterale interpretativo. La forma di dettaglio non deriva da un rilievo della cliff. `access18.json` registra il collegamento.

Le pareti verticali generate lungo i bordi interni delle scansioni sono state eliminate: interferivano con le viste dagli accessi. Il raccordo esterno ora usa interpolazione armonica; la scena non contiene una scatola attorno ai rilievi.

Le aperture della 35 restano quelle presenti nella scansione, come confermato dall’utente. Non sono stati tagliati accessi nuovi.

Il retro della 39 richiede una distinzione fra bordo dello scavo aperto e frammenti interni della camera: il terreno continua sopra i frammenti sotterranei e si unisce alla sommità rilevata dietro la scala. Il raccordo della 18 scende verso est senza creare un argine davanti all’ingresso, seguendo l’osservazione dell’utente sulla vista verso il Nilo. Queste superfici sono interpretative e conservano tutte le coordinate delle scansioni.


## Strada, cinta, mausoleo e approdo — aggiornamento 17 settembre 2026

Il tracciato in cemento precedente è stato sostituito. Il poligono utente «strada» e il percorso «strada sterrata dall’approdo», letti dai luoghi salvati di Google Earth, sono conservati in `../sources/user_roads_20260917.json`. La carreggiata deriva dall’asse del poligono e dalle sue sezioni: lo scostamento massimo dei bordi interpolati dal disegno è inferiore a 0,8 m, senza attribuire precisione metrica al disegno stesso. La soletta resta appoggiata e spessa 0,15 m. Il collegamento a piedi parte dall’approdo, percorre lo sterrato largo, prosegue sulla strada corretta e raggiunge le tombe con un breve raccordo laterale.

La cinta segue il tracciato OSM 561379659, confrontato con l’immagine del progetto. Comprende i lati nord, ovest e sud fino alla zona della proprietà sul fiume; non è stata inventata una chiusura attraverso il Nilo. Il passaggio all’arrivo della strada resta aperto. Le quote della sommità sono orizzontali sui tratti pianeggianti e rettilinee inclinate o raccordate a piccoli salti sulle salite. L’altezza minima è 2,12 m; le variazioni maggiori dipendono dal terreno sottostante. La quota di almeno 2 m presso AGH039 viene dall’osservazione dell’utente.

Il mausoleo usa l’impronta OSM 300665266. Il volume in arenaria, la cupola, le torrette, le cornici ad arco e il coronamento riprendono la fotografia fornita dall’utente. Altezze e dettagli sono una ricostruzione proporzionale: non è un rilievo architettonico e gli interni non sono ricostruiti.

Il Nilo è una mesh separata, piana, con livello locale H = −50,5 m (circa 83,05 m nel sistema verticale del progetto), stimato dal DEM e non misurato idrometricamente. La riva deriva dalla maschera dell’immagine QField 2022; il terreno sottostante è raccordato al letto del fiume. Nel visualizzatore, `river.js` aggiunge increspature procedurali e riflessi planari di cielo, riva e imbarcazione. I GLB conservano una superficie d’acqua con materiale PBR; animazione e riflessi planari richiedono il visualizzatore.

Presso l’approdo è presente una feluca illustrativa, lunga circa 12,8 m, con fasciame, sedute, albero, antenna latina, tela e cime d’ormeggio. Una passerella la collega alla riva. È un oggetto di ambientazione, non una scansione di un’imbarcazione reale. Il gioco offre i pulsanti **Approdo** e **Mausoleo**.

Le quattro forme interpretative che interferivano con il tracciato corretto o con il contesto costruito sono ora escluse dalla geometria, ma i loro riferimenti rimangono nel catalogo. Tutte le scansioni sono conservate.

Per ricostruire questo aggiornamento: `site_context.py` prepara le fonti; `reconstruct_tombs.py`, `prepare.py`, `reconstruction_views.py` e `site_context.py --geometry` preparano le superfici; seguono `build_blender.py -- --no-renders --no-game`, `export_game.py` in un processo Blender separato, e `finalize_glb.py`. `update_context_blender.py` aggiorna soltanto gli elementi architettonici e dell’approdo, mantenendo terreno e scansioni già salvati.

## Musica durante l’esplorazione

`../music/radio` contiene quattro brani: Deserto, Desair Reverb, Desetno Temple e Temple Pulse. `../music/tomb` contiene Peret em Heru. `prepare_music.py` copia i brani in `music/` e aggiorna il manifesto; eseguirlo dopo aver aggiunto nuovi MP3. Tutti i file vengono serviti localmente, senza servizi esterni.

La Radio parte al primo gesto dell’utente nell’esplorazione. Il passaggio alle camere della 39 e della 18 attiva Tomb dopo 0,65 s di permanenza; l’uscita ripristina Radio dopo 1,25 s. Le dissolvenze durano 2,4 s e il canale uscente viene messo in pausa soltanto alla fine: entrando e uscendo, ogni brano riprende dal punto lasciato. A fine brano la playlist avanza; il singolo brano Tomb si ripete. Le zone audio sono ricavate dagli ingombri delle camere e includono la quota, evitando l’attivazione camminando sopra una tomba.

Musica ed effetti hanno comandi separati; il volume iniziale della musica è 32%. La scheda in secondo piano mette subito in pausa i brani, conservandone la posizione. Il pannello delle informazioni e la schermata iniziale sfumano la musica fino alla pausa. `test_music.mjs` verifica soglie, oscillazioni all’ingresso, dissolvenze, ripresa e pausa; `music_validation.json` riporta gli esiti.

I controlli finali in `context_validation.json` comprendono anche l’attraversamento della cinta lungo la strada e la salita dalla riva alla feluca con lo stesso controller del gioco.
