Quali sono gli svantaggi di segnare ogni bordo come una cucitura quando si srotola una maglia?


9

Sono un programmatore che sta cercando di imparare un po 'di modellazione 3D di base. Sono abbastanza a mio agio con la modellazione geometrica di base e posso scartare e strutturare modelli semplici. Ma ho una domanda ...

Quando si tratta di modelli da scartare, tutti i tutorial sottolineano la necessità di contrassegnare il minor numero possibile di cuciture quando si scartano le maglie. La mia domanda è: perché? Immagino che questo sia ovvio per le persone con esperienza di modellazione, ma non per me (dato che i miei sforzi di texturing sono per lo più vincolati alla generazione di AO o mappe normali).

Immagino che sia puramente a che fare con la conservazione della forma del modello quando si tratta di modificare la trama diffusa? È l'unica ragione per cui non vuoi semplicemente tagliare tutti i bordi e distendere tutte le facce individualmente?

Mi rendo conto che sto mostrando la mia totale ignoranza sull'argomento quando faccio questa domanda, quindi mi scuso, ma a volte le cose super-ovvie sono le più difficili da trovare le risposte a .

Risposte:


10

Ogni "cucitura UV" nel tuo modello, ovvero ogni punto in cui le facce del modello sono continue mentre viene tagliata la mappa UV per lo stesso bordo, è un problema sia per gli artisti che per l'hardware.

  • Rende più difficile strutturare correttamente il modello. Ciò è particolarmente vero quando la modifica viene eseguita direttamente sulla trama, in 2D, non in un programma di pittura 3D. Meno cuciture sono simili, più è facile avvolgere mentalmente la trama attorno al modello.
  • Mentre la fusione semplice può funzionare per la trama diffusa e alcuni altri tipi di trama, devi stare molto attento a cose come una normale mappa dello spazio tangente. Per questi, non puoi semplicemente fondere (interpolare) linearmente tra i valori X e Y (di solito mappati su R e B nei visualizzatori di trama) senza che il vettore normale risultante diventi normalizzato e la cucitura diventi visibile (di solito leggermente più scura "linea") in alcune condizioni di illuminazione. D'altra parte, provare a fissarlo nella trama e rendere i valori su entrambi i bordi UV vicini l'uno all'altro o lo stesso può far sì che la cucitura diventi visibile perché è innaturalmente piatta rispetto al resto del modello.
  • I pixel shader devono fare più lavoro ad ogni discontinuità (anche se oggigiorno di solito viene sottratto nell'hardware) e arrivare a colpire diversi spazi di memoria per recuperare i dati della trama (che di solito è il "percorso di codice" meno ottimizzato nell'hardware) , invece di lavorare normalmente con valori di trama spazialmente vicini.
  • Il mipmapping automatico (e pochissimi negozi possono permettersi di ritoccare manualmente le trame generate a bassa risoluzione) interromperà tutto il duro lavoro che tu e i tuoi artisti avete fatto per rendere invisibile una cucitura alla risoluzione predefinita.

Detto questo: se il tuo stile artistico impone che le facce del modello siano chiaramente distinte l'una dall'altra e abbiano sempre e solo bordi "duri", espliciti, nessuno di questi è un problema.


Ottimo punto sugli accessi di memoria incoerenti nel pixel shader. Saltare attorno a una trama del genere distruggerà davvero la cache delle trame.
Bob Somers,

@Bob Somers: Ad essere onesti, questo non sarà un grande successo in termini di prestazioni a meno che tu non stia programmando una piattaforma mobile o di fascia bassa, o non stia già tassando le GPU al massimo.
Martin Sojka,

Buon punto Martin. Ho vissuto in terra GPGPU per l'anno scorso scrivendo codice sensibile alle prestazioni, quindi ho pensato che fosse un punto interessante che non è immediatamente ovvio. :)
Bob Somers,

6

Due grandi motivi stanno dando un senso alla trama non imballata e ai manufatti dei bordi .

Come hai detto, per un artista può essere molto difficile capire come le loro modifiche 2D avvolgeranno il modello 3D se le cuciture non hanno senso. Nel caso in cui ogni faccia fosse separata e posizionata in modo ottimale con un qualche tipo di algoritmo di imballaggio del cestino, sarebbe quasi impossibile modificare la trama a mano. Speriamo che stiano usando una sorta di strumento di pittura 3D in questi giorni, ma è comunque bello (e necessario!) Fare le modifiche direttamente sulla trama 2D.

L'altro problema (artefatti sui bordi) può manifestarsi a causa di limiti di precisione in virgola mobile con campionamento delle trame. Diciamo che le facce sono tutte disposte scollegate su uno sfondo nero. A causa di un errore in virgola mobile nei cordoni della trama o durante il campionamento sulla scheda video, è molto probabile che i pixel del bordo nero vengano occasionalmente visualizzati o miscelati quando la trama viene filtrata. Poiché questo ha effetto su ogni faccia, avrai questo strano effetto artefatto-wireframe in corso. L'unico modo per combatterlo sarebbe quello di ridurre artificialmente le corde della trama in modo così lieve, ma poi ogni faccia sembrerebbe strana perché non si allineerebbe con i suoi vicini per quanto riguarda la trama.

La cosa bella della minimizzazione delle cuciture è che ci sono meno spigoli nel modello in cui la faccia è adiacente allo sfondo (inutilizzato), quindi ci sono meno posti in cui questi artefatti si insinuano. La maggior parte delle facce sono immediatamente adiacenti alle loro facce vicine nella modello reale, quindi gli artefatti del bordo sono in realtà pixel adiacenti nella trama e non li noterai mai.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.