Caso di studio – generazione di asset per videogiochi con 3DF Zephyr

 
Questo caso di studio ci è presentato da Ing. Tomáš Búran – artista 3d nella Game Industry e per applicazioni mediche in realtà virtuale. Questo articolo ci guiderà attraverso il suo processo per la generazione di piccoli oggetti come frutta, vegetali, piccole statue ecc. tramite fotogrammetria ravvicinita. In questo caso di studio, nello specifico si desidera generare modelli 3D per videogiochi tramite 3DF Zephyr.
 

Acquisizione

Per questo scopo sonos tate scattate 40 fotografie di una pera con una fotocamera Reflex Canon 200D con lente 50mm, una lightbox con illuminazione a led, treppiede, color checker, filtro polarizzatore e piatto rotante a  360° controllato via Arduino UNO.


 

Flusso di lavoro

In questo esempio, il soggetto è stato messo su un piatto rotante a 360°. E’ stato eseguito uno scatto ogni 18° per un totale di 20 fotografie per rivoluzione. Queste foto sono state prese all’incirca con un’angolo di 60° dall’alto – prima metà del dataset – come mostrato nell’immagine sottostante, e l’altra metà direttamente dal lato. In questo modo, è possibile catturare l’intera forma del soggetto.

E’ necessario scattare fotografie chiare e bene a fuoco. E’ molto importante evitare riflessi in quanto possono creare problemi fin dall’orientamento delle fotocamere, fino a generare artifatti nella mesh e nelle texture. L’utilizzo di filtri polarizzati per lenti e luci appropriate permettono quindi di evitare i riflessi. E’ inoltre molto imporante fare anche delle foto ad un color checker in modo da poter verificare la coerenza dell’illuminazione ed eventualmente esguire una correzione del colore a posteriori. Le fotografie sono state scattate con ISO 100-200 per minimizzare il rumore, un’apertura 1,8 – 2f per evitare una forte profondità di campo. Il tempo di posa è stato impostato manualmente in base agli altri parametri e in funzione dell’illuminazione della scena,

Con questi settaggi la foto impiega un tempo relativamente lungo ad essere acquisita, e pertanto è necessario l’utilizzo di un treppiede per consentire alla macchina fotografica di rimanere ferma durante il processo di scatto. Prima di iniziare il processo di ricostruzione in 3DF Zephyr, è stato inoltre rimosso lo sfondo semi automaticamente grazie a 3DF Masquerade – questo permette la generazione di un asset completo a 360°. Ulteriori informazioni su come utilizzare Masquerade per un setup con piatto rotante, si consiglia la lettura del tutorial all’indirizzo https://www.3dflow.net/it/technology/documents/3df-zephyr-tutorials/tutorial-12-masking-for-turntable/

Dopo l’orientamento delle fotocamere, sono state generate la nuvola densa e la mesh.


Il prossimo passo è la preparazione del modello 3D per il processo di generazione della texture.

Zbrush è stato utilizzato per eseguire l’unwrapping e la pulizia della mesh, nonchè la generazione di modelli 3D con differenti livelli di dettaglio (LoD). Una volta eseguito questo passaggio, il modello è stato reimportato all’interno di 3DF Zephyr per la generazione di una texture a 8192×8192 pixe – il risultato è visibile nello screenshot qui sotto. La texture inoltre è stata generata in formato TIFF per evitare perdita di dettaglio dovuta alla compressione. Nell’ambito videogiochi, molto spesso le texture PBR (physically based rendering)  sono usati per diversi workflow (per esempio con software Allegorithmic Substance Painter )  dove la texture generata da 3DF Zephyr è la base colore/albedo.


 

Risultato finale

Questo flusso di lavoro permette di risparmiare tempo per l’acquisizione in serie di diversi soggetti e fornisce un risultato fotorealistico, spesso difficile se non addirittura impossibile con altre tecniche. 3DF Zephyr è il cuore di questo processo, e nell’industria della game industry è ormai obbligatorio ottenere modelli con diversi livelli di dettaglio tanto sia per le software house AAA che per le software house più piccole. Con 3DF Zephyr è possibile generare asset per qualsiasi scala, automatizzarne l’acquisizione ed il processamento. L’immagine sottostante, mostra il risultato finale con in overlay il wireframe che compone le diverse mesh a livelli di dettaglio differenti.