Vai al contenuto
marze

- Note Sulla Modellazione A Basso Numero Poligonale -

Recommended Posts

Salve a tutti, mi sono da poco unito a treddi.com ma mi interesso di grafica 3d da un pò di tempo

anche se solo in maniera amatoriale.

Tempo fa avevo realizzato alcune note di base sulle strategie per economizzare i poligoni

nella modellazione low poly (+gestione smooth groups) e ho pensato di pubblicarle su treddi.com con la

speranza che possano risultare utili specialmente a chi inizia.

Commenti, rettifiche e soprattutto altri consigli/trucchi saranno molto apprezzati !

-------------------------------------------------------------------------

- Note sulla modellazione a basso numero poligonale -

La modellazione a basso numero poligonale è particolarmente utlizzata nella realizzazione di videogiochi, per consentire una velocità di rendering accettabile ai motori realtime 3d. In questo tipo di modellazione l'uso ottimale di edge, smooth group e ottimizzazione riveste un ruolo fondamentale.

I comandi illustrati sono relativi a 3Dstudio max, ma i concetti sono applicabili alla modellazione 3D, a prescindere dal software utilizzato. Ho tratto gran parte delle informazioni che leggerete da Internet e dai suggerimenti di altri grafici 3D. Consiglio la lettura dei tutorial, in lingua inglese, di Paul Steed (http://www.loonygames.com/content/1.1/totb/), grazie ai quali ho mosso i primi passi nella modellazione lowpoly.

Uso delle Edges

Come vedete dalle figure sotto il cubo in realtà è composto da facce triangolari che potete visualizzare applicando il modificatore edit mesh, selezionando edge e cliccando sul pulsante Visibile, nella sezione Surface Properties (Fig.2). L'edge evidenziata in rosso in Fig. 3 può essere girata cliccando sul pulsante Turn, nella sezione edit geometry, e poi cliccando su di essa. Il risultato è quello che vedete in Fig. 4.

edge01.jpg

Nella modellazione a basso numero poligonale l'orientamento delle edge può cambiare completamente l'aspetto di un oggetto. Lo notiamo in maniera evidente se spostiamo il vertice evidenziato verso il basso. Il risultato è completamente diverso in base dell'orientamento dell'edge.

edge02.jpg

Generalmente, si cerca di fare in modo che la lunghezza delle edge sia il più corta possibile. In realtà non esiste una regola generale. A mio parere il metodo migliore per verificare il corretto orientamento delle edge é quello di far ruotare l'oggetto che creiamo, osservando come le facce riflettono la luce. Teniamo presente che nelle superfici curve l'orientamento delle edge influisce sulla convessità e/o concavità. Se l'edge è vicina a una parte che si deformerà, il suo orientamento dovrà assecondare la deformazione. Con un po' di esperienza e qualche prova troverete sempre più semplice orientare le edge in modo corretto. Nell'esempio seguente (Fig. 9) le due edge evidenziate in rosso non hanno un orientamento corretto.

edge03.jpg

Le normali

Le normali rappresentano l'orientamento di un poligono e definiscono se una faccia è visibile dal punto di vista in cui ci troviamo. Possiamo immaginare le normali come dei vettori perpendicolari alle facce (frecce rosse, viola e blu). Se invertiamo le normali di una faccia, selezionandola e cliccando su flip normals nella sezione Surface Properties (Fig. 12), la faccia sembra scomparire (Fig. 13). In realtà, è ancora presente ma risulta visibile solo ruotando opportunamente la vista.

N.B.: é possibile avere facce sempre visibili (con le normali in entrambe le direzioni), utilizzando i materiali two-sided, o forzando l'opzione 2-Sided.

normal01.jpg

Smooth group

I gruppi di smusso determinano se le superfici debbono essere visualizzate come lisce o no. Facce con lo stesso gruppo di smusso verranno visualizzate come lisce e daranno il senso di omogeneità tipico delle superfici curve. Facce con diversi gruppi di smusso saranno nette e delineate. In Fig. 14 vediamo facce con gruppi di smusso diversi. Applicando il modificatore Edit mesh e assegnando lo stesso gruppo di smusso (Fig. 15), avremo il risultato della Fig. 16. Sono disponibili 32 gruppi di smusso diversi e alla stessa faccia é possibile applicarne più d'uno.

smooth01.jpg

Come possono essere utilizzati i gruppi di smusso? Ad esempio, per differenziare le superfici che rappresentano tipi di materiali diversi. In Fig. 18 ho applicato un gruppo di smusso per la pelle (smooth group 1), mentre in Fig. 19 ne ho applicato uno differente per il berretto (smooth group 2).

smooth02.jpg

Vediamo come rendere più definiti i particolari di un oggetto. Nella sequenza sotto ho assegnato il gruppo di smusso 3 al labbro superiore (Fig. 21) e il gruppo di smusso 4 al labbro inferiore (Fig. 22). Ho poi assegnato il gruppo di smusso 5 alle facce della zona occhi e naso (Fig. 23). Ora, per rendere meno spigolosa la transizione tra le facce dell'arcata sopraccigliare e quelle degli occhi, ho applicato alle facce della fronte (Fig. 24) i gruppi di smusso 1 e 5. Non é necessario continuare a incrementare il numero dei gruppi di smusso. Per definire meglio le orecchie infatti ho usato il gruppo di smusso 3 (già utilizzato per il labbro superiore) perché nessuna delle facce adiacenti aveva tale gruppo. L'utilizzo sapiente dei gruppi di smusso può aumentare notevolmente l'impatto visivo di un oggetto e dare un impronta inconfondibile alle vostre creazioni.

smooth03.jpg

Ottimizzazione

L'ottimizzazione si prefigge l'obbiettivo di ridurre al minimo il n° di triangoli e vertici di un modello, senza comprometterne la geometria e l'impatto visivo. L'ottimizzazione di una mesh ha molteplici vantaggi, come ad esempio quello di rimanere sotto un basso numero di poligoni, oppure di poter aggiungere altri dettagli mantenendo lo stesso budget. Inoltre l'introduzione delle normal map nei recenti videogiochi giustifica ancora di più il suo utilizzo e un approfondimento sull'argomento. Bisogna sempre tenere a mente che ridurre i poligoni significa aumentare il lavoro sulle texture, che dovranno essere molto più efficaci. Da considerare anche l'eventuale fase successiva di animazione. In particolare, non bisogna esagerare con le parti che si deformeranno, per es. le articolazioni.

Partiamo da alcune primitive. Nella Fig. 27 vedete una sfera di raggio 30 e segmenti 14, in Fig. 28 una geosfera di raggio 30 e segmenti 4 e di tipo octa. Come si può notare la resa della geosfera è pressoché simile a quella della sfera, il n° di poligoni è però di molto inferiore.

optimize01.jpg

Allo stesso modo possiamo vedere in Fig. 29 tre cilindri con n° di side differenti e in Fig. 30 la diversa resa visiva.

optimize02.jpg

Da notare che, alla creazione, 3Dsmax propone un vertice esattamente al centro del cappello del cilindro. Per quanto utile in certe occasioni, ciò comporta un aumento delle facce. Per visualizzare le edge (presenti anche se non visibili) possiamo applicare il modificatore Edit mesh, selezionando Edge, e premendo il pulsante Visible nella sezione Surface Properties (Fig. 31).

optimize03a.jpg

Possiamo quindi ridurre ulteriormente il numero di poligoni saldando il vertice centrale con uno dei periferici. Selezioniamo l'opzione Vertex del modificatore Edit Mesh, scorriamo il menu fino alla sezione Weld,premiamo il pulsante Target e trasciniamo il vertice centrale su uno di quelli laterali, come in fig. 32.

optimize03b.jpg

Otterremo il risultato di fig. 33, con un risparmio di 2 vertici e 4 facce per ogni cilindro di partenza.

optimize03c.jpg

Consideriamo ora la Fig. 34, dove abbiamo due oggetti apparentemente identici ma con n° di vertici e facce differenti.

optimize04.jpg

La prima mesh è stata realizzata tramite estrusioni (come figure riportate sotto).

optimize05.jpg

Quella a destra è stata realizzata con due cilindri differenti, come notate dalle figure sotto riportate. Il cilindro più piccolo rimane parzialmente inserito in quello grande e le facce selezionate in Fig. 39 non sono visibili. Cancellandole abbiamo un risparmio di poligoni.

optimize06.jpg

Immaginiamo che dalla Box riportata nelle immagini seguenti escano tre cavi ricavati da cilindri successivamente modificati. Il cilindro a 5 facce (e tutti quelli con un n° maggiore) ha una buona resa, ma anche un costo notevole. Dovendo ridurre il numero di poligoni potremmo ripiegare sui cilindri a 4 sides. Allora si può notare come la sezione romboidale sia molto più efficace.

optimize07.jpg

Per ora e tutto.

Se avete commenti e suggerimenti questa é la mia Email: marco-zeni@libero.it

Ciao e buona modellazione. .

post-1-1132102176.jpg


Modificato da philix

Condividi questo messaggio


Link al messaggio
Condividi su altri siti

Complimenti,uno di quei tutorial che definirei "preziosi",grazie!

Solo una cosa:Perchè edit mesh e non edit poly :blink2::mellow:

:TeapotBlinkRed:

Condividi questo messaggio


Link al messaggio
Condividi su altri siti

ciao, complimenti davvero per l'ottimo documento... volevo solo aggiungere un appunto ad un passaggio in particolare della tua trattazione. Talvolta non è sempre consigliabile risparmiare una manciata di poligoni perchè oramai i motori di gioco, le schede video e le console sono molto potenti ed a rappresentare una minaccia per il frame rate non sono più tanto il n° di poligoni (entro una certa misura, ovvio) quanto certi tipi di materiali, le luci, gli effetti speciali...

Per spiegarmi meglio ho riprodotto le due coppie di cilindri della figura 34 e le ho importate all'interno di un motore di gioco (nello specifico unreal editor, che si trova incluso in alcune confezioni di gioco). Qui si nota come una volta illuminate con una luce non dinamica gli effetti di luce ed ombra siano ben diversi nei due casi, a discapito del realismo. Questo tipo di illuminazione (lightmap) crea zone di luce ed ombra su un oggetto in base ai vertici ed alla direzione degli edge. Nel caso in cui i vertici nel punto di contatto dei due cilindri non siano comuni, la luce scorre lungo la direzione degli edge senza considerare la presenza di un altro oggetto che, a rigor di logica, dovrebbe occluderla.

Tutto qui, solo un'osservazione. Ciao!

post-4958-1132142200_thumb.jpg

Condividi questo messaggio


Link al messaggio
Condividi su altri siti
ciao, complimenti davvero per l'ottimo documento... volevo solo aggiungere un appunto ad un passaggio in particolare della tua trattazione. Talvolta non è sempre consigliabile risparmiare una manciata di poligoni perchè oramai i motori di gioco, le schede video e le console sono molto potenti ed a rappresentare una minaccia per il frame rate non sono più tanto il n° di poligoni (entro una certa misura, ovvio) quanto certi tipi di materiali, le luci, gli effetti speciali...

Per spiegarmi meglio ho riprodotto le due coppie di cilindri della figura 34 e le ho importate all'interno di un motore di gioco (nello specifico unreal editor, che si trova incluso in alcune confezioni di gioco). Qui si nota come una volta illuminate con una luce non dinamica gli effetti di luce ed ombra siano ben diversi nei due casi, a discapito del realismo. Questo tipo di illuminazione (lightmap) crea zone di luce ed ombra su un oggetto in base ai vertici ed alla direzione degli edge. Nel caso in cui i vertici nel punto di contatto dei due cilindri non siano comuni, la luce scorre lungo la direzione degli edge senza considerare la presenza di un altro oggetto che, a rigor di logica, dovrebbe occluderla.

Tutto qui, solo un'osservazione. Ciao!

.....perdonami, ma quello che dici è incompleto.

la tecnica delle ligthmap non dipendente dal numero di poligoni, più o meno in comune, delle superfici......in quanto lavora su una risoluzione, variabile in base alla qualità, in pixel........cioè per scrivere la lightmap vengono calcolati, per ogni superfice, i valori massimi e minimi delle coordinate della superfice stessa all'interno di un sistema di assi prestabilito.............su questo, diciamo, bounding plane viene effettuato il calcolo raytrace per ricavare la mappa di luminosità e di ombra(e penombra) e la qualità della lightmap derivata sarà strettamente dipendente dalla risoluzione della lightmap stessa...........per far capire meglio questa cosa ho accluso la stessa scena processata all'interno del motore sviluppato internamente da noi dove ho settato due valori di qualità della lightmap differenti......il primo è LOW ed il secondo in HIGH scritte entrambe ad una risoluzione di 512 pixel di dimensione massima!!!!!!!

in conclusione la qualità della lightmap nell'immagine che tu hai postato probabilemente è calcolata in bassa qualità e questo si può notare per esempio dalle macchia presente alla base, sinistra, dell'oggetto di destra e questo è dovuto al fattto che lui sta mettendo a video un'immagine (lightmap) calcolata in bassissima risoluzione e di conseguenza le macchie che si vedono sono i pixel ingigantiti e filtrati in bilineare!!!!!

quindi anche se quegli oggetti fossero stati tessellati all'infinito la qualità della lightmap non sarebbe cambiata............l'unica differenza di qualità riscontrabile tra un oggetto poco tessellato ed uno fortemente tessellato otterrebbe attraverso un'illuminazione al vertice, che per intenderci è quella che usa per esempio anche max, come tutti i cad, nella finestra di preview............ma che non è una lightmap!!!!!!

con questa risposta volevo solo aggiungere informazioni potenzialmente utili per un sorta di dovere di cronaca, ma soprattutto perchè adoro questo settore e mi piace trasmettere e condividere, quando possibile, le conoscenze che ho

un saluto

post-863-1132147962_thumb.jpg

Condividi questo messaggio


Link al messaggio
Condividi su altri siti

Ciao almighty, si senta la passione... che cmnq cè anche da parte mia.

Forse l’equivoco è partito dal precisare che nel motore usato per il mio esempio si setta il grado di accuratezza luci/ombre alla voce “lightmap”. In effetti il mio errore è stata di prenderla larga per non dire "illuminazione ai vertici"; il fatto è che una mesh poligonale importata nel motore da me preso in considerazione riceve un grado di accuratezza nell'illuminazione in relazione alla densità poligonale e da come sono uniti tra loro gli oggetti (cioè se sono sono sovrapposti o hanno vertici in comune). Nella scena postata sopra il valore immesso alla voce "lightmap" è settato esclusivamente sulle superfici dei brush, entità queste ultime che vengono create e gestite direttamente dal motore, perchè solo su questi ultimi si puo settare la precisione delle ombre, non sugli oggetti importati, che quindi vanno tessellati se si vuole avere ombre più accurate. Tutto qui.

Ciao e grazie.

Condividi questo messaggio


Link al messaggio
Condividi su altri siti
Ciao almighty, si senta la passione... che cmnq cè anche da parte mia.

Forse l’equivoco è partito dal precisare che nel motore usato per il mio esempio si setta il grado di accuratezza luci/ombre alla voce “lightmap”. In effetti il mio errore è stata di prenderla larga per non dire "illuminazione ai vertici"; il fatto è che una mesh poligonale importata nel motore da me preso in considerazione riceve un grado di accuratezza nell'illuminazione in relazione alla densità poligonale e da come sono uniti tra loro gli oggetti (cioè se sono sono sovrapposti o hanno vertici in comune). Nella scena postata sopra il valore immesso alla voce "lightmap" è settato esclusivamente sulle superfici dei brush, entità queste ultime che vengono create e gestite direttamente dal motore, perchè solo su questi ultimi si puo settare la precisione delle ombre, non sugli oggetti importati, che quindi vanno tessellati se si vuole avere ombre più accurate. Tutto qui.

Ciao e grazie.

....no grazie a te dell'ulteriore spiegazione su come funziona il vecchio editor di unreal...........comunque ripeto la mia era solo una puntualizzazione limitata alla mia di esperienza, ma soprattutto rapportata a quello che ho studiato sulle tecniche di lightmapping adottate negli ultimi anni ed alle relative soluzioni che abbiamo applicato per la nostra piattaforma di editing...........

anche se devo puntualizzare che ormai non utilizziamo più, come sempre più titoli commerciali sul mercato, questa tecnica da dopo l'avvento delle luci e delle ombre in tempo reale via hardware!!!

comunque ti saluto ancora una volta e ribadisco che mi fa piacere anche a me vedere che ci sono più persone interessate ed appassionate a questo settore!!!!!! :)

