2012-12-26

SfM - Structure from Motion (seconda parte)

Prima della SfM

Dai primi algoritmi di ricostruzione fotogrammetrica, alla SfM il passo è stato notevole, specie in termini di riduzione della “fatica umana” per la collimazione dei punti.
La fotogrammetria aerea e quella terrestre erano basate sul concetto di stereoscopia. Le foto prese da un aereo venivano considerate due a due, ricostruendo, con dei punti noti sul terreno, il modello stereoscopico, che veniva guardato con uno “stereorestitutore” da un foto-interprete, che tramite un pantografo disegnava le curve di livello, spostando una marca visiva sul modello ottico del terreno.
Successivamente, si è passati da un modello stereoscopico ad un modello prospettico, che permetteva di collimare anche immagini liberamente prese nello spazio.
Dai primi esperimenti prospettici, che sostanzialmente si limitavano a ricostruire il “triangolo delle fughe” e forme scatolari, alla “Multiple View Geometry” (R.Harley e A.Zisserman), si è andato sempre perfezionando un nuovo metodo di rilevamento tridimensionale, che ha portato alla SfM.

Se avete voglia di (tentare di) capire quali sono le implicazioni matematiche (nascoste) dietro gli algoritmi della geometria multipolare, potete guardare il divertente (ed istruttivo) filmato (musicale) di questa pagina:


Anche interessante è questo documento, che descrive la storia (ed il futuro :) della restituzione tridimensionale:


Implementazioni della SfM

PhotoTour

La prima implementazione della tecnica SfM è stata sviluppata nel laboratorio da Noah Snavely e altri (Steve Seitz, Kevin Chiu, Andy Hou del “CSE Graphics and Imaging Lab (GRAIL)” dell'Università di Washington; Richard Szeliski - Interactive Visual Media Group , Microsoft Research).

Il progetto, finanziato da Microsoft, permetteva di posizionare spazialmente le foto turistiche di monumenti scattate dagli utenti, liberamente disponibili in rete.
http://research.microsoft.com/en-us/um/redmond/groups/ivm/PhotoTours/

Successivamente, lo stesso Noah Snavely ha reso disponibile il codice sorgente di “Bundler”, nel sito “PhotoTour”:





Bundler ricostruisce la posizione delle fotocamere e la geometria 3D, in maniera incrementale, incrociando piccoli gruppi di immagini per volta, usando una versione modificata del pacchetto “Sparse Bundle Adjustment” (SBA) di Lourakis e Argyros,

http://www.ics.forth.gr/~lourakis/sba/

Bundler è un porting in linguaggio C++ delle funzioni disponibili fino ad allora soltanto in fortran o in matlab. L'utilizzo del C++ permetteva di far uscire la tecnica SfM dai laboratori e dallo sperimentale, rendendola utilizzabile ed integrabile per un uso professionale.

Un esempio di applicazione di Bundler è stato il progetto “Building Rome in a Day”, in cui si è dimostrato come, ottenendo da Flickr le immagini legate al termine “Rome”, si riesce a ricostruire la forma 3D dei monumenti.

Nel sito http://grail.cs.washington.edu/projects/rome/ vengono mostrati esempi applicati della tecnica SfM tramite Bundler:

Fontana di Trevi:

Basilica di San Pietro:


Roma centro:

Troviamo anche altri esempi, relativi a Venezia

Canal Grande di Venezia:

Piazza S.Marco di Venezia:


Il risultato del processamento tramite Bundler è costituito da una nuvola di punti 3D, con le posizioni dei punti di vista e con i rispettivi assetti della fotocamera.



Python Photogrammetry Toolbox

Operativamente parlando, Bundler è piuttosto ostico da utilizzare, essendo un eseguibile da chiamare con alcuni parametri, poco mnemonici.

Fortunatamente, vengono in aiuto alcune interfacce grafiche di supporto.


Una di queste interfacce è “Python Photogrammetry Toolbox”, che usa l'implementazione “osm-bundler” di Pierre Moulon.

Questo toolbox, chiamato brevemente “PPT” è essenzialmente un pannello, suddiviso in varie schede, ognuna relativa ad una fase di lavorazione del gruppo di foto.
La prima operazione è quella della selezione del percorso sul disco (“path”) contenente le immagini fotografiche in formato JPG.
Ognuna delle immagini ha al suo interno un gruppo di informazioni, dette “Exif”, sul tipo di fotocamera, la focale, l'uso di flash, ecc.
PPT” utilizza queste informazioni, specialmente quella della focale usata nello scatto, per effettuare i calcoli geometrici.
Una informazione anche necessaria, ma purtroppo non presente nell'exif è quella della grandezza del sensore digitale, detto CCD, della macchina.
Per questo “PPT” mantiene un archivio di parametri caratteristici delle fotocamere che ha incontrato fino a quel momento.
Come prima operazione, quindi, occorre controllare se la camera che si sta utilizzando è “conosciuta” dal sistema. Per fare questo, si utilizza la scheda “Check Camera Database”, indicando dove si trovano le immagini.
Se sconosciuta, sulla finestra del terminale comparirà la richiesta del valore della larghezza in millimetri del sensore.
Questo valore andrà ricercato in internet, consultando le varie banche dati tecniche delle fotocamere.
Il database di PPT è costituito da una tabella, dove ad ogni riga corrisponde un determinato modello di macchina fotografica.


Il valore di “ccd_width”, espresso in millimetri, viene utilizzato dal sistema automatico di collimazione, insieme alla focale letta dall'immagine, per calcolare la forma del fotogramma.

Se il valore del ccd è noto, si può effettuare la prima fase della collimazione, tramite “Run Bundler”.

Il programma crea una directory temporanea, il cui path viene riportato sul terminale, e andrà a scrivere una serie di file, che vedremo nella prossima parte di questo articolo.


BobMaX


2012-12-23

VTP OSM - VirtualTerrainProject e OpenStreetMap

L'ultima versione, in ordine di tempo, di VTP permette di visualizzare i dati provenienti da OpenStreetMap. 

Riportiamo di seguito l'annuncio inserito da Ben Discoe nella mail-list di VTP:


"Recentemente ho inserito una serie di miglioramenti al modo in cui VTBuilder importa da OpenStreetMap.

Per cominciare, ora possiamo leggere non solo le strutture come le strade, ma anche altri  tag OSM come possiamo. Quindi, dovremmo essere in grado di creare recinzioni, muri, edifici con altezza e stile tetto, oltre a strade con attributi quali asfaltata, e il numero di corsie.

Questo è incorporato nella versione 1.35, caricata di recente, quindi se vi piace OpenStreetMap, fare una prova!




Descriviamo i passi tipici da fare:


2. Cerca un luogo che ti interessa.

Consiglio di scegliere un posto di cui avete già i dati di elevazione.

3. Fate clic su 'Esporta' e scegli 'Dati XML OpenStreetMapcome formato di esportazione 

4. Scegliete la zona (non troppo grande - c'è un limite a una certa dimensione area)

5. Premere il tasto "Esporta", e salvate il file .OSM sul disco

6. Con VTBuilder aperto, trascinate il file .OSM.  Verranno creati due nuovi livelli.

7. Potete ripulire la rete stradale con "Road: Roadmap Clean"

8. Vi consigliamo di utilizzare Layer: Convertire progetto in modo che i nuovi livelli abbiano la CRS stessi l'altitudine (se non lo fanno già).

9. Salvate il vostro  .VTST e  .RMF  come di consueto

10. Portateli in Enviro.

Ecco un esempio di Roberto di una località d'Italia, Gaeta:



http://vterrain.org/Screenshots/2012/gaeta-osm.jpg

Potete rispondere sulla lista:


e inviare le vostre sperimentazioni.
Sono particolarmente interessato a sapere se c'è qualcosa che vi aspettavate da OSM che non viene importato, o non ha importato correttamente. Una cosa interessante di OSM (una forza o una debolezza a seconda di come la si guarda) è che la loro comunità in tutto il mondo utilizza i tag OSM semi-standard in ... diversi modi.  Quindi, possono essere aggiunti vari modi di interpretare i tag OSM come utilizzati.

-Ben"


BobMaX


Link utili:  Vterrain.org
Installer VTP per Windows

2012-12-09

VTP - Virtual Terrain Project versione 1.33

E' stata rilasciata la versione 1.33 di Virtual Terrain Project  !      VTerrain.org


Potete trovare l'installer per Windows  ( XP e 7 )  e le istruzioni dettagliate al seguente link:



Una versione di VTP integrata in Linux ArcheOS potete trovarla integrata nella live iso che trovate a questo link:



Di seguito descriviamo le operazioni da effettuare su Linux ArcheOS per configurare VTP a lavorare sui progetti dell'utenza HOME.

Aprile il terminale e copiare sotto la vostra home il contenuto della directory
/usr/share/archeos/vtp-svn111229/TerrainApps/Data

Creare, sempre sotto la vostra home, una directory  vtp/Data e copiate al suo interno le directory le stesse directory  (in realtà ne servirebbero solo alcune, ma facciamo così per semplificare le cose).

A questo punto lanciate VTBuilder, che trovate sotto il menu "Applicazioni > 3D" di Linux ArcheOS.  
Comparirà la finestra del terminale, con alcuni messaggi, e poi VTBuilder.


Al primo lancio, nel caso non siano visibili elementi nella finestra 2D, abilitate dal menu "View" la "World Map" e "Show UTM Boundaries".

Per visualizzare un territorio di prova, trasciniamo in VTBuilder il file "crater_0513.bt" che troveremo sotto la directory  /home/utente/vtp/Data/Elevation/



Se il territorio non viene visualizzato, ma al suo posto compare solo un rettangolo con delle diagonali, come nell'immagine di seguito, è evidentemente selezionata l'opzione "Show outline only" nel pannello delle "View > Options".  In questo caso, bisogna selezionare, invece, "Artificial color by elevation value".




Passiamo ora ad Enviro.  Lanciamolo attraverso il menu "Applicazioni > 3D" di Linux ArcheOS.




Al primo lancio, la lista dei progetti di Enviro è vuota.  Per inserire il primo progetto, occorre selezionare il bottone "Terrain Manager" e nel pannello premere "Add Path".
Aggiungiamo la directory  vtp/Data   che abbiamo copiato sotto la nostra Home, e premiamo OK.  Ora troveremo (o dovremmo) "Simple Terrain" tra i terreni selezionabili (se ciò non accade, torniamo nel pannello "Terrain Manager", e cancelliamo il primo path "../Data", superfluo).

Selezionando il progetto "Simple Terrain" e premendo OK, si aprirà il pannello "VTP Enviro OSG" e verrà visualizzato il terreno 3D, con cui possiamo interagire.

Bene, VTP ora è funzionante sulla vostra macchina.


BobMaX

2012-12-08

SfM - Rilievo Porta Immacolata Gaeta ( seconda parte )



Nella giornata in cui in Italia si festeggia la ricorrenza "L'Immacolata", pubblichiamo il preliminare del rilievo della Porta dell'Immacolata della chiesa dell'Annunziata di Gaeta, effettuato con tecniche SfM (Structure from Motion) attraverso vari i software disponibili.

Le foto scattate sono state una ventina, con una reflex digitale, per l'esattezza:
Camera: Panasonic Lumix DMC-FZ8   ccd_width: 5.76



Il video mostra il risultato ottenuto con un software commerciale intorno ai duecento euro.  Il livello di dettaglio è incredibilmente alto, tanto da poter essere utilizzato per ottenere sezioni delle modanature.  Rispetto ad un rilievo laser, la tecnica SfM ha una risoluzione sicuramente minore, ma i vantaggi di quest'ultima in termini di velocità, maneggevolezza e minore costo sono vincenti.  Nel rilievo archeologico, architettonico e paesaggistico la tecnologia SfM sarà senz'altro quella maggiormente usata nel prossimo futuro.




Vediamo ora lo stesso rilievo elaborato con un servizio web gratuito, che permette addirittura di stampare in 3D l'oggetto fotografato. Collegandoci al sito Hypr3D, dopo esserci registrati con il nostro indirizzo di posta elettronica, possiamo inviare le nostre foto, e dopo un tempo variabile ci arriverà un messaggio che ci avvertirà che l'elaborazione è stata completata e che i modelli sono a nostra disposizione.


Il sito Hypr3D realizza un modello in bassa ed uno in alta risoluzione. I formati previsti in uscita sono:

- Collada DAE con texture
- PLY di punti
- STL


Il il modello realizzato con Hypr3D è visualizzabile al seguente link: http://www.hypr3d.com/models/50c070b7979a5c000200006b




Confrontando i modelli puntuali realizzati con i due software, in questo caso troviamo risultati simili, nell'esempio della porta che stiamo esaminando, per quanto riguarda l'alta risoluzione (anche se il DAE non riesce ad essere visualizzato da MeshLab su MacOSX).


Abbiamo anche caricato il modello PLY a triangoli su un altro software open source, con l'aiuto di Cicero Moraes, esperto di Blender.  Le capacità di editing del TIN, offerte da Blender, possono permettere una semplificazione della superficie ottenuta dalla SfM.  





Affronteremo prossimamente più nel dettaglio le fasi di lavorazione SfM, con riferimento ai vari parametri modificabili, al loro significato e ai risultati ottenibili.


BobMaX

2012-11-30

SfM - Structure from Motion (prima parte)

Cominciamo, da questa volta, una serie di articoli dedicati alla "Structure from Motion".





Per “Structure from Motion” si intende una tecnica di calcolo che permette di ricostruire la forma di oggetti attraverso la collimazione automatica di punti da un insieme di foto.

Basata su algoritmi di computer vision, la SfM estrae i punti notevoli dalle singole foto, desume i parametri fotografici e incrocia i punti riconoscibili su più foto, trovando le coordinate nello spazio dei punti stessi.

In uscita della prima fase del calcolo, la SfM costruisce una nebulosa di punti, con il colore originario, formando una sorta di modello spaziale di foto “solida” degli oggetti ripresi.


Nella fase successiva, SfM riesce ad “infittire” la nuvola di punti iniziale e riesce altresì a “coprire” i punti con una rete di triangoli per formare una superficie sculturata.

Su questa superficie a triangoli, detta TIN, ovvero “Triangulated Irregular Network”, la SfM riesce infine a sovrapporre una texture fotografica, estratta dalle foto di partenza, creando così un vero e proprio modello tridimensionale degli oggetti.

Una particolare attenzione va posta alla fase di presa delle foto, che sostanzialmente devono “coprire” gli oggetti secondo un modello 3 a 1, cioè tre foto, leggermente slittate tra di loro, per ogni punto di vista.

Infatti, il numero minimo di foto che la SfM riesce a collimare automaticamente è 3. In un certo senso, SfM costituisce una sorta di estensione del modello stereoscopico, ma a differenza di questo, non è necessario conoscere da principio la posizione reciproca dei punti di vista, né sono necessari particolari vincoli di ripresa, come nella stereo-fotografia.

Mentre nel modello stereo le foto devono essere scattate lungo un asse, da due distanze note, utilizzando un solido cavalletto, nella SfM le tre foto vengono riprese senza un supporto fisso, a meno di particolari necessità dovute alla scarsa illuminazione.
La SfM viene esercitata in genere “a mano libera”, scattando foto in maniera quasi casuale, almeno all'apparenza. Il “fotografo SfM” sembrerà essere un comune dilettante, che prende un numero spropositato di foto, girando intorno a un'oggetto architettonico, quasi non fosse in grado di giudicare dal principio quale sia la “migliore inquadratura” da prendere.

In realtà il destinatario di questo “folto numero” di immagini fotografiche non è un committente esigente, ma solo un computer, su cui gireranno i programmi di Structure from Motion.

Proprio per il fatto che non occorre una particolare precisione nella presa reciproca delle foto, queste possono essere addirittura scattate da un mezzo aereo, privo di pilota, che vola al di sopra degli oggetti.

E' quello che viene attualmente sperimentato per il rilevamento speditivo di siti archeologici, tramite elicotteri telecomandati.

Notevole uso della SfM viene fatto per la realizzazione di modelli TIN territoriali e urbani nella nuova cartografia dei vari “mondi 3D” presenti sulla rete.


Alla base della SfM c'è un algoritmo chiamato SIFT, che sta per “Scale -Invariant Feature Transform”.

Si tratta di un metodo che estrae i punti “notevoli” da una immagine, raggruppandoli allo scopo di fornire un “riconoscitore di forme” per la computer vision.

Applicando questo metodo a un gruppo di immagini, vengono prima “riconosciuti” punti sugli spigoli degli oggetti, e poi vengono scartati i punti che non compaiono su tutte le foto.

Nel caso di immagini piuttosto simili di uno stesso oggetto, cioè prese da punti di vista vicini, ma non identici, un metodo “least-squares” ovvero di approssimazione ai “minimi quadrati”, applicato alle forme simili, permette di trovare i punti di vista da cui sono state prese le foto, tenendo conto del valore della focale fotografica, memorizzato all'interno del file immagine JPG. Nel caso in cui il valore della focale non sia presente, esso viene stimato automaticamente in maniera approssimata.


Nei prossimi articoli passeremo in rassegna le varie fasi della lavorazione delle foto tramite una applicazione SfM open source.

Le immagini di questo articolo sono relative alla porta della chiesa dell'Annunziata di Gaeta.


BobMaX


Link utili:

Modello in formato PLY della porta della chiesa

2012-11-04

GEarth 7 - Modellazione automatica "di edifici"

La nuova versione di Google Earth, appena rilasciata, permette la visualizzazione dei modelli degli edifici realizzati tramite tecnica di collimazione automatica da foto.

Questa tecnica, molto promettente, prende il nome di "Structure from Motion", e permette di estrarre la forma del terreno, degli alberi e degli edifici, prima come nuvola di punti 3D e poi come superficie a triangoli.

Il risultato di tale tecnica è al tempo stesso stupefacente e controverso.

Da una parte, infatti, SfM permette di ottenere velocemente un DSM (Data Surface Model) esclusivamente con le foto (e quindi senza uso di Radar o Laser), di forte impatto visivo.

Dall'altra parte, il modello ottenuto non è di tipo architettonico, e non regge il confronto con un modello creato da "umani".

La scelta del team di Google Earth di includere (e progressivamente sostituire) i modelli "umani" con quelli "automatici" ha creato sconcerto (ed anche delusione) in coloro che, come noi, hanno contribuito a creare la "bellezza" delle città di GEarth.

Si tratta senz'altro di un passo obbligato, come avviene sempre quando è disponibile una nuova tecnica.

Però, sia chiaro che non si tratta di una tecnica risolutiva per la descrizione della realtà territoriale e urbana.

Confrontiamo una zona archeologica di Roma, lo stadio di Massenzio, realizzato su Google Earth con le due tecniche, quella "umana" e quella "automatica".




Il modello che vediamo in alto è stato realizzato da Francisco Borge, con molta pazienza e bravura.  E' subito evidente una maggiore "pulizia" dei volumi realizzati a mano, rispetto a quelli "automatici", anche se l'altezza dell'edificio in primo piano a sinistra è esagerata.


Ma è guardando i due modelli nel dettaglio che le due tecniche mostrano le vere differenze.


Nel caso della modellazione "umana", il tempo impiegato per realizzare la torre è apprezzabile per la cura dei particolari (ancora più evidenti se si carica il modello originale SketchUp).

Nel caso della modellazione "automatica", l'oggetto del rilievo è addirittura quasi difficilmente riconoscibile.

Se si fosse trattato di un esame universitario in Architettura,  il computer sarebbe stato bocciato !




Fortunatamente, esisteva un mezzo per tornare ai modelli "umani" in GEarth 7 :   pannello "preferenze" voce "Use 3D Imagery (disable to use legacy 3D buildings)".

Bellissima chance !

Ma il tempo passa, le tecniche si affinano e la risoluzione aumenta,  insieme al tempo di elaborazione.  E così lo stesso modello, dopo un paio di anni, viene aggiornato.  Ecco come appare adesso (fine 2013)



:)

Decisamente, promosso a pieni voti.


Comunque, parleremo prossimamente della innovativa tecnica SfM  e delle sue infinite possibilità.


BobMaX




2012-10-14

VTerrain plugin per QGis - versione 0.7

Rilasciata la versione 0.7 di VTerrain plugin per QGis.

http://plugins.qgis.org/plugins/VTerrain/

Per installare il plugin, utilizzate il pannello "Plugins" > "Fetch Python Plugins" e nel campo di ricerca inserite "VTerrain" e cliccate sul bottone "Install/Upgrade".


In questa versione è stato (finalmente) risolto un problema in QGis nella visualizzazione delle coordinate nella tabella dei punti provenienti da Enviro.



Buon uso

BobMaX

2012-09-21

Recensione libro: "WebGL_Up_and_Running" di Tony Parisi

[ immagine da http://chrysaora.com ]

Se avete una scheda grafica "moderna" e mezz'ora del vostro tempo da dedicare allo studio dell'innovazione nel campo del Web-3D, continuate a leggere questo post.

Se avete solo un vecchio computer datato, sarete informati su cosa vi state perdendo.



La pagina da cui partire, per scoprire il tutto e' questa:


Dopo aver sperimentato se il vostro PC risponde a WebGL, cliccando su una delle immagini visualizzate nella pagina, ed eventualmente esservi entusiasmati dalle animazioni o delusi dalla loro mancanza, cominciate a fare attenzione alla prima immagine in alto a sinistra, nella griglia.

Gli elementi ci sono tutti: Tony Parisi, uno degli ideatori del VRML ( che è uno standard per la definizione 3D ),  il WebGL ( l'evoluzione su tecnologia web dell'OpenGL ) e three.js (una libreria javascript per programmare la visualizzazione tridimensionale in pagine internet).

Il tutto è raccolto in un libro: "WebGL_Up_and_Running", edito da O'REILLY.




Si tratta di un compendio di 213 pagine che riunisce le informazioni che è necessario conoscere per essere aggiornati sullo "stato dell'arte" della programmazione 3D.  In questo link potete trovare un estratto del libro.

Vengono affrontati tutti i temi relativi alla "Anatomia di una Applicazione WebGL", quali il "Canvas", la "Vieport", "Camera", "Projections" e gli "Shaders".

Si passa poi a trattare "Buffers", "ArrayBuffer" e "Typed Arrays" e le primitive grafiche, con esempi pronti da usare e modificare.

Dopo una introduzione del WebGL e delle problematiche della visualizzazione tridimensionale in tempo reale, Parisi spiega come installare "three.js" sul proprio server web, in modo da riuscire a visualizzare immediatamente gli esempi inclusi nella libreria.

Inoltre, nel libro vengono riportati altri esempi, il cui codice sorgente è scaricabile dal sito O'REILLY, che portano passo passo a creare la visualizzazione in rete di un proprio oggetto 3D.

E' spiegato, infatti, come è possibile installare su Blender un esportatore in formato json della geometria 3D, in modo che possa essere visualizzato da "three.js".

Il tutto, in un modo discorsivo ed interessante, che rende chiaro e facile capire e utilizzare javascript, anche a non programmatori.

Alla fine, si trovano raccolti in questo libro tutta una serie di informazioni che difficilmente sono reperibili così organizzate, cercando in rete.

Un esempio ?  Come si fa ad attivare la visualizzazione in Safari, su MacOSX, della modalità WebGL?  Qualcuno lo sa ?  Qualcuno ci è riuscito ?  Io si, dopo aver letto questo libro.


Insomma, WebGL è una grande cosa, anche se è, purtroppo, possibile soltanto su macchine di ultima generazione.

Parleremo diffusamente di WebGL e delle sue implicazioni nella visualizzazione territoriale, da ora in poi, in questo blog, e sperimenteremo le sue possibilità, applicandole.


BobMaX


Link utili:

Per sperimentare WebGL su codice sorgente in three.js  http://mrdoob.com/145/code_editor

Documentazione su three.js  http://mrdoob.github.com/three.js/docs/51/

Una breve scheda su Toni Parisi   http://www.oreillynet.com/pub/au/5199


COLLADA2JSON project  and WebGL  Meetup    link

Confronto tra librerie WebGL :  http://weblog.benjaminsommer.com/blog/2012/05/13/comparison-of-webgl-framework-apis/

Altri esempi di WebGL :  http://code.google.com/p/webglsamples/

2012-06-27

OpenSceneGraph

All'interno del software di Virtual Terrain Project  c'è una importante e potente libreria grafica di visualizzazione territoriale, basata sul concetto di "scene-grafo", che è un elenco di oggetti grafici tridimensionali legati insieme ad albero, in cui ogni oggetto ha i suoi parametri che possono dipendere o  trasmettere i valori ai nodi precedenti o seguenti.
Tale concetto ha origine in formati e linguaggi 3D come OpenInventor, come il VRML e X3D, Collada DAE e ... OpenSceneGraph !
La potenza di OpenSceneGraph sta nella sua flessibilità, con il meccanismo di estensione a plugin, con cui si possono "inglobare" virtualmente tutti i formati grafici esistenti, e nel fatto che esso è presente praticamente su tutte le piattaforme, intese come sistemi operativi (Windows, Linux, MacOSX...).

Inoltre, OpenSceneGraph è ... open source.

Come si programma OpenSceneGraph ?

A questo proposito la documentazione è importante quanto gli esempi di codice.  E cosa c'e' di meglio di un libro?


Ricette di OpenSceneGraph 3

E' di prossima uscita il libro "OpenSceneGraph 3 Cookbook" ovvero "risposte veloci a problemi comuni".
Si tratta di 80 "ricette" che mostrano tecniche di programmazione 3D avanzate con OpenSceneGraph, il potente motore di rendering territoriale real time, open source, prodotto da Robert Osfield e altri programmatori sparsi per il mondo.
Il libro, di oltre 400 pagine, scritto da Rui Wang e Xuelei Qian, si divide in dieci capitoli, che affrontano le principali problematiche relative alla programmazione di OpenSceneGraph, dalla configurazione di CMake, alla compilazione su device mobili, alla creazione di oggetti dinamici, alle superfici NURBS.

In sostanza, ci sembra essere un libro necessario a tutti quelli che professionalmente o per passione si occupano di 3D territoriale, e che hanno bisogno di avere raccolte insieme e pronte ad essere consultate tutta una serie di informazioni essenziali ed avanzate per poter programmare OpenSceneGraph e le proprie applicazioni 3D con successo.

Prima ricetta per iniziare:  CMake e la preparazione dell'ambiente di sviluppo.
Come creare la base per un plugin di OpenSceneGraph.  Vengono spiegati tutti i vari passaggi necessari per configurare la macchina, le variabili di ambiente ed il loro significato e uso, mostrando le schermate del terminale durante la compilazione dei moduli.  Sono tutte informazioni che difficilmente Ë possibile trovare insieme organicamente, e che in questo modo risultano essere molto utili, se non essenziali, come in qualche caso.

Seconda ricetta: come portare un programma scritto con OpenSceneGraph a girare su differenti piattaforme, Windows, Linux, MacOSX.
Il meccanismo di "impacchettamento" viene realizzato attraverso "CPack", un sistema integrato con CMake, che permette di creare automaticamente gli RPM, DEB e GZIP o gli installer di Windows del proprio programma, per la distribuzione.

Il libro spiega anche (finalmente ?) agli utenti di MacOSX come utilizzare XCode per creare le proprie applicazioni OpenSceneGraph.  Chi conosce (come me) la programmazione MacOSX sa quanto puo' essere utile qualunque informazione a riguardo, organizzata e pronta.

Viene affrontato anche il tema dello sviluppo di applicazioni 3D sulle varie piattaforme mobili, come Android e iOS, incluso iPhone e iPad.

Seguendo le "ricette" dei capitoli del libro, si riesce a creare una propria applicazione 3D Territoriale da zero, il che non e' poco.




2012-06-02

QGis - VTerrain plugin - Caricamento progetti VTP

La nuova versione di VTerrain plugin per QGis, di prossimo rilascio, contiene importanti funzioni di visualizzazione dei formati di elevazione di Virtual Terrain Project.

La prima novità riguarda il caricamento del file ITF, Interchange Tin Format, il potente formato per i Triangulated Irregular Network, di cui abbiamo già parlato più volte in questo blog, che permette la memorizzazione di superfici provenienti da rilevamenti LiDAR e SfM, ovvero Structure From Motion, una tecnica che estrae nuvole di punti 3D, a partire esclusivamente da foto.

Il plugin visualizza, tramite Enviro, il file ITF corrispondente all'immagine 2D in formato TIF, con lo stesso nome, caricata in QGis.

Nell'esempio che segue, abbiamo caricato  l'immagine a colori "duomotin.itf.tif" in QGis,  e abbiamo visualizzato "duomotin.itf"con Enviro, tramite la chiamata del plugin VTerrain.




Con la stessa modalità possiamo caricare in QGis e conseguentemente visualizzare in 3D, tramite VTerrain plugin, anche il file grid in formato BT, utilizzando un'immagine chiamata "nomefile.bt.tif".

Ovviamente, rimane attiva la possibilità di caricare direttamente il file BT all'interno di QGis, essendo uno dei formati previsti dalla libreria GDAL, e visualizzarlo con Enviro.

La seconda importante novità del plugin VTerrain è il caricamento dei progetti Enviro, sempre tramite un file TIF, che dovrà chiamarsi  "NomeProgetto.vtp.tif".    In questo caso, verranno utilizzati tutti i parametri impostati nel progetto Enviro, come l'ortofoto, i livelli vettoriali, gli edifici, le strutture e gli alberi e le viste salvate.

Nelle immagini seguenti, vediamo il modello di Gaeta, completo con il castello 3D realizzato da Antonello Buccella (che ringraziamo), a partire dall'immagine ".vtp.tif" caricata in QGis.




Ma non finisce qui.
Per ultima, ma non perché meno importante, una nuova funzione del plugin permette di visualizzare in un layer QGis i punti 3D selezionati in Enviro, potendo così effettuare misurazioni, esportare coordinate, disegnare vettori, eccetera.    Alla fantasia e l'immaginazione di tutti inventare utilizzi per questa funzione  VTerrain_XYZ.





Per partecipare al beta test di tali funzioni, inviate una eMail, con oggetto:

VTERRAIN_PLUGIN_BETA_TESTER

all'indirizzo:

exporttocanoma @ gmail . com