Sviluppatori Unreal/UDK » Discussioni


Unreal/UDK - Texturing and Materials

  • 14 marzo 2012

    Ciao a tutti. Ci sono persone interessate a condividere esperienza / problemi / soluzioni sulla gestione materiali (texturing anche, oltre shader) su UDK? Io più ci lavoro, più scopro di non sapere.

     

    1.

    Inizio con uno spunto 'classico', la migliore resa delle normal. Provo a mettere giù al volo una checklist minima (minima nel senso che mi piacerebbe vederla criticata o raddoppiata). Questo vale soprattutto se la normal è stata ricavata dalla tx (con il plugin di photoshop, con Njob, con Ndo2, che devo ancora provare bene...).

     

    - la creazione della normal è di suo fondamentale ma non è questo il posto giusto :)

    - importare la tx definendo correttamente i settaggi

    - utilizzare correttamente, quando e se solo soprattutto serve, la normal di dettaglio (add > append su mask RG)

    - 'forzare' se serve la profondità della normal moltiplicando un constant3vector (con attenzione perchè può ovviamente essere del tutto incoerente con la luce generale)

    ....a vous :)

     

     

    2.

    Finisco con una domanda: sto iniziando a divertirmi, nei ritagli di tempo, sul tx e mat di una libreria (nel senso di una mesh) i cui libri dovrebbero mostrare, su uno stesso materiale trattato con maschere, diversi comportamenti che esaltino i diversi materiali (fisici): metallo, vetro, acqua, organico, ecc. I libri 'acqua' sono saranno dei mini-acquari, con nodi di panner che spostano le coordinate della porzione di normal in modo da simulare il movimento dell'acqua (come usato per l'acqua in generale). Usando per altre cose questa funzione, mi sono reso conto che la cosa più difficile è gestire, su oggetti non grandi (ho dato le capocciate su un plane che volevo usare come nebbia in movimento), in modo preciso o comunque non a braccio l'ampiezza degli spostamenti. Esiste un'alternativa?

  • Utente
    14 marzo 2012

    1.

    Ci sono vari modi di fare le normal, restando sull'argomento parliamo delle foto.

    Se realizzi una normal da una foto ti consiglio di creare una bump sequendo la forma della foto.

    I generatori di normal map ragionano sui colori, quindi possono sbagliare di brutto e darti risultati non voluti.

    Le speculari in una foto tipo questa http://3.bp.blogspot.com/_eU9RfqOS57A/TUIp2JEwBuI/AAAAAAAAAw0/8Si7p7_2fZ8/s1600/ceiling1.jpg

    avresti dei difetti dove ti ritroveresti tutte le speculari che fanno un'escrescenza verso l'esterno sbagliata.

     

    Un esempio del sistema è qui http://www.katsbits.com/tutorials/textures/how-not-to-make-normal-maps-from-photos-or-images.php .

    Un buon sistema senza plugin per texture non definite come rocce lo puoi trovare qui http://www.cgtextures.com/content.php?action=tutorial&name=normalmap

    Il sistema equivale ad alzare il valore di large details che trovi in diversi programmi come CrazyBump, NDo o PixPlant per citarne alcuni.

    Poi importi la normal con l'impostazione http://i757.photobucket.com/albums/xx212/crapgarden/skullTestQuestions__0007_Layer16.jpg

     

    Se vuoi potenziare la profondità della normal senza sprecare istruzioni nello shader puoi anche duplicare la normal in Photoshop e metterla in modalità Overlay levando il canale blu. Alla fine ricordati di normalizzare la normal map col tool che utilizzi abitualmente, personalmenete normalizzo rapidamente usando i plugin di xNormal.

     

    Non sò se è il tipo di risposta che cercavi nel punto 1, ma sono spunti di discussione.

     

    2.

     

    Potresti spiegare meglio la situazione?

  • 14 marzo 2012

    Grazie degli spunti, quelli di cgtextures vanno diritti a punti importanti. Sì, overlay a volte ne servono un bel po', specialmente su uvmap complesse; mi sono trovato bene pure con njob che estrae le normal dalle heightmap sovrapponendolo a dettagli ricavati da normal photoshop. In ogni caso la 'pulizia' della diffuse è importante (appiattire le variazioni tonali non utili soprattutto, il filtro 'accentua passaggio' a volte è un buon aiuto come la regolazione dei mezzitoni). Probabilmente sono io non versato, ma per fare una normal decorosa di una uv un po' complessa è tempo, tanto tempo.  Qui intendevo se esistono ulteriori specifiche da tenere previste su udk per migliorare la resa oltre a quelle che ho scritto (non ho parlato di risoluzione e di lodgroup, ma quelle fanno parte dei texture parameters da impostare a seconda).

    Sulla due, appena implemento il mat mi piacerebbe postare qui i nodi, perchè quello che punto è l'ottimizzazione su una struttura abbastanza complessa, è più semplice. Ma se vai su un materiale simile capisci cosa intendo: un esempio semplice da trovare è la sfera che muta dimensioni nella foliage map (stanno dentro le rovine), quel materiale utilizza proprio i panner, tra l'altro.

     

  • Utente
    14 marzo 2012

    Domani se mi ricordo installo UDK e ci guardo dentro.

  • Utente
    17 marzo 2012

    Come si chiama lo shader?

  • 17 marzo 2012
    Luca Eberhart ha scritto:

    Come si chiama lo shader?

    Il materiale è: RipplingWater

    ma anche LightBeam01 e MetallicSurface01 e MetallicSurface02 usano i panner o la world position (con sine, cosine, e costant clamp e altro) per 'muovere' la superficie della mesh.

    (editor Feb 2011, non ho controllato se nelle ver successive hanno cambiato nome.). La mappa dove puoi osservarli è la FoliageMap.

    al di là della complessità delle istruzioni degli shader, che in quei mat mescolano diversi effetti, vorrei vedere quali sono i parametri e le concatenazioni ottimali ed economiche per gestire spostamenti molto piccoli (mi sembra che il panner, rispetto al world position, sia un metodo più controllabile, ma devo ancora provare bene).

     

    --

     

    eh, appena sconfessato, sono comunque solo i nodi impostati sul worldpositionoffset gli essenziali...

  • Utente
    17 marzo 2012

    Se hai necessità di usare valori piccoli senza usare troppi decimali puoi passare il nodo dentro un DIVIDE.

    Se dividi per 100, dovrai ovviamente mettere 100 per ottenere quello che prima era 1.

  • Utente
    17 marzo 2012

    Confermo lo sconfessamento.

  • 17 marzo 2012
    Luca Eberhart ha scritto:

    Se hai necessità di usare valori piccoli senza usare troppi decimali puoi passare il nodo dentro un DIVIDE.

    Se dividi per 100, dovrai ovviamente mettere 100 per ottenere quello che prima era 1.

    (Y) :) lo provo sicuramente. Appena riesco a finirlo/implementarlo decorosamente lo posto (magari anche prima di rifinire le tx, anche perché uno degli obiettivi è usarne una sola con quello che mi serve sui vari canali, più la N) così magari mi date qualche commento. Grazie!