• Benvenuto in Making Videogames!
  • Dai sfogo alla tua fantasia!
  • Crea il tuo Videogioco!
Benvenuto ospite! Login Registrati




Valutazione discussione:
  • 0 voto(i) - 0 media
  • 1
  • 2
  • 3
  • 4
  • 5
Esportazione da Blender a Unity
#1
Ciao a tutti,
ho un problema inerente l'importazione su Unity di oggetti fatti su Blender; nello specifico vado ad elencare la procedura:

In Blender creo un oggetto, e in EditMode vado a dare piu' materiali alle facce, decidendo quali di queste facce saranno lucide e quali saranno opache.
Per fare questo vado ad aumentare o diminuire il fattore Specular del materiale ottenendo così superfici lucide ed altre opache.
Dopodiché tramite l'unwrap ottengo la mappa UV dell'oggetto in questione avendo così la possibilità di creare le texture con un programma di disegno 2D, e reimportando il risultato su Blender vado ad applicarlo come texture dei materiali.
Dopo creo un Bake delle texture ottendo così la DiffuseMap, un Bake delle normal ottenendo la NormalMap, ed un bake delle Specular Intensity ottenendo la SpecularMap.
Faccio questo per dare a Unity tutte le informazioni necessarie dell'oggetto che passerò tramite estensione .fbx, in questo modo si dovrebbe importare l'oggetto e caricati i materiali e la texture, tramite gli appositi shader di Unity ottenere quello che ho creato in Blender(quindi un'oggetto che avrà delle facce lucide e delle altre opache).

Ora; la mappatura Normal e la Diffuse riusciamo a caricarle in modo corretto, il problema nasce nel momento in cui importiamo la SpecularMap, inserita quest'ultima su Unity, il problema è che il materiale dell'oggetto non cambia, non si riesce a vedere la differenza delle facce opache da quelle lucide,facendo altre prove e capitato anche che inserendo la specular map, l'oggetto diventasse trasparente nelle parti in cui la mappa Specular è bianca(in teoria il bianco su una specular dovrebbe corrispondere ad una lucidità alta).

Molto probabilmente stiamo sbagliando la scelta dello shader da utilizzare su Unity.
Se avete consigli da darci ve ne saremmo grati. Smile

Grazie per l'attenzione e per le dritte che potete darci.
 
#2
Be da quello che so io e dalle mie esperienze i materiali non si esportano infatti le texture si esportano bene ma i materiali sono fatti solo ed esclusivamente per blender , ripeto da quello che ho provato io ma forse un modo c'è :
http://answers.unity3d.com/questions/121...erial.html
Prova a dare un'occhiata a questo e vedi se può tornarti utile -
 
#3
Grazie Skynet,
apprezzo tantissimo il tuo aiuto.
Ora vediamo se riusciamo ad ottenere i risultati voluti e vi aggiornero' appena sapro' qualcosa in piu'.
Nel caso dovessimo risolvere, sarà mia premura creare un post in cui spiego passo passo il lavoro da svolgere, nel caso potesse venire utile per altri utenti del forum.
 
#4
Nice one Wink
 
#5
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ìSadchiedo 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 Tongue).
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 Smile :
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.
Smile

Buon Anno a Tutti.
 
#6
Ben fatta a questi punto chiudiamo Big Grin .
 
  


Discussioni simili
Discussione Autore Risposte Letto Ultimo messaggio
  esportazione da c4d a unity tommygnone00 14 1,847 23-12-2015, 08:12 PM
Ultimo messaggio: yuriiacuzzo
  da unity 3.5 a unity 4 gufo92 1 989 29-07-2012, 03:29 PM
Ultimo messaggio: Skyline

Vai al forum:


Browsing: 1 Ospite(i)