01-01-2016, 04:47 PM
Eccomi qui, Anno Nuovo conoscenze nuove.
Dopo varie ora di prove e dopo aver scassato le balle a molti componenti del Team, penso di essere arrivato ad una soluzione per l'importazione delle mappe da Blender a Unity.
Dopo aver installato Unity ho finalmente potuto testare di persona i vari modi per importare le mappe(un ringraziamento particolare lo dedico a Davide che ha avuto la pazienza di darmi le prime nozioni basilari sul come iniziare a muovermi su Unity).
In pratica funziona cosìchiedo scusa in anticipo se quello che scrivero' non sarà esposto in modo professionale usando i termini corretti, ma al momento queste e quello che ho capito e lo espongo in questo modo).
Quando in Blender andiamo a creare un'oggetto alla quale diamo piu' materiali, il risultato finale nella renderizzazione (tasto F12) ci porterà a dei risultati piu' o meno accettabili su quello che abbiamo creato, e se qualcosa non dovesse piacerci, facciamo sempre in tempo ad andare a reimpostare lo slider di un determinato parametro per migliorare il render.
Dopo aver assegnato i materiali e le loro specularità, riflessioni, trasparenze, andremo a caricare delle texture(previa mappatura UV) da attaccare alla nostra mesh in modo da arricchire quest'ultima con i colori e i dettagli che abbiamo disegnato sul nostro programma 2D(es Gimp,Photoshop ecc.)
Molto bene, ora sempre in blender andremo a creare (bake) delle mappe che riporteranno la trasposizione di un po' tutti i parametri che abbiamo assegnato all'oggetto in fase di creazione; quindi avremo:
1)una mappa Diffuse(la mappa contenete le informazioni della texture che verrà applicata alla mesh)
2)una mappa Normal(la mappa contiene delle variazioni di colore bluastro inerenti i giochi di ombre e luci su un oggetto, in modo da rappresentare il piu' fedelmente le irregolarità della superficie)
3)una mappa Specular(la mappa contiene delle variazioni in scala di grigi che modificano il riflesso del materiale, in pratica tramite questa mappa, avremo la possibilità di decidere quali parti dell'oggetto sono piu' lucide e riflettenti di altre)
4)una mappa Emission(la mappa contiene anch'essa delle variazioni in scala di grigi che indicano se una parte dell'oggetto emettera della luce propria ad esempio un neon)
5)una mappa Ambient Occlusion(questa mappa fa un bake delle ombre precalcolate dell'oggetto, praticamente sono le ombre che saranno attaccate all'oggetto e rimarranno invariate, in questo modo riusciamo a dare un po' piu' di profondità al risultato finale della texture sull'oggetto evitando di farli calcolare in Runtime).
Queste mappe verranno esportate nel formato che piu' si preferisce,di standard Blender usa il .png
Finita questa prassi dovremmo avere una cartella (creata da noi) che conterrà:
1)file fbx dell'oggetto che verrà riconosciuto da Unity e riporterà l'oggetto creato su Blender
2)file Diffuse.png
3)file Normal.png
4)file Specular.png
5)file Emission.png
6)file Ambient Occlusion.png
Questa cartella verrà importata negli Assets di Unity dandoci così la possibilità di avere tutto a disposizione per poter avere l'oggetto come è stato creato.
Ora da quello che penso di aver capito, Unity e Blender non hanno gli stessi tipi di shader per la creazione e la manipolazione dei materiali, e puo' risultare il problema che quando un'oggetto viene importato su unity, non rispecchi regolramente i parametri che abbiamo assegnato da blender.
Per correggere questo problema ecco che possiamo aiutarci con le mappe fatte in precedenza(Diffuse, Normal, Specular ecc.ecc.)
In unity basterà andare a selezionare lo shader piu' corretto per aver modo d'inserire le mappe create ed ottenere un buon risultato.
Quello che sto' usando io al momento è lo shader "standard con (specular setup)".
Questo shader ci darà la possibilità di caricargli le varie mappe; quindi in:
-Albedo andro' a mettere la mia Diffuse
-Specular ci carichero' Specular
-Normal ->Normal
e così vià sino a quando sull'anteprima vedro' che l'oggetto ha preso colore e inizia ad essere simile a quello fatto su Blender.
Ora per i piu' pignoli; dopo aver inserito queste mappe, se guardiamo bene il nostro oggetto noteremo che tutto è corretto(la diffuse ricopre bene la mesh, la normal crea un bell'effetto di ombre e luci), ma la specular ancora non rispecchia la differenza di riflessioni dei materiali, si ora l'oggetto è un po' più grigio dove dovrebbe essere opaco ma girandoci intorno con la telecamera, si potrà notare che brilla sempre tutto, come se fosse tutto lucido.
Invece noi su blender abbiamo creato delle parti opache che pero' non vediamo come vorremmo su Unity.
Questo perché esiste un'ulteriore mappa chiamata Gloss Map; questa è la mappa che ci serve per ottenere il risultato voluto sulla lucidità e opacità dei materiali.
Unity riconosce automaticamente questa mappa Gloss cercandola sul canale Alpha della Specular Map.
Capisco che il giro di parole possa essere un po' astruso da capire(e continuo a chiedere scusa per il mio modo di esprimermi ).
Ma in pratica funziona così:
Se noi apriamo la nostra Specular Map su Gimp ed andiamo a visualizzare il suo canale Alpha, noteremo che questo è tutto bianco.
In questo modo Unity quando andrà a leggere le informazioni di colore sulla Specular Map, vedrà che il canale Alpha è bianco e quindi assegnerà a tutto l'oggetto la lucidità.
Per risolvere il problema, ci basterà modificare i colori del canale Alpha da bianco a dei toni di grigio sempre piu' scuri, dove al nero la lucidità sarà pari a zero; salvare il nostro file png e reimportarlo su Unity.
Ecco qui, ora abbiamo il nostro oggetto, con le sue texture, le sue normal ed anche la sua mappa speculare con i materiali lucidi ed opachi proprio come lo abbiamo creato su Blender.
Posto qui di seguito un link che spiega come creare una gloss map sul canale Alpha ed i risultati che si ottengono su unity, è il filmato che mi ha risolto il problema :
Come usare le Gloss Map su Unity
Spero che questo post possa venir utile a chiunque incontri i problemi che ho riscontrato io nell'importazione da Blender a Unity.
Capisco che non è spiegato alla perfezione, ma io sono a disposizione, se avete dei dubbi, anche se avete delle soluzioni piu' veloci, non esitate a contattarmi, sarà un piacere scambiare 4 chiacchere.
Buon Anno a Tutti.
Dopo varie ora di prove e dopo aver scassato le balle a molti componenti del Team, penso di essere arrivato ad una soluzione per l'importazione delle mappe da Blender a Unity.
Dopo aver installato Unity ho finalmente potuto testare di persona i vari modi per importare le mappe(un ringraziamento particolare lo dedico a Davide che ha avuto la pazienza di darmi le prime nozioni basilari sul come iniziare a muovermi su Unity).
In pratica funziona cosìchiedo scusa in anticipo se quello che scrivero' non sarà esposto in modo professionale usando i termini corretti, ma al momento queste e quello che ho capito e lo espongo in questo modo).
Quando in Blender andiamo a creare un'oggetto alla quale diamo piu' materiali, il risultato finale nella renderizzazione (tasto F12) ci porterà a dei risultati piu' o meno accettabili su quello che abbiamo creato, e se qualcosa non dovesse piacerci, facciamo sempre in tempo ad andare a reimpostare lo slider di un determinato parametro per migliorare il render.
Dopo aver assegnato i materiali e le loro specularità, riflessioni, trasparenze, andremo a caricare delle texture(previa mappatura UV) da attaccare alla nostra mesh in modo da arricchire quest'ultima con i colori e i dettagli che abbiamo disegnato sul nostro programma 2D(es Gimp,Photoshop ecc.)
Molto bene, ora sempre in blender andremo a creare (bake) delle mappe che riporteranno la trasposizione di un po' tutti i parametri che abbiamo assegnato all'oggetto in fase di creazione; quindi avremo:
1)una mappa Diffuse(la mappa contenete le informazioni della texture che verrà applicata alla mesh)
2)una mappa Normal(la mappa contiene delle variazioni di colore bluastro inerenti i giochi di ombre e luci su un oggetto, in modo da rappresentare il piu' fedelmente le irregolarità della superficie)
3)una mappa Specular(la mappa contiene delle variazioni in scala di grigi che modificano il riflesso del materiale, in pratica tramite questa mappa, avremo la possibilità di decidere quali parti dell'oggetto sono piu' lucide e riflettenti di altre)
4)una mappa Emission(la mappa contiene anch'essa delle variazioni in scala di grigi che indicano se una parte dell'oggetto emettera della luce propria ad esempio un neon)
5)una mappa Ambient Occlusion(questa mappa fa un bake delle ombre precalcolate dell'oggetto, praticamente sono le ombre che saranno attaccate all'oggetto e rimarranno invariate, in questo modo riusciamo a dare un po' piu' di profondità al risultato finale della texture sull'oggetto evitando di farli calcolare in Runtime).
Queste mappe verranno esportate nel formato che piu' si preferisce,di standard Blender usa il .png
Finita questa prassi dovremmo avere una cartella (creata da noi) che conterrà:
1)file fbx dell'oggetto che verrà riconosciuto da Unity e riporterà l'oggetto creato su Blender
2)file Diffuse.png
3)file Normal.png
4)file Specular.png
5)file Emission.png
6)file Ambient Occlusion.png
Questa cartella verrà importata negli Assets di Unity dandoci così la possibilità di avere tutto a disposizione per poter avere l'oggetto come è stato creato.
Ora da quello che penso di aver capito, Unity e Blender non hanno gli stessi tipi di shader per la creazione e la manipolazione dei materiali, e puo' risultare il problema che quando un'oggetto viene importato su unity, non rispecchi regolramente i parametri che abbiamo assegnato da blender.
Per correggere questo problema ecco che possiamo aiutarci con le mappe fatte in precedenza(Diffuse, Normal, Specular ecc.ecc.)
In unity basterà andare a selezionare lo shader piu' corretto per aver modo d'inserire le mappe create ed ottenere un buon risultato.
Quello che sto' usando io al momento è lo shader "standard con (specular setup)".
Questo shader ci darà la possibilità di caricargli le varie mappe; quindi in:
-Albedo andro' a mettere la mia Diffuse
-Specular ci carichero' Specular
-Normal ->Normal
e così vià sino a quando sull'anteprima vedro' che l'oggetto ha preso colore e inizia ad essere simile a quello fatto su Blender.
Ora per i piu' pignoli; dopo aver inserito queste mappe, se guardiamo bene il nostro oggetto noteremo che tutto è corretto(la diffuse ricopre bene la mesh, la normal crea un bell'effetto di ombre e luci), ma la specular ancora non rispecchia la differenza di riflessioni dei materiali, si ora l'oggetto è un po' più grigio dove dovrebbe essere opaco ma girandoci intorno con la telecamera, si potrà notare che brilla sempre tutto, come se fosse tutto lucido.
Invece noi su blender abbiamo creato delle parti opache che pero' non vediamo come vorremmo su Unity.
Questo perché esiste un'ulteriore mappa chiamata Gloss Map; questa è la mappa che ci serve per ottenere il risultato voluto sulla lucidità e opacità dei materiali.
Unity riconosce automaticamente questa mappa Gloss cercandola sul canale Alpha della Specular Map.
Capisco che il giro di parole possa essere un po' astruso da capire(e continuo a chiedere scusa per il mio modo di esprimermi ).
Ma in pratica funziona così:
Se noi apriamo la nostra Specular Map su Gimp ed andiamo a visualizzare il suo canale Alpha, noteremo che questo è tutto bianco.
In questo modo Unity quando andrà a leggere le informazioni di colore sulla Specular Map, vedrà che il canale Alpha è bianco e quindi assegnerà a tutto l'oggetto la lucidità.
Per risolvere il problema, ci basterà modificare i colori del canale Alpha da bianco a dei toni di grigio sempre piu' scuri, dove al nero la lucidità sarà pari a zero; salvare il nostro file png e reimportarlo su Unity.
Ecco qui, ora abbiamo il nostro oggetto, con le sue texture, le sue normal ed anche la sua mappa speculare con i materiali lucidi ed opachi proprio come lo abbiamo creato su Blender.
Posto qui di seguito un link che spiega come creare una gloss map sul canale Alpha ed i risultati che si ottengono su unity, è il filmato che mi ha risolto il problema :
Come usare le Gloss Map su Unity
Spero che questo post possa venir utile a chiunque incontri i problemi che ho riscontrato io nell'importazione da Blender a Unity.
Capisco che non è spiegato alla perfezione, ma io sono a disposizione, se avete dei dubbi, anche se avete delle soluzioni piu' veloci, non esitate a contattarmi, sarà un piacere scambiare 4 chiacchere.
Buon Anno a Tutti.