Fórum Sharpgames
 
 
  Forum  Criação de Jogo...  Algoritmos  Efeitos em Texturas 2D
Anterior Anterior
 
Próximo Próximo
Nova Entrada 10/8/2009 23:43
  felipehenrique
5 tópicos
Sem Ranking


Efeitos em Texturas 2D 

Olá pessoal.
Eu estou com algumas duvidas em relação a texturas 2d no xna.
Eu queria saber como é possivel aplicar alguns efeitos nas texturas, entre eles: zoom na direção x ou y, saturação, brilho, opacidade.
Obrigado desde já!

 
Nova Entrada 11/8/2009 0:36
  lucianoJose
195 tópicos
Iniciante


Re: Efeitos em Texturas 2D 
 felipehenrique escreveu

Olá pessoal.
Eu estou com algumas duvidas em relação a texturas 2d no xna.
Eu queria saber como é possivel aplicar alguns efeitos nas texturas, entre eles: zoom na direção x ou y, saturação, brilho, opacidade.
Obrigado desde já!




Olá,

em relação aos efeitos que você citou, saturação e brilho podem ser feitos através de algum shader.
 
opacidade, pode ser definida na hora que vc renderiza a textura. Digamos que queremos renderizar uma textura com 50% de opacidade, a gente poderia renderizar assim:

spriteBatch.Draw(

this.texture, Vector2.Zero, new Color(1f, 1f, 1f, 0.5f));

Sobre zoom na direção x ou y, o que você quis dizer com isso? Você quer redimensionar uma textura na direção x ou y?

No mais, tem um artigo sobre efeitos com imagens aqui no SharpGames, dá uma olhada:  http://www.sharpgames.net/Artigos/Artigo/tabid/58/selectmoduleid/376/ArticleID/1075/reftab/54/Default.aspx

[]s

@lucianoJoseBr My Blog: http://lucjose.wordpress.com
 
Nova Entrada 11/8/2009 2:32
  lcolnaghi
32 tópicos
8th Level Poster


Re: Efeitos em Texturas 2D 
Modificado Por lcolnaghi  em 10/8/2009 23:37:07)

 Zoom obviamente se tu estiver trabalhando com quads texturizados ( usando 3 dimensões ) fazendo um 2d sidescroller, por exemplo, tu vai querer aproximar a câmera na direção do eixo Z.

Agora por exemplo , se tu fores utilizar spritebatch, trabalhando apenas com 2 eixos, tu vai querer calcular algo tipo assim:

nova posicao = zoom * ( posicao do objeto - centro da tela )  + centro da tela.
onde todas as variáveis acima são vetores bidimensionais.

onde  zoom é a escala ( vector2 ) que equivale a aproximação da "câmera" em relação ao objeto.
centro da tela seria a referência do zoom. em que foco ele será aplicado (não precisa nescessáriamente ser aplicado ao centro da tela).

Depois para aplicar o tamanho certo ao objeto aproximado, basta multiplicar as dimensões da sua textura ( ou a escala ) pelo vetor de zoom.

Shaders de saturação, etc... são explicados nesse link :

http://www.facewound.com/tutorials/shader1/


 
Nova Entrada 11/8/2009 19:46
  felipehenrique
5 tópicos
Sem Ranking


Re: Efeitos em Texturas 2D 

Luciano:

Valeu cara o da opacidade deu certinho.
Sim o que eu queria serio tipo redimensionar mesmo, mas se eu redimensionar o rectangle que está a textura a imagem fica embaçada, e não é esse o efeito que eu quero, queria que ela faça o zoom a nivel de pixel ( em que quando estiver muito proximo se dê para ver os pixels da imagem).
E sim vou dar uma olhada no artigo sobre efeitos.

lcolnaghi:

Muito boa a sua ideia, vou testar aqui.
E sim obrigado por me indicar o tutorial.

 
Nova Entrada 11/8/2009 23:06
  lcolnaghi
32 tópicos
8th Level Poster


Re: Efeitos em Texturas 2D 
Modificado Por lcolnaghi  em 11/8/2009 20:26:48)

Opa felipehenrique, quanto a tua resposta ao Luciano, utilizando Spritebatches, uma solução seria ter uma textura maior ( e mais pesada )  para o redimensionamento. 

Mas enfim, é implementado no XNA por padrão interpolação bilinear quando é calculado a escala no spritebatch. Isso causa estes efeitos ( embaçamento ) que tu no caso não quer no teu Game, mas são calculados por as texturas ficarem bem mais bonitas e ajudar com anti-aliasing : ) . Mas para tu remover essas interpolações e técnicas de combinação de pixels - mostrando assim os pixels da imagem e não o "embassado", tu deves trocar o MagFilter, para por Ponto ou Nenhum ( que dão na mesma ), da seguinte forma :

            GraphicsDevice.SamplerStates[0].MagFilter = Microsoft.Xna.Framework.Graphics.TextureFilter.None; // ou .Point


 
Anterior Anterior
 
Próximo Próximo
  Forum  Criação de Jogo...  Algoritmos  Efeitos em Texturas 2D
Logos do XBox 360, XNA e Games For Windows
Copyright 2006-2012 por SharpgamesPolítica de Privacidade  |  Termos de Uso