Contatta Lovato Damiano via mail
|  HOME  |  CURRICULUM  |  PROGETTI  |  GUESTBOOK  |          

ELABORAZIONE DI UN IMMAGINE PER OTTENERE UNA SUPERFICIE 3D


L'idea che stò per esporre è scatturita in quanto ero insoddisfatto del risultato ottenuto con la funzione displace di 3ds max; prendiamo ad esempio la seguente immagine QR Code che è composta da 115 x 115 pixel; attenzione in quanto è solo apparentemente composta da l'accostamento di quadrati bianchi e neri ma in realtà ogni quadrato è costituito da una matrice di 5x5 pixel.



Per trasformare un immagine in una superficie 3D è possibile utilizzare la funzione displace di 3ds MAX che si trova sotto al menù "Modifiers - Parametric deformers" e che dato un piano in X-Y muove i punti del reticolo ad una posizione Z sulla base della saturazione del colore dell' immagine stessa; ovviamente tanto più si infittisce il retticolo tanto più diventa preciso il risultato; qui di seguito il risultato ottenuto creando un piano suddiviso in 115 segmenti verticali e orrizzontali (tanti quanti i pixel dell' immagine):



E' già possibile notare che le pareti verticali in realtà non sono perfettamente verticali in quanto la funzione displace muove i punti che compongono la mesh e non crea delle facce come avviene nel caso di una funzione di estrusione. L'idea è stata quindi quella di creare un programma ad hoc che rilevasse la saturazione di ogni pixel di un immagine e creasse uno script in grado di generare la relativa mesh 3D in 3ds MAX.



Tramite il programma è possibile anche impostare l'altezza in Z della mesh sulla base del valore minimo e massimo di saturazione rilevata dall' immagine e inoltre settare lo step con il quale effettuare i livelli in Z; in questo caso specifico, per rendere la cosa semplice ho salvato il QR Code in un file PNG ad 1 bit in modo tale da avere solamente pixel bianchi o pixel neri (quindi livelli di saturazione pari a 0 o 255) e impostato lo step a 255 in modo tale da ottenere una mesh 3D con facce a 0 oppure ad Altezza Z pari a 10 come impostato sul programma. Una volta lanciato lo script in 3ds MAX si nota chiaramente come il risultato ottenuto sia praticamente perfetto.



In questo modo sarebbe inoltre possibile ridurre le matrici di pixel 5x5 in singoli pixel e il risultato sarebbe il medesimo ma con una notevole riduzione di facce e vertici sul modello 3D. La funzione displace ha generato una superifice di 13456 vertici e 26450 facce mentre lo script del programma ha generato una superficie di 16189 vertici e 31990 facce.



Provvedendo a ridurre la matrice 115x115 in una 23x23 il risultato visivo del modello 3D non cambia; cambia invece le dimensioni del modello in quanto lo script del programma ha generato questa volta una superficie di soli 1093 vertici e 2166 facce con un notevole risparmio di memoria e velocità nell' esecuzione; qui di seguito il PNG del QR Code ridimensionato e la relativa superficie una volta creata in 3ds MAX.





Purtroppo immagini in alta risoluzioni possono generare script troppo grandi che dovrebbero gestire milioni di facce ma che in realtà causano arresti anomali in 3ds MAX; la seguente superficie 3D è stata ottenuta da una immagine di una mano con risoluzione 100 x 106 pixel con uno step abbastanza accurato in Z.