Condividi questo messaggio


Link al messaggio
Condividi su altri siti

x pillus

Hai ragione, in effetti l'edit Poly é decisamente più potente. Normalmente lo uso in fase di modellazione mentre utilizzo edit mesh in fase di ottimizzazione (mi trovo meglio, ma non so esattamente perchè). Devo essermi trascinata questa mia abitudine anche nel tutorial.

x friendly

Naturalmente le note che ho scritto sono generiche. Come giustamente hai suggerito é importantissimo essere a conoscenza delle caratteristiche dell'engine che tratterà le ns. creazioni così da valutare il rapporto costi/ benefici.

Grazie a Tutti

marze

Condividi questo messaggio


Link al messaggio
Condividi su altri siti

Un bel tutorial che apprezzo veramente - il low-poly è una tecnica importante, soprattutto quando ci dà un ottimo compromesso tra qualità e manovrabilità della scena o del nostro oggetto - che sia in RT o in una scena in max. Grazie, veramente ben curato :D.

P.S: quoto friendly per quanto riguarda il risparmio dei poligoni - ma in ogni caso nei giochi si risparmia sempre quando si può, xkè un risparmio lì ed un risparmio qui e nel complesso si semplifica tutto... :D.

Condividi questo messaggio


Link al messaggio
Condividi su altri siti

