PRESENTAZIONE E CONDIVISIONE DI MODELLI 3D (NUVOLE DI PUNTI E MESH)
Ciao!
Oggi ti parlerò di un argomento molto importante che riguarda ancora i modelli tridimensionali, ma che non tratta della loro realizzazione, bensì di ciò che avviene dopo. Sul modello ci puoi lavorare: estrarre sezioni, piani quotati, ortofoto, ecc. Oppure puoi farci una presentazione, come nel caso di un modello di un oggetto, ad esempio. Finché sei tu a lavorarci, non ci sono problemi; lo hai realizzato, quindi hai anche tutti gli strumenti che servono per analizzarlo. I problemi nascono quando il tuo modello deve essere condiviso con altri. Non parlo della quantità di gigabyte che devi inviare al tuo committente (che potrebbe comunque dare dei problemi). Parlo del fatto che, molto spesso, chi ti ha commissionato il lavoro non ha gli strumenti, tipo hardware e software, per indagare il tuo modello, oppure non ha le conoscenze informatiche per farlo. Il tuo modello, quindi, potrà essere gestito solo da te.
Quello che ti voglio proporre oggi è un metodo per presentare i tuoi modelli tridimensionali; che siano derivati dalla fotogrammetria, dal laser scanning o da un tastatore 3D, non importa. Lo scopo è quello di creare una presentazione del tuo modello che sia facilmente fruibile, senza necessità di grandi risorse hardware e senza software specifici. L’utente, inoltre, dovrà poter ricavare alcune informazioni, tipo prendere misure o coordinate di punti. Sembra tutto troppo bello? Si può fare, credimi. Come al solito, non ho inventato nulla di nuovo. Nell’articolo citerò tutte le risorse che dovresti usare. Ho scritto apposta “dovresti” perché, in realtà, ti ho preparato una procedura che ti permetterà di ridurre di molto il tuo lavoro di preparazione. Nella prima parte ti mostrerò tutti i passaggi per ottenere il risultato, ma mi rendo conto che sarà gestibile solo dai più “smanettoni”. Nella seconda parte, invece, ti spiegherò la mia scorciatoia quindi, se non sei uno smanettone, comincia a leggere da lì. Io ti consiglio, comunque, di leggere anche la prima parte perché in realtà non è di difficile comprensione; è un po’ macchinosa, ma una volta che ci hai preso la mano riuscirai ad introdurre anche delle variazioni rispetto a quello che ti mostrerò io. Il risultato che otterrai sarà come quello rappresentato nell’immagine seguente. Puoi cliccarci sopra e ti si aprirà un visualizzatore con vari strumenti. Dacci un’occhiata prima di continuare.
Bene. Cominciamo!
SOFTWARE NECESSARI
Il primo software di cui avrai bisogno, oltre a quello con cui hai generato il modello 3D, è quello che ti permetterà di visualizzarlo. Io ho utilizzato 3DHOP (3D Heritage Online Presenter) realizzato dal Visual Computing Laboratory – ISTI – CNR. Come scritto sulla loro pagina internet, 3DHOP è un pacchetto software open-source per la creazione di presentazioni web interattive di modelli 3D ad alta risoluzione orientati al campo del patrimonio culturale. Vedrai che andrà più che bene anche per il rilievo del territorio o di edifici. 3DHOP crea la pagina web del visualizzatore, ma il modello deve prima essere trattato. Per farlo va usato il software NEXUS dei medesimi autori. Puoi scaricare i due software accedendo alla pagina download del sito 3DHOP oppure cliccando sui due pulsanti seguenti. Infatti li ho caricati anche sul mio web server così sono certo che rimarranno sempre disponibili.
Il secondo software di cui avrai bisogno è un editor di codice html. Io utilizzo BlueGriffon. Dalla pagina download puoi scaricare la versione adatta al tuo hardware.
Bene. Adesso vediamo come interagire con questi software.
PREPARAZIONE DEL MODELLO
Prima di tutto è necessario preparare il modello che vuoi presentare. 3DHOP può trattare modelli a singola risoluzione o in multi-risoluzione. I primi sono tipicamente modelli a bassa qualità e di dimensioni inferiori a 1 MB. I secondi, invece, possono essere anche texturizzati e contenenti decine di milioni di triangoli (1-100 milioni). In entrambi i casi può trattarsi di nuvole di punti, ma anche di mesh. Inutile dire che, quando si parla di CNR e di mesh, c’è di mezzo Meshlab; un’altro software open-source di altissimo livello per la manipolazione delle mesh. Infatti, tale software può essere utilizzato per generare il file .ply da dare in pasto a 3DHOP. In questa sede, però, non ti mostrerò il suo utilizzo. Infatti il modello 3D a cui mi riferirò è tratto da un’elaborazione fotogrammetrica ed i software che fanno questo genere di elaborazioni possono già esportare in formato .ply, sia la nuvola di punti, sia la mesh. Se utilizzi Agisoft Metashape, ad esempio, devi andare nel menù File>Export>Export Model… e scegliere il formato .ply. La cosa a cui devi prestare attenzione però, è il sistema di riferimento con cui stai lavorando. Come spesso accade, anche NEXUS non digerisce bene i numeri con molte cifre, tipo le coordinate cartografiche dei sistemi di riferimento in uso in Italia (ETRF89, ERTF2000). Ti consiglio, quindi, di shiftare il modello in modo tale da ottenere coordinate planimetriche con poche cifre. Puoi farlo al momento dell’esportazione, l’importante è che ti segni di quanto shifti perché poi dovrai comunicarlo al tuo committente. Non esportare le normali in quanto ci penserà NEXUS a calcolarle.
Ricorda, puoi esportare il .ply sia per la nuvola di punti densa, sia per la mesh. Io le ho esportate entrambe ed ho salvato due file: nuvola.ply e mesh.ply.
CONVERSIONE DEL MODELLO
Il modello .ply deve essere convertito in un formato che sia simpatico a 3DHOP. Si tratta di un formato proprietario e la conversione avviene attraverso l’utilizzo di NEXUS. La procedura è davvero molto semplice. La prima cosa che devi fare è scompattare il file Nexus_4.2.zip che hai scaricato prima. Nella cartella scompattata troverai i due file eseguibili che ci interessano: nxsbuild.exe e nxscompress.exe.
A questo punto copia i file nuvola.ply e mesh.ply nella cartella scompattata.
Prendi mesh.ply e trascinalo sopra nxsbuild.exe. Si aprirà una finestra di comando DOS dalla quale potrai vedere il progresso dell’elaborazione.
Alla chiusura della finestra DOS troverai nella cartella il file mesh.nxs.
Ora clicca su mesh.nxs e trascinalo su nxscompress.exe. Anche in questo caso si aprirà una finestra di comando DOS e quando sparirà nella cartella troverai un file mesh.nxz.
Ora ripeti la stessa cosa per nuvola.ply fino ad ottenere nuvola.nxz.
A questo punto il lavoro con NEXUS è terminato.
PAGINA WEB PER LA PRESENTAZIONE
Ora che abbiamo il modello bisogna fare in modo che 3DHOP lo legga e lo presenti attraverso il suo visualizzatore web. Potresti utilizzare i template che trovi nell’archivio 3DHOP_4.2.zip, ma non li ritengo adeguati per i nostri scopi. Infatti tali template .html contemplano delle trackball adatte alla presentazione di oggetti (tipo in un museo). Io, invece ti propongo un template con una trackball sferica tipo quella dei software per la modellazione tridimensionale del territorio o di edifici. Pertanto, ho preparato un file .html con tale trackball che puoi scaricare cliccando sul seguente bottone. E’ un file chiamato presentazione.html.
Quello che devi fare adesso è modificare il file presentazione.html utilizzando BlueGriffon. Se lo hai già installato, apri l’html. Io semplicemente trascino l’html sopra l’icona di BlueGriffon. Poi clicca su Sorgente e va alla linea numero 166.
Vedi la scritta modello.nxz? Sostituiscila con mesh.nxz e poi salva con nome: menù File>Salva con nome…>mesh.html. Ecco fatto! La pagina che ti permetterà di visualizzare il modello è stata creata.
Puoi fare la stessa cosa con il file nuvola.nxz. Basta che fai riapri presentazione.html con BlueGriffon, sostituisci modello.nxz con nuvola.nxz e salvi con nome: menù File>Salva con nome…>nuvola.html.
CARICAMENTO DELLA PRESENTAZIONE SUL WEB SERVER
Per prima cosa devi scompattare il file 3DHOP_4.2.zip che hai scaricato prima. Poi devi caricare la cartella minimal sul tuo web server. Per farlo, io utilizzo FileZilla Client, ma puoi utilizzare anche il File Manager online che ti mette a disposizione il tuo provider. Copiala nella posizione che desideri. Nel mio caso www.giampaoloberetta.it/minimal.
Copia i file mesh.html e nuvola.html nella cartella minimal del server.
Copia i due file mesh.nxz e nuvola.nxz nella cartella minimal>models del server.
Se adesso clicchi su https://www.giampaoloberetta.it/minimal/mesh.html dovrebbe apparirti il visualizzatore con la mesh. Se invece clicchi su https://www.giampaoloberetta.it/minimal/nuvola.html dovrebbe apparirti la nuvola di punti.
A questo punto puoi ruotare il modello, sezionarlo, prendere misure, prendere la coordinata di un punto, cambiare la posizione della fonte luminosa, ecc.. Prova! Ricordati però che, se prendi le coordinate di un punto, devi sommare lo shift che avevi impostato durante l’esportazione del file .ply.
Se vuoi creare le presentazioni di altri modelli basta che generi i file .nxz e .html e li carichi sul tuo web server nelle stesse posizioni in cui vedi caricati i precedenti, quindi nella cartella minimal e minima\models.
Un’altra cosa che devo dirti è che il tuo modello, così come è stato caricato sul server, sarà visibile a tutti. Infatti anche tu ora stai guardando i miei modelli senza essere entrato in un’area riservata. Chiunque acceda alla pagina web del modello, lo potrà visualizzare. Se non vuoi che questo accada e vuoi che il modello sia visibile solo a chi vuoi tu, dovresti proteggere la pagina con un UserID ed una password. Se sai come fare, dimmelo, perché io non ho ancora trovato un sistema davvero efficace. Solo tanti barbatrucchi.
Quanto ti ho mostrato fin’ora serve solo a visualizzare il modello 3D ed a compiere delle operazioni semplici, basilari. Se vuoi davvero dare la possibilità di lavorare sul file, devi anche dare la possibilità di scaricarlo, ma in questo caso significa che chi sta dall’altra parte sa già come gestirlo e forse la presentazione fatta con 3DHOP diventa superflua. Diciamo che potrebbe servire per un primo contatto o per presentare il proprio lavoro una volta finito.
Il procedimento che ti ho mostrato fin qui ha validità generale, nel senso che ti permette di gestire tutte le impostazioni della presentazione, basta sapere dove mettere le mani. Ti invito, quindi, a visitare il sito di 3DHOP; nella sezione resources troverai tutto quello che ti serve per personalizzare la presentazione del modello: diversi tipi di trackball, angoli di visualizzazione, colori, trasparenze, hotspot e zone cliccabili, unione di modelli, sostituzione dello sfondo, cambio del titolo della pagina, ecc.. Sul loro sito, nella sezione gallery, puoi vedere degli esempi. Figo!
SCORCIATOIA
Fin’ora ti ho mostrato tutti i passaggi che dovresti fare per realizzare la presentazione del tuo modello. Da qui in poi, invece, ti spiegherò come giungere allo stesso risultato utilizzando una “scorciatoia”. La scorciatoia consiste in una procedura automatizzata inserita in un file batch che prende come input il tuo modello .ply e come output ti restituisce il file .nxz e la pagina .html da caricare sul web server. La scorciatoia deve permetterti di alleggerire il lavoro, quindi alcuni parametri li ho scelti io per te, ma credo che ti andranno bene nella maggior parte dei casi. In alternativa, dovrai smanettare un po’ e ti sarà utile quanto illustrato nei paragrafi precedenti. Vediamo, quindi, di cosa avrai bisogno.
Come prima cosa, se non lo hai ancora fatto, scarica 3DHOP e NEXUS cliccando sui due bottoni seguenti. Salvali in una cartella nel cui percorso non ci siano caratteri strani, tipo ( ) \ /, ecc. altrimenti la procedura si bloccherà.
Scompattali.
I due .zip li puoi anche cancellare.
Poi scarica il file CREA PRESENTAZIONE 3D.zip cliccando sul seguente bottone e scompattalo nella stessa cartella dove risiede Nexus_4.2.
Dal .zip usciranno tre file che non verranno mai modificati durante la creazione della presentazione, quindi li potrai riutilizzare così come sono senza scompattare nuovamente il .zip.
Nell’esempio che segue prenderò come modello una nuvola di punti che avevo generato con la tecnica fotogrammetrica e che poi avevo elaborato con Cloud Compare. Puoi vedere come ho fatto leggendo l’articolo sul mio blog. La nuvola è stata esportata da Cloud Compare in formato .ply ottenendo il file vaso.ply (salvalo in formato binario).
Ora devi cliccare due volte sul file CREA PRESENTAZIONE.BAT ed inserire vaso quando ti viene chiesto. Poi premi invio ed attendi il termine della procedura.
Nella cartella troverai i file vaso.html e vaso.nxz da caricare sul server.
Per caricare i file .html e .nxz sul server, leggi il paragrafo CARICAMENTO DELLA PRESENTAZIONE SUL WEB SERVER che trovi sopra e procedi per analogia con quanto ivi spiegato.
Ed ecco il risultato. Clicca sull’immagine seguente.
Come avrai notato, con la scorciatoia non serve che installi nessun software. Ti basta scaricare i tre archivi 3DHOP, NEXUS e CREA PRESENTAZIONE 3D. Può sembrarti macchinosa anche questa seconda strada, ma è solo perché ti ho mostrato anche i passaggi più banali. Vedrai che è tutto molto semplice.
Bene! Con questo avrei terminato. In realtà, qui sotto trovi anche un video che ho caricato su YouTube nel quale ti faccio vedere tutti i passaggi e ti spiego alcune personalizzazioni.
Ti ricordo che mi trovi anche su Telegram (https://t.me/giampaoloberetta) dove ho aperto un canale nel quale ti parlo della mia attività e condivido informazioni (https://t.me/inggiampaoloberetta). Lì troverai anche articoli ed informazioni provenienti da altre fonti.
Ciao e grazie!
Grazie e complimenti.
Ottimo lavoro, ho provato con three js ma il risultato proposto è migliore di quello da me ottenuto.
Mattia Zanon
Ciao Mattia,
non conoscevo three js.
Grazie.
Grazie Giampaolo
davvero molto interessante.
Provato… ed è spettacolare!
Bene. Grazie. Ciao.
buongiorno, molto interessante. Solo che dopo vari tentativi (alcuni anche riusciti, tranne la parte “server”) non riesco più ad aprire html creato. Come mai? si apre solo pagina con i tools e lo sfondo ma non vedo la nuvola. Anche se provo ad aprire presentazione o index_all_tools succede la sessa cosa. Come mai?
Buona sera,
prima di aprire la pagina .html, verifichi di non avere già aperta una sessione del browser.
Distinti saluti.
Esiste un modo per misurare anche un’area?
Purtroppo no. Gli strumenti che vengono forniti sono basilari.