Skip to content

Outline

Ieri mattina mi sono alzato con tanta voglia di fare… fortunatamente poi è andata scremando…

Quello che volevo fare era un prototipo di posizionamento manichino, un pezzo del programma di paint che ho in mente, in cui renderizzato un manichino (tipo quelli di legno per artisti) e poi col mouse selezioni gli arti e li orienti come più ti piace. L’idea sarebbe questa: click semplice cambi selezione, ruotando tra tutte le possibili in quel punto, click e trascina decidi la direzione dell’attuale arto, e rotellina ruoti più o menol’arto verso la camera. A parole sembra bello, ed è per questo che volevo fare un prototipo.

Come al solito mi sono perso in altre cose, ad esempio ho cominciato col cercare disegni del manichino, una volta trovate vista frontale e laterale, ho cominciato a modellare, dopo un po’ che modellavo mi sono reso conto per l’ennesima volta che modellare non mi piace, mi diverto di più a scriptare i modelli 🙂 . Quindi ho cercato un manichino già fatto, una volta trovato, ho visto che avrei dovuto perdere un sacco di tempo a sistemarlo, quindi mi sono messo a fare altro 😀 .

Mi sono ricordato che volevo comunque renderizzare il manichino in modo outline. Ora per renderizzare in outline qualcosa conosco 3 modi: Il primo che chiamo “metodo degli artisti” è alquanto semplice e consiste nel renderizzare il soggetto e poi ri-renderizzarlo completamente ingrandendolo o meglio ancora spostando tutti i suoi vertici lungo le loro normali e scambiando le facce rivolte verso la camera e quelle non rivolte (switchando il Backface culling), il bello di questo metodo è che può essere completamente impostato in fase di modellazione, creando una versione flippata e “ingrandita” del modello. Questo modo ha un difetto: esso crea un contorno esterno dell’oggetto, ma non crea le linee di demarcazione, ad esempio gli spigoli interni di un cubo non saranno evidenziati, esso è comunque il metodo che ho usato in “The Minis”. Il secondo modo fornisce risultati nettamente inferiori ma è possibile crearlo molto facilmente in pixel shader, visto che la maggior parte dei programmatori di disinteressa del primo fattore ed amano il secondo, lo chiamo “metodo dei programmatori” 😀 . Esso consiste nel controllare il prodotto scalare tra il vettore camera e l’attuale normale del pixel e se è maggiore di un certo valore (diciamo 0.99) allora quel pixel è nel contorno. Un altro aspetto positivo di questo metodo è che il modello non aumenta di volume ne di peso computazionale (almeno non di molto), l’aspetto negativo è che funziona solo con le superfici curve: se metti un cubo le facce avranno più o meno contorno in relazione al loro angolo con la camera. Ricordo una volta che lo usai serviva a visualizzare solo modelli curvi ed in più il contorno doveva variare in base all’illuminazione del punto.

Il terzo metodo, quello che ho implementato questo weekend, risolve il problema delle linee sempre visibili. Esso comporta una fase di pre-calcolo, dove per ogni edge della mesh controllo le facce accanto, se esse sono complanari, quest’edge non sarà mai visibile, altrimenti abbiamo 2 possibilità dipendenti dalle normali sui vertici degli edge o gli smoothing group dei due triangoli, se le normali sui vertici sono diverse allora questo edge è sempre visibile, se invece sono uguali allora quell’edge sarà visibile solo in caso di contorno quindi conservo le normali dei piani contenenti i due triangoli e visualizzo solo gli edge cui un triangolo è visibile e l’altro invisibile a causa del backface culling. E’ possibile scaricare l’eseguibile del lavoro di questo weekend.

E’ possibile trascinarci all’intero un file obj per farlo caricare, esso però deve essere triangolizzato e presentare le informazioni sulle normali. I comandi sono: click e trascina per ruotare il modello, click e trascina con SPAZIO per spostare la visuale e tasto destro per ri centrare il modello. De default carica un modello di Homer Simpons creato dal mio collega Giuliano Lo Bocchiaro. questo modello spiega anche perché Marge rimane con Homer dopo tutto questo tempo…

Come dicevo mi perdo in altre cose quando lavoro a casa, infatti per questo programma ho ricreato una mia vecchia classe molto utile, la “Log’n’Progress” una finestra con una casella di testo per il log e una progress bar per la percentuale. Il concetto è che una cosa può anche essere lenta, ma se si sapesse quello che succede e sopratutto se si sapesse quanto ancora ci vuole si aspetta più volentieri.

Magari il prossimo week-end faccio il poser del manichino 🙂

Perry

One Comment

  1. giuliano giuliano

    Ahahahahah l’ho letto solo ora, sono morto dal ridere XD

    Sei un comico perry.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.

*