Fórum Sharpgames
 
 
  Forum  Criação de Jogo...  Gráficos 2D/3D  Criação de "Máscaras"
Anterior Anterior
 
Próximo Próximo
Nova Entrada 19/3/2009 21:02
  lbmaker
12 tópicos
10th Level Poster


Criação de "Máscaras" 
Gostaria de saber se o XNA possui algum meio de criar máscaras a partir de texturas, ex:

imagem : img12.imageshack.us/my.php?image=mask1.png
mascara :  http://img5.imageshack.us/my.php?image=mask2.png

Pra falar a verdade, o que eu queria mesmo era criar um efeito "flash" tipo uma mascara branca que aparece cobrindo toda a imagem e aos poucos vai clareando até ficar totalmente transparente, mais como não encontrei nada parecido implementado, pensei em fazer manualmente mais ja empaquei em como criar essa máscara branca (ou de qualquer outra cor) a partir da textura.

Muito obrigado e até mais...
 
Nova Entrada 20/3/2009 0:12
  lucianoJose
195 tópicos
Iniciante


Re: Criação de "Máscaras" 
 lbmaker escreveu
Gostaria de saber se o XNA possui algum meio de criar máscaras a partir de texturas, ex:

imagem : img12.imageshack.us/my.php?image=mask1.png
mascara :  http://img5.imageshack.us/my.php?image=mask2.png

Pra falar a verdade, o que eu queria mesmo era criar um efeito "flash" tipo uma mascara branca que aparece cobrindo toda a imagem e aos poucos vai clareando até ficar totalmente transparente, mais como não encontrei nada parecido implementado, pensei em fazer manualmente mais ja empaquei em como criar essa máscara branca (ou de qualquer outra cor) a partir da textura.

Muito obrigado e até mais...


olá lbmaker, tudo bem?

Dependendo do que você quer, esta pode ser uma possível solução:

Você tem que ter outra imagem(toda branca) que vai ser renderizada na frente da sua imagem normal. Daí é só montar o algoritmo para aquela imagem toda branca aparecer como se fosse um "flash"!

Existem outras soluções para esse problema? sim, existem, mas a que eu apresentei acima, eu acredito ser bem simples. 1º a gente começa com algo simples, depois vai aumentando a complexidade.

Se você tiver alguma dificuldade em executar essa solução que eu apresentei acima, por favor, fique a vontade em  dizer pois eu posso montar um exemplo pra você.

Abraços amigo.

@lucianoJoseBr My Blog: http://lucjose.wordpress.com
 
Nova Entrada 20/3/2009 0:37
  lbmaker
12 tópicos
10th Level Poster


Re: Criação de "Máscaras" 
É exatamente isso que eu queria fazer, mais porém criar a mascara em runtime, pois se eu for criar uma imagem mascara para cada imagem do meu game ele vai praticamente dobrar de tamanho.

Até mais e valew...
 
Nova Entrada 20/3/2009 13:58
  lucianoJose
195 tópicos
Iniciante


Re: Criação de "Máscaras" 
 lbmaker escreveu
É exatamente isso que eu queria fazer, mais porém criar a mascara em runtime, pois se eu for criar uma imagem mascara para cada imagem do meu game ele vai praticamente dobrar de tamanho.

Até mais e valew...


Eu fiz um método pra vc poder obter isso dinamicamente. Dá uma olhada e vê se isso serve para o que você está querendo fazer. Se não servir, avisa ai! 

 
Texture2D GetFlashImage(Texture2D orignalImg)
        {
            Color[] colorsA = new Color[orignalImg.Width * orignalImg.Height];           
           
            Color[] colorsB = new Color[orignalImg.Width * orignalImg.Height];
 
            Texture2D flashImg = new Texture2D(this.GraphicsDevice, orignalImg.Width, orignalImg.Height);
 
            originalImage.GetData<Color>(colorsA);
 
            int total = orignalImg.Width * orignalImg.Height;
 
            for (int i = 0; i < total; i++)
            {
                Color cor = colorsA[i];
               
                cor.R = 255;
                cor.G = 255;
                cor.B = 255;
 
                colorsB[i] = cor;
            }
 
            flashImg.SetData<Color>(colorsB);
 
            return flashImg;
        }



@lucianoJoseBr My Blog: http://lucjose.wordpress.com
 
Nova Entrada 20/3/2009 21:39
  lbmaker
12 tópicos
10th Level Poster


Re: Criação de "Máscaras" 
Isso é o que eu temia, ter que criar as máscaras usando funções "pixel a pixel", mais já que é o único jeito vamos usar essa mesmo né...

só tem algumas auterações, pois como uso a cor rosa puro (255, 0, 255) como cor de fundo transparente, tem que fazer uma auteraçãozinha para quando for da cor rosa puro copiar ela, porque sinão cria uma mascara totalmente branca hehe... a auteração seria criar uma variavel maskColor para guardar a cor que será "ignorada" antes do loop :

Color maskColor;
maskColor = new Color(255, 0, 255, 255);

e dentro do loop só fazer um if para checar se a cor não é a cor da máscara :

                if (cor != maskColor)
                {
                    cor.R = 255;
                    cor.G = 255;
                    cor.B = 255;
                }

Bem, resolveu meu problema, mais se souberem de algum meio de criar isso sem ser "pixel a pixel" não esqueçam de avisar.


Até mais e valew...
 
Anterior Anterior
 
Próximo Próximo
  Forum  Criação de Jogo...  Gráficos 2D/3D  Criação de "Máscaras"
Logos do XBox 360, XNA e Games For Windows
Copyright 2006-2012 por SharpgamesPolítica de Privacidade  |  Termos de Uso