Aggiungo che in alcuni motori (per esempio Torque, openSource) il formato supportato è l'editableMesh.

Nulla vieta comunque di modellare in editablePoly e convertire in editableMesh subito prima dell'esportazione.

Sto lavorando con un altro motore, virtools, per il quale vi assicuro che risparmiare poligoni (triangoli, più correttamente parlando) è una necessità!

Condividi questo messaggio


Link al messaggio
Condividi su altri siti

Salve a tutti, sono fresco fresco di registrazione al forum ed è da neanche un mesetto che ho iniziato a studiare 3dsMax9 (Guida Completa di Ted Boardman). Be', sono commosso dalla passione e dalla competenza che emrge dai vostri post e spero che il forum sia un valido strumento di ampliamento alle mie conoscenze in materia.

Sono onorato di fare la vostra conoscenza e spero che presto si possa ripresentare l'opportunità di scambiare con voi qualche altro post.

Nel frattempo vi saluto dichiarandomi sempre disponibilissimo a qualsiasi tipo di suggerimento possiate darmi.

Grazie ancora!

Marvincibel

Condividi questo messaggio


Link al messaggio
Condividi su altri siti

Crea un account o accedi per commentare

Devi essere un utente per poter lasciare un commento

Crea un account

Registrati per un nuovo account nella nostra comunità. è facile!

Registra un nuovo account

Accedi

Hai già un account? Accedi qui.

Accedi ora

  • Navigazione recente   0 utenti

    Non ci sono utenti registrati da visualizzare in questa pagina.

×