O branco é a melhor cor de base para começar a planejar sprites no Unity?

10

Estou estudando a criação de protótipos de um jogo no Unity, que consistirá em sprites quadrados sólidos / ladrilhos. Eu acho que posso representar diferentes tipos de objetos com cores diferentes para cada uma das peças do jogo.

Eu acho que posso importar um único sprite quadrado e sombrear adequadamente no Unity, em vez de quadrados importados de muitas cores diferentes.

Minha experiência com o ajuste de matiz e saturação no Photoshop mostra que o branco não é uma cor fácil de mudar, pois as coisas brancas geralmente permanecem brancas. Meus testes no Unity mostram que eu posso alterar a "cor" de um sprite para algo que não seja branco, e o sprite parece sombreado adequadamente, apesar do que eu pensaria, dada a minha experiência no Photoshop.

Como os objetos brancos parecem ter o sombreamento de cor apropriado quando alterados no Unity, meu intestino me diz que esta é a melhor cor de base, o que significa que eu posso importar um único sprite quadrado branco e simplesmente ajustar a cor para representar objetos diferentes e estados do objeto.

Um sprite branco é realmente o melhor sprite de cor para começar e por que algo assim funciona no Unity, em vez de ajustar o matiz e a saturação no Photoshop?

insira a descrição da imagem aqui

SpartanDonut
fonte
Primeiro, defina "melhor".
Krythic #

Respostas:

13

O branco é a melhor cor de base para uma representação verdadeira. Manter a escala de cinza do sprite também pode facilitar alguns ajustes de cor para as equipes etc.

O Unity aplica um Multiplymodo de mesclagem à textura e cor do sprite.

O tipo de cor da unidade varia de 0 a 1, inclusive.

Color.White é igual a (1, 1, 1, 1).

Sabendo que o 1tempo é algo em si.

Se a escala de cinza texturefor combinada com o Colorcampo Sprite Renderer , cada pixel será ele próprio. Alterar esse campo simplesmente multiplicará cada valor uniforme da escala de cinza por cada componente da cor.

Pintando um sprite


Você pode jogar com o modo de mesclagem Multiplicar no seu editor de imagens favorito, como Photoshop ou GIMP.

Instalação do Photoshop

MLM
fonte
4

Sprites-Additive.shader - GitHub Gist

As cores da unidade possuem 4 valores flutuantes típicos de muitos formatos de cores RGBA, correspondentes aos valores percentuais individuais das cores Vermelho, Verde, Azul e canal de transparência Alpha.

Além disso, como mencionado acima, o "Tonalidade" padrão aplicado pelo Unity é um sombreador multiplicativo que o Photoshop chama esse efeito de "Multiplicar" e o processo está literalmente multiplicando os valores de cores nos pixels do seu sprite pelo valor selecionado.

O problema disso é que um sombreador matemático de cores multiplicativo sempre produzirá o mesmo matiz (se você "multiplicar" por branco) ou cores mais escuras se você multiplicar por qualquer outra coisa. Me deparei com a situação em que queria o efeito exatamente oposto em uma situação do tipo de ferraria. O metal aquecido não deve ser multiplicado pelo amarelo para produzir uma tonalidade mais escura:

sombreador multiplicativo por Yellow

Em vez disso, reescrevi o sombreador multiplicativo padrão do Unity para ser um aditivo. Os resultados foram mais parecidos com o que eu estava procurando:

sombreador aditivo

Fornecerei uma essência do Sprites-Additive.shader reescrito , se alguém estiver interessado.

Aqui está uma boa referência sobre terminologia e modos de cores: http://www.northlite.net/ps/blend.htm

Joe
fonte
Um usuário sem reputação suficiente para comentar manifestou interesse em ver o código de sombreador para esse efeito. Você ainda o tem disponível para compartilhar?
DMGregory
1
Ei, eu não o tenho disponível agora, mas vou desenterrá-lo e obter um link o mais rápido possível. Hoje à noite, se possível.
Joe
2
Retiro isso, achei-o com relativa facilidade e o adicionei a um Gist no meu GitHub. A única diferença MAIOR entre um sombreador aditivo e um multiplicador é lidar com transparência. No sombreador aditivo, defino um corte de transparência de 10% para manter o alfa relativo de pixels com baixos valores de alfa. Você não precisa se preocupar com esse tipo de coisa em um shader multiplicativo devido à natureza dessa matemática.
13136 Joe