Tenere presente che proprio per la natura manuale di questo approccio, raggiungere buoni risultati dipenderà da un atteggiamento paziente.
Questi temi ruotano attorno al concetto di posizione, pose, che sia dell'oggetto osservato, o che sia dell'oggetto dal quale si osserva (telecamera\fotocamera, o, meglio ancore le lenti di questi strumenti). Nel caso dell'oggetto osservato dobbiamo ad esempio verificare ed ottenere la sua posizione nello spazio circostante e, se ad esempio l'oggetto è in movimento, potremmo volere\dovere ricostruire anche il suo orientamento. Per quanto riguarda le lenti si tratta di ricostruire la posizione in cui è posta la lente (perché in alcuni casi poi dovremo sostituire alla camera un proiettore) e soprattutto calcolare la distorsione prodotta, ad esempio, dalla struttura stessa della lente in relazione alla lunghezza focale (aberrazione distorsione).
In cinematografia i termini"match moving" o "camera tracking" vengono usati per descrivere il problema di far combaciare il mondo reale con con la sua controparte virtuale, per poterli fondere senza stacchi. Esistono dei software per il tracking come (boujou, 3d equalizer, ...) che aiutano a semplificare questo compito.
Per la computer grafica in tempo reale ARToolKit fornisce un sitema utile in certe circostanze (vedere ARTK+Tracker? per l'implementazione in vvvv) e compagnie come domeprojection offrono anche l'autocalibrazione del proiettore. Finché però con vvvv non sarà possibile costruire una patch per ottenere qualcosa come questo o come questo, sistemare le cose manualmente potrà farci ottenere comunque buoni risultati.
Se la superficie di proiezione è piatta come, ad esempio, un muro ed il proiettore non è posizionato di fronte ed in maniera perpendicolare al muro, l'immagine proiettata sarà certamente distorta. Usando il nodo Homography (Transform 2d) si effettua una pre-distorsione dell'immagine, così che proiettata risulti non distorta.
Nota: In questo modo si ottiene sempre una più che decente proiezione, indipendentemente dalla posizione, dall'orientamento e dalle caratteristiche della lente del proiettore e dalla posizione dello spettatore.
Quando si proietta su più superfici (considerato che ogni faccia delle scatole presenti nelle immagini qui sotto è una superficie piatta a sé stante), non è importante come e dove sia posizionato un proiettore, perché la maggior parte dell'immagine sarà distorta. Però si deve tenere presente un fattore molto importante, vale a dire il punto di vista del proiettore.
Nella foto a sinistra il desktop proiettato sulle scatole risulta completamente distorto, mentre a destra, sebbene non combaci affatto con le varie superfici, risulta, come dire, leggibile. Questo succede perché a sinistra il punto di vista del proiettore e quello dello spettatore sono differenti, vale a dire che fisicamente la lente del proiettore e gli occhi dello spettatore si trovano in due punti differenti e troppo distanti nello spazio; a destra combaciano, perché questi due punti per quanto differenti non si discostano eccessivamente.
Ricapitolando:
Leggere inoltre Distorted way-finding-system e 3D Painted Rooms.
In buona sostanza, per comprendere ancora meglio, potete provare a guardare un foglio posto sul tavolo ad una certa distanza da voi. Il foglio non è più rettangolare, ma sembra piuttosto un trapezio irregolare. Bene, immaginando di avere un proiettore posizionato tra gli occhi, per proiettare qualcosa sul foglio e riempirne la superficie, dal proiettore dovrà uscire un'immagine che avrà la stessa forma di trapezio irregolare che ha la superficie da coprire. Quindi torna in gioco il punto di vista del proiettore: bisogna far uscire dal proiettore la forma che vediamo con gli occhi (sempre ammesso che il proiettore sia idealmente posizionato tra gli occhi): così riempiremo la superficie e l'immagine non apparirà distorta.
Raggiungere la perfezione non è possibile perché, ad esempio, le superfici non sono mai perfettamente piatte e la lente stessa del proiettore tenderà a distorcere almeno un po', o, per dirla tecnicamente, far combaciare i parametri reali con quelli virtuali è un'operazione complessa; tuttavia armandosi di santa pazienza, facendo pratica e conservando ogni stilla di esperienza si possono ottenere risultati molto buoni.
Generare una copia virtuale dell'ambiente reale che ospiterà la proiezione, prevede tre passi:
A questo punto dovreste avere un ambiente virtuale che ricalca da vicino quello reale. Prendetevi tutto il tempo necessario per impostare con calma tutti i parametri del modulo Projector (EX9) e per aggiustare la mesh con il modulo PointEditor (3D Persistent), finché non sarete soddisfatti del risultato ottenuto.
ProjectionMapping_SimpleSetup.v4p (27.74 Kb)
A questo punto realizzare qualcosa come il progetto Valcucine’s skyscraper non è molto difficile. A questo punto è necessario lavorare sulle textures in maniera tale che queste appaiano uguali da qualsiasi punto le si guardi e soprattutto indipendentemente da dove sia posizionato il proiettore.
Una volta che il modello 3d sia posizionato nella scena virtuale ricalcando la posizione che avrebbe nel mondo reale ed impostate le caratteristiche della lente virtuale perché combacino con quelle della lente reale, una volta proiettata l'immagine questa calzerà perfettamente la superficie da coprire. Qualsiasi texture che verrà applicata al modello (nell'esempio qui sopra la croce nera su sfondo bianco) apparirà corretta sulla superficie reale da qualsiasi punto di vista la si guardi.
Qualsiasi shading (incluse luci ed ombre) che si applichi al modello virtuale è un effetto relativo alla superficie e come tale si comporta come una texture piatta sul modello (dall'articolo originale: Any shading (including lighting and shadowing) you apply to the virtual model is a surface oriented effect and as such behaves like a flat texture on the model). Effetti come quelli ottenuti in Lightstrive e nel lavoro di Pablo Valbuena's Augmented Sculpture Series possono essere realizzati seguendo i passaggi qui sotto.
Simulare un effetto tridimensionale (vedere: Pablo Valbuena The Hague City Hall projection, AntiVJs Nuit Blanche Bruxelles projection ed alcune cose da easyweb's projections richiede di conoscere alcune particolarità.
Sebbene nel nostro setup questi effetti siano semplici da realizzare, basta aggiungere altre parti sporgenti al modello virtuale, per uno spettatore sono davvero fruibili solo da pochi punti di vista, che restano comunque molto vicini alla camera virtuale della scena virtuale. Come si vede bene, se vista dal lato del proiettore (che, se ricordate, occupa nel mondo reale la posizione occupata della camera virtuale nella patch) le lettere sembrano estruse dalle scatole. Cambiando completamente posizione, l'effetto perde ogni efficacia.
Comunque non importa. Come detto sopra, se non ci si sposta troppo, i nostri occhi ed il nostro cervello, che ormai sono abituati dalla TV e dal cinema a questi "paradossi", si adatteranno presto e l'effetto è garantito. Date uno sguardo anche a John Beever's Pavement Drawings.
In alcuni casi non sarà possibile far combaciare la posizione di strumenti reali e virtuali:
In questi casi allora il rendering deve essere eseguito due volte:
Esempio:
In questo setup, l'idea era quella di proiettare effetti di simulazioni 3d sulle facciate del FH Schwäbisch Gmünd.
Sapendo che questi effetti sono efficaci solo da un punto di vista, ne è stato scelto uno dal quale entrambi i lati dell'edificio possono essere visibili, che è risultato essere tra i due proiettori reali.
Ecco la patch che contiene il setup di base:
ProjectionMapping_2ProjectorSetup.zip (12.11 Kb)
La figura sopra dimostra come l'effetto funziona solo dal punto in cui si trova la camera virtuale/lo spettatore. Per approfondire i risultati del workshop di 5 giorni a Schwäbisch Gmünd, vedere qui.
In questo caso tutte le camera virtuali devono essere piazzate nello stesso punto, con differenti rotazioni; naturalmente nella realtà non è possibile sistemare nello stesso identico punto tutti i proiettori.
Ecco una demo di un setup per proiettare a 360° che include anche la transizione morbida tra i lati delle proiezioni
elliotwoods ha realizzato un tutorial straordinario, contenente una demo da scaricare, approfondendo ed ampliando alcuni dei concetti esposti sopra. Fate attenzione a leggere bene tutti i passaggi; inoltre sono necessari ulteriori bit (anche questi gentilmente donati da elliotwoods).