Il bianco è il miglior colore di base per iniziare quando si prevede di sfumare gli sprite all'interno di Unity?


10

Sto cercando di prototipare un gioco in Unity che consisterà in solidi folletti quadrati / piastrelle. Immagino di poter rappresentare diversi tipi di oggetti con colori diversi per ciascuna delle tessere del gioco.

Immagino di poter importare un singolo sprite quadrato e di sfumarlo opportunamente in Unity rispetto ai quadrati importati di molti colori diversi.

La mia esperienza con la regolazione della tonalità e della saturazione in Photoshop dimostra che il bianco non è un colore facile da cambiare poiché le cose bianche rimangono spesso bianche. I miei test su Unity dimostrano che posso cambiare il "colore" di uno sprite in qualcosa di diverso dal bianco e lo sprite è apparentemente ombreggiato in modo appropriato, nonostante ciò che avrei pensato in base alla mia esperienza con Photoshop.

Dato che gli oggetti bianchi sembrano assumere la giusta sfumatura di colore quando cambiati in Unity, il mio istinto mi dice che questo è il miglior colore di base per cominciare, il che significa che posso importare un singolo sprite quadrato bianco e semplicemente regolare il colore per rappresentare oggetti diversi e stati degli oggetti.

Uno sprite bianco è in realtà il miglior sprite di colore per cominciare e perché qualcosa di simile funziona in Unity invece di regolare la tonalità e la saturazione in Photoshop?

inserisci qui la descrizione dell'immagine


Innanzitutto, definisci "migliore".
Krythic,

Risposte:


13

Il bianco è il miglior colore di base per una rappresentazione fedele. Anche mantenere la scala di grigi dello sprite può apportare alcune semplici regolazioni del colore per i team, ecc.

Unity applica una Multiplymodalità di fusione alla trama e al colore dello sprite.

Il tipo di colore di Unity è compreso tra 0 e 1 incluso.

Color.White è uguale a (1, 1, 1, 1).

Sapendo che 1volte qualsiasi cosa è se stessa.

Se la scala di grigi textureviene miscelata con il Colorcampo Sprite Renderer , ogni pixel è esso stesso. La modifica di questo campo moltiplica semplicemente ogni valore di scala di grigi uniforme per ciascun componente del colore.

Colorando un po 'di uno sprite


Puoi giocare con la modalità di fusione Moltiplica nel tuo editor di immagini preferito come Photoshop o GIMP.

Installazione di Photoshop


4

Sprites-Additive.shader - GitHub Gist

I colori Unity hanno 4 valori float tipici di molti formati cromatici RGBA, corrispondenti ai singoli valori percentuali di colore Rosso, Verde, Blu e il canale di trasparenza Alpha.

Inoltre, come menzionato sopra, la "Tinta" predefinita applicata da Unity è uno shader moltiplicativo che Photoshop chiama questo effetto "Moltiplica" e il processo sta letteralmente moltiplicando i valori di colore nei pixel dello sprite con il valore di colore selezionato.

Il problema è che uno shader matematico a colori moltiplicativo produrrà SEMPRE la stessa tonalità (se si "moltiplica" per il bianco) o il colore più scuro se si moltiplica per qualsiasi altra cosa. Mi sono imbattuto nella situazione in cui volevo l'effetto esattamente opposto in una situazione di tipo fabbro. Il metallo riscaldato non dovrebbe essere moltiplicato per il giallo per produrre una tonalità più scura:

shader moltiplicativo di Yellow

Invece, riscrivo lo shader moltiplicativo predefinito di Unity per renderlo aggiuntivo. I risultati erano più in linea con quello che stavo cercando:

shader additivo

Fornirò una sintesi al riscritto Sprites-Additive.shader se qualcuno è interessato.

Ecco un buon riferimento sulla terminologia e le modalità del colore: http://www.northlite.net/ps/blend.htm


Un utente senza abbastanza reputazione per commentare ha espresso interesse nel vedere il codice shader per questo effetto. Lo hai ancora disponibile per la condivisione?
DMGregory

1
Ehi, non lo ho prontamente disponibile ora, ma lo troverò e otterrò un collegamento il prima possibile. Stasera se possibile.
Joe,

2
Lo riprendo, l'ho trovato relativamente facilmente e l'ho aggiunto a un Gist sul mio GitHub. L'unica differenza PRINCIPALE tra uno shader additivo e moltiplicativo riguarda la trasparenza. Nell'additivo shader ho impostato un limite di trasparenza del 10% per mantenere l'alfa relativa dei pixel con valori alfa bassi. Non devi preoccuparti di questo genere di cose su uno shader moltiplicativo a causa della natura di quella matematica.
Joe,
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.