PREVIOUS article

DevLog #035: Il problema delle collezioni linkate come librerie esterne [02/02/2020]

NEXT article

DevLog #037: il problema del riflesso delle luci [16/02/2020]
DevLog #036: il problema delle tende [16/02/2020]

Dopo aver concluso l'ennesima revisione completa della scena e di tutti gli asset e dopo aver renderizzato una serie di animazioni campione allo scopo di iniziare a valutare la bontà dei rendering finali e iniziare a ipotizzare la sequenza delle clip e dei piani ripresa del teaser, sono emersi una serie di problemi prettamente grafici che a questo punto è necessario affrontare e risolvere perché compromettono visibilmente la qualità del prodotto finale.
I problemi sono parecchi, alcuni banali altri decisamente meno.
Negli ultimi giorni mi sono dedicato attivamente ad alcuni di questi problemi il primo dei quali è il rifacimento delle tende applicate alle finestre della cucina

Il problema delle tende

Le tende attuali presenti nella scena e visibili nei vari render pubblicati fino ad oggi sono ottenute a partire da una semplice modellazione poligonale prendendo come riferimento alcune fotografie.
Il risultato finale non è malvagio e sicuramente migliorabile (soprattutto ad una osservazione ravvicinata), inoltre è stato commesso un errore di fondo: non è stata predisposta la mappatura UV della mesh della tenda prima di procedere alla sua modellazione.

 


Mi spiego meglio: la tenda è un pannello 0,6m x 1,2m ottenuto con un semplice piano suddiviso e modificato a piacere. Se fossi stato lungimirante avrei applicato la texture della tenda direttamente sul piano prima di modificarlo, mentre ora per via della sua geometria finale tutta inviluppata è molto difficile andare a srotolare ed applicare delle texture correttamente...
Sulla base di questi due motivi ho deciso di provare a realizzare delle tende nuove a partire da zero e per cercare di ottenere il massimo realismo ho deciso di provare a realizzarle tramite cloth simulation. Non ho esperienza con questo tipo di strumenti e di simulazione, tuttavia è un argomento che mi interessa molto e che ho sempre voluto approfondire, quindi ho intrapreso questa sfida di buon passo, inoltre mi sono documentato guardando svariati video tutorial on-line.
Il problema di fondo è che tutti video tutorial che ho trovato on-line generano alla fine lo stesso tipo di tendaggio, dove l'impacchettamento della tenda avviene orizzontalmente quindi la direzione delle pieghe è verticale. Nel mio caso invece la tenda si deve impacchettare verticalmente e la direzione delle pieghe sarà orizzontale. A parte questa differenza però ho pensato che il metodo da applicare fosse grosso modo simile e invece mi sono scontrato subito con una serie di incomprensibili comportamenti.
Ho iniziato generando il piano della dimensione corretta della tenda e l'ho suddiviso un buon numero di volte per ottenere una griglia uniforme di vertici distanti approssimativamente qualche cm l'uno dall'altro. Successivamente prima di intervenire con le modifiche alla geometria ho provveduto a fare l’unwrap UV per predisporre l'applicazione successiva delle texture.
A questo punto la cosa più semplice che mi è venuta in mente per deformare la geometria come nella realtà è stata proprio di simulare lo stesso comportamento del mondo reale, quindi ho applicato un modificatore di tipo tessuto alla mia mesh, ho definito un vertex group in cui ho inserito tutti i vertici chiamati pin che vengono fissati in una determinata posizione dello spazio. Questi pin consentono al tessuto sottoposto alla forza di gravità di non precipitare.
Successivamente dopo aver guardato alcuni tutorial ho generato un'armatura e ho associato ai pin alcuni bones così da poter spostare facilmente i vertici associati a questi bonus e congelare la loro posizione in un'animazione tramite keyframe nel tempo. Seguendo questa procedura quindi ho fissato la parte alta della tenda in modo da renderla immobile e ad intervalli regolari ho sollevato il drappeggio simulando il comportamento del tessuto reale.
Per qualche motivo che ignoro completamente la simulazione ha fornito tutti e solo risultati sbagliati, completamente non realistici. Nella fattispecie il tessuto ha manifestato la tendenza a comprimersi come se fosse un telo elastico in tensione, senza generare le pieghe che mi sarei aspettato. Ho fatto diverse simulazioni, ad esempio utilizzando un telo messo in orizzontale ho potuto notare che grazie alla forza di gravità il telo tendeva naturalmente a generare queste sacche di tessuto all'avvicinarsi dei bones tra di loro.
Tuttavia quando ho provato ad applicare lo stesso sistema al tendaggio ruotandolo di 90° (per averlo distribuito orizzontalmente) il tessuto ha continuato a comprimersi mostrando solo un lieve accenno a generare le pieghe.
Ipotizzo che per cambiare opportunamente il comportamento fisico del tessuto virtuale ci fosse da lavorare sui parametri di stiffness and damping, tuttavia alcune prove fatte completamente a casaccio non hanno portato a risultati apprezzabili, inoltre il manuale ufficiale di Blender sebbene spieghi il significato di questi parametri non fornisce alcuna indicazione su come vadano settati, nemmeno in linea di massima, con degli esempi o dei parametri di riferimento per avere una vaga idea in che direzione muoversi e dove andare a cercare. Ho potuto notare che in cima al pannello delle impostazioni della simulazione dei tessuti è possibile selezionare una serie di preimpostazioni che dovrebbero generare il comportamento di alcuni dei più noti tipi di tessuto come: il cotone, la pelle o la gomma. Tuttavia anche applicando questi preset il comportamento finale nella mia simulazione non è variato sensibilmente.
Spesso e volentieri quando vedo che la maggior parte della gente on-line riesci a fare qualcosa in maniera molto semplice senza impazzire con i parametri mentre io non riesco a ripetere la stessa identica cosa mi viene da pensare di aver commesso qualche errore di fondo e tendenzialmente in questo caso riparto da capo con un file nuovo, magari semplificato rispetto all'idea iniziale. E così ho fatto: ho ricreato da zero un nuovo pannello, l'ho suddiviso grossolanamente, ho applicato meno vertici da usare come pin e già che c'ero ho sperimentato un'altra cosa nuova... In alcuni tutorial che ho visto sempre sulla realizzazione di tendaggi non venivano usate le armature per muovere e animare i tessuti, venivano utilizzate le shape keys che per me sono perfettamente sconosciute. Per chi come me non ne sapesse nulla, le shape keys sono un metodo che consente di animare nel tempo i vertici di una mesh, causando una trasformazione della forma. Siccome questa novità mi affascinava parecchio, ho deciso di abbandonare la strada dell'armatura per approfittarne e imparare ad utilizzare anche questo strumento, quindi ho aggiunto delle Shape Keys e le ho utilizzate per animare direttamente i vertici del gruppo utilizzato come pin dal tessuto. Ebbene in questo caso semplificato il tessuto si è comportato esattamente come auspicato. Allora ho cercato di replicarne il setup nel file che avevo predisposto con la mesh, texture e shader.
Sfortunatamente non è andata bene al primo colpo, ho ottenuto una via di mezzo tra la versione precedente dove non c'era il comportamento desiderato è la versione semplificata dov'è il risultato finale era soddisfacente.
Analizzando le differenze tra due file ho potuto notare solo una differenza nella densità della mesh e c'era una differenza nella distanza dei punti di pin quindi ho provato a semplificare la mesh in questione e ho provato a distanziare maggiormente i punti di pin. Inoltre ho falsato leggermente in orizzontale i vertici di pin per fare in modo che non fossero tutti allineati sulla verticale e soprattutto che non fossero allineati con i restanti vertici della mesh sottoposti a simulazione.
E finalmente ho ottenuto il comportamento desiderato! A meno di alcuni difetti di arricciamento del tessuto nelle estremità (difetti che poi ho corretto abbastanza facilmente agendo sul preset dei parametri del tessuto).

 


Il tocco finale è stato aggiungere un modificatore solidify a monte della cloth simulation ed un modificatore subdivision surface a valle, questo ha aumentato la sensazione di tessuto morbido e corposo disposto naturalmente. Una volta ottenuto il risultato desiderato ho semplicemente generato dei cloni del mio tendaggio, ho modificato l'animazione delle shape keys per fare in modo di avere i tendaggi impacchettati ad altezze differenti e dopo averne generati il numero sufficiente li ho esportati congelando la loro geometria al di fuori delle animazioni e li ho inseriti nella scena finale.

 

riferimento a discussione collegata su Blender.it