» it.Proiettare su Superfici Tridimensionali
This site relies heavily on Javascript. You should enable it if you want the full experience. Learn more.

it.Proiettare su Superfici Tridimensionali

English | Russian | French

The original english version of this page is newer and may contain information this translation does not have! Click here to view the english version.
Questo articolo contiene i passaggi per risolvere manualmente problemi legati a questi temi:

Tenere presente che proprio per la natura manuale di questo approccio, raggiungere buoni risultati dipenderà da un atteggiamento paziente.

Introduzione

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.

Proiezione su una Superficie Piatta

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.

Proiezione su una Superficie Non Piatta (Proiezione su più Superfici Piatte)

Far combaciare manualmente un proiettore virtuale con uno reale

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:

Una proiezione generica su più superfici risulterà maggiormente corretta e quindi meno distorta quanto più il punto sorgente della proiezione ed il punto di vista dello spettatore combaciano.

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.

Replicare virtualmente un ambiente reale

Generare una copia virtuale dell'ambiente reale che ospiterà la proiezione, prevede tre passi:

  • definire un punto nell'ambiente reale che dovrà combaciare con il centro degli assi che si ottiene col nodo AxisAndGrid (EX9).
  • modellare in 3d la superficie da coprire ed immetterla correttamente nell'ambiente virtuale rispettando il punto definito sopra. Lo si può fare sia con un software per la modellazione 3d che usando i primitivi di vvvv. In ogni caso è meglio avere una mesh che possa essere aggiustata finemente usando il nodo PointEditor (3D Persistent) durante le operazioni di sovrapposizione.
  • misurare la posizione, orientamento del proiettore e ricostruire le caratteristiche della sua lente. Usate il modulo Projector (EX9) e specificate tutti parametri che sono a disposizione. Cercate nel manuale informazioni sulla capacità di basculaggio della lente e l'angolo di campo (field of view) a disposizione.

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)

Allineare le texture alla superficie

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.

Luci ed Ombre

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.

Illusione 3d

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.

La posizione della foto/videocamera virtuale è differente dalla posizione del proiettore reale

In alcuni casi non sarà possibile far combaciare la posizione di strumenti reali e virtuali:

  • Si potrebbe voler far osservare la scena da una posizione in cui non è possibile installare il proiettore.
  • Si potrebbe voler usare più proiettori per comporre una sola vista.

In questi casi allora il rendering deve essere eseguito due volte:

  • la prima volta si fa il render della scena dalla prospettiva che si è scelto
  • la seconda volta si fa il render della scena dal punto scelto nel mondo reale in cui si mettono i proiettori MENTRE il risultato del primo rendering viene proiettato sulla superficie dei modelli 3d dal punto di vista della camera virtuale.

Esempio:

Proiettare su due lati di un edificio da un unico punto di vista

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.

Setup per Proiettare a 360°

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

  • small 360 degree setup.zip (35.95 Kb)

The Elliot Woods Experience - Il mapping secondo Mr. Woods

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).

anonymous user login

Shoutbox

~16h ago

joreg: Tonight, May 3, vvvv meetup in Berlin or via stream: https://visualprogramming.net/blog/2024/24.-vvvv-worldwide-meetup/

~4d ago

joreg: Workshop on 02 05: Intro to the Stride 3D Engine. Signup here: https://thenodeinstitute.org/courses/ss24-vvvv-intro-to-the-stride-3d-engine-in-vvvv/

~5d ago

joreg: The new vvvv Show-Off-Reel is out: https://vimeo.com/930568091

~11d ago

joreg: The summer season of vvvv workshops at The NODE Institute is out: https://thenodeinstitute.org/ss24-vvvv-intermediates/

~11d ago

domj: If you happen to be in Prague, come join us at the Schema workshop on Thursday 25.4. :) https://www.facebook.com/events/395516526614988/?ti=ls

~23d ago

joreg: Postponed: Next vvvv beginner course starting April 29: https://thenodeinstitute.org/courses/vvvv-beginner-class-summer-2024/