Shader de opacidade na Unity

Por: Broks  

Em: 28/01/2016 21:25

Olá amigos !

Preciso montar um shader na Unity com opacidade e não tenho a menor ideia com fazer. Preciso colocar uma cadeia de montanhas ao fundo e longe no meu jogo e para isso não quero recorrer a uma malha 3d e sim a uma imagem 2 D , economizando com isso muitos polígonos na cena .

Podem me dar uma dica ou me indicar um tuto?
Olá,

Abaixo segue a resposta do André.

-------------------------------------

Oi, tudo bem?

Atualmente utilizamos o Standard Shader na Unity, que é o material fisicamente correto, os Shaders antigos têm materiais específicos para cada situação, mas no Standard Shader está tudo junto como acontece com o material Arch&Design do Mental Ray ou o VRayMtrl do V-Ray no 3ds max.

Você cria o Standard Shader na Unity clicando no botão Creat da aba Project e escolhendo Material, por padrão já será criado o Standard Shader.
Logo no início do menu dele tem o item Rendering Mode para você escolher o estilo do Shader, por padrão vem com a opção Opaque para criar materiais sem transparência.
Clicando nesta lista de modos de rendering vai aparecer as opções Cutout, Fade e Transparency, como mostra a imagem \"unity_mat1.jpg\" em anexo.

Para o que você deseja fazer é melhor escolher a opção Cutout em vez da Transparency, pois o Cutout trabalha apenas com preto e branco, onde for preto ficará completamente transparente e onde for branco ficará completamente opaco.
Já o modo Transparency utiliza os 256 tons de cinza para definir vários níveis de transparência e por consequência exige mais processamento para exibição no jogo.

Para ajustar a transparência no modo Transparency você precisa trabalhar com uma imagem com canal Alpha ou ajustar o cor do Alpha como um todo para o material ficar transparente por igual.
O Alpha fica dentro do Albedo, portanto, quando clicar no Slot de cor do Albedo vai abrir uma janelinha para escolher as cores RGB e no final tem a cor A de Alpha.
Se mantiver o Alpha com a cor branca o material ficará completamente opaco, conforme for adicionando preto na cor do Alpha o material vai ficando transparente e quando colocar preto puro no Alpha o material ficará completamente invisível.
Note que abaixo do Slot de cor do Albeto vai aparecer uma faixa indicando o nível do Alpha, como mostra a imagem \"unity_mat2.jpg\" em anexo.

Como eu disse acima, você pode utilizar uma imagem para definir onde é transparente e o nível da transparência.
Para isso é necessário criar um canal Alpha na imagem no Photoshop e salvar num formato que identifique o canal Alpha como TGA, TIF e PNG, se salvar em JPG o Alpha será perdido!!!
Adicionando esta imagem com canal Alpha no Albedo, a cor da imagem vai ficar na cor do material e os tons de cinza do canal Alpha vão definir os diversos níveis de transparência do material.

É bem simples criar o canal Alpha no Photoshop, basta acessar a aba Channels, clicar no ícone New Channel na parte inferior da aba e assim vai aparecer um novo Layer chamado Alpha1.
Depois disso você pode pintar com tons de cinza para definir as transparências ou colar uma imagem em tons de cinza neste canal.
Em anexo estou enviando a imagem \"ps_alpha.jpg\" para você ver onde ficam estes recursos.

O modo Cutout do material Standard faz exatamente a mesma coisa e trabalha da mesma forma que o modo Transparency, mas é mais otimizado porque só aceita preto e branco em vez dos 256 tons de cinza, então, ele é ideal para quando precisa recortar coisas como acontece em folhas de árvores, detalhes de roupas, telas e grades, além de criar a paisagem de fundo recortando o céu para utilizar o céu físico da Unity, portanto, é a melhor opção para o que você deseja fazer.

O processo será exatamente o mesmo, basta criar o canal Alpha na imagem da paisagem do fundo e colar a máscara preto e branco que define o recorte, depois salva em TGA 32 bits, TIF ou PNG.
Adicionando esta imagem no Albedo e mudando o Rendering Mode para Cutout, o recorte será imediato.
Mas note que aparecerá um novo recurso no material Standard chamado AlphaCutoff, como mostra a imagem \"unity_mat3.jpg\" em anexo.
Este recurso serve para definir o Threshold do Alpha, ou seja, a sensibilidade dele, assim, se tiver algumas áreas que não são preto puro ou branco puro no canal Alpha, você pode ajustar o AlphaCutoff para incluir estes tons no branco puro ou no preto puro, basta mover a barrinha e ver o resultado no material até acertar.

Para o que você deseja fazer é só importar um cilindro sem fundo e sem topo na cena, aumentar ele para ficar em torno do cenário e aplicar o material com Cutout para recortar o céu e deixar somente as montanhas.

OBS: Quando importar a imagem com Alpha na Unity, normalmente o Alpha será reconhecido sem maiores problemas, mas se você modificar o tipo de compressão padrão na importação pode excluir o Alpha.
Na lista de modos de compressão nas configurações de importação tem vários itens com o prefixo RGBA, todos estes que tem RGBA vão aceitar o Alpha, os que só tem RGB vão excluir o Alpha.

Abraços e tudo de bom.

Faça o login para poder comentar

Usuários conectados

Total de mensagens publicadas pelos membros da comunidade: 710590.

Total de membros registrados: 138057

Últimos membros registrados: REMOVIDR, vagnerthuram02, DianaRCCastro, @muiladas, IvanClaudio, ADERSONS, elasticare, Acfabbri.

Usuário(s) on-line na última hora: 734, sendo 20 membro(s) e 714 visitante(s).

Membro(s) on-line na última hora: AlexTerra, Duda, Gabriel.C, billypaul, Reinaldo Silva, Augusto Peixoto, Max Idalgo, Eduardo Ramos, gilson antunes, renaz, Pierrejr78, Le_Andro, Thiago Couto, Lucas Reis, Leonardo, Henrique Ribeiro, Frederico Wagner N. R., REMOVIDR, Fernando Cunha, Marco Rocha.

Legenda: Administrador, Especial, Moderador, Parceiro .

3D1 © Três D1 © 1999-2024. Todos direitos reservados.