Entrar
Últimos assuntos
» player não consegue andarpor lovn7 Qui 21 Nov 2024, 13:33
» É possível fazer istó no game maker
por William Lima Qui 21 Nov 2024, 10:56
» Rio Rise - novo launcher do Gta San Andreas SAMP Brasil
por Lua Sáb 16 Nov 2024, 20:22
» (Resolvido) Cenario longo x Texture Pages
por josuedemoraes Sáb 16 Nov 2024, 15:31
» Kids' band
por Adilson Lucindo Santos Sex 15 Nov 2024, 12:23
» (RESOLVIDO) Engasgos-Troca de Sprites/animações
por josuedemoraes Ter 12 Nov 2024, 01:49
» Block Room - DEMO
por Joton Qua 06 Nov 2024, 22:58
» Game Infinito vertical (subindo)
por macmilam Sáb 26 Out 2024, 12:36
» Retorno da GMBR!!!
por Dancity Ter 22 Out 2024, 16:36
» Máquina de estados
por aminaro Qui 10 Out 2024, 13:33
» como faço pra um objeto colidir com o outro e diminuir a vida do player ?
por josuedemoraes Qui 03 Out 2024, 16:51
» RESOLVIDO: Colisão com objetos moveis
por josuedemoraes Qua 02 Out 2024, 20:28
» Crypt of the Blood Moon
por divin sphere Qua 11 Set 2024, 18:18
» como fazer um objeto seguir?
por divin sphere Dom 18 Ago 2024, 18:08
» Procuro de alguém para Modelar/Texturizar/Animar objetos 3D
por un00brn Dom 11 Ago 2024, 11:10
» Destruição de cenário (estilo DD Tank)
por CoronelZeg Sex 09 Ago 2024, 17:16
» RESOLVIDO-Como destruir uma instancia especifica de um objeto
por josuedemoraes Ter 23 Jul 2024, 00:40
» Automatizar a coleta de id
por GabrielXavier Seg 22 Jul 2024, 18:01
» Preciso de ajuda para concluir um pequeno projeto
por lmoura Qui 27 Jun 2024, 15:45
» ANGULO ACOMPANHAR O OBJETO
por Klinton Rodrigues Qui 27 Jun 2024, 08:34
» Musica reinicia quando sala reinicia
por GabrielXavier Ter 18 Jun 2024, 07:28
» como fazer uma copia de gd
por generico_cube Sex 14 Jun 2024, 15:48
» Square Adventure
por guilherme551 Ter 11 Jun 2024, 09:54
» como posso definir limite de uma variavel
por GabrielXavier Sex 07 Jun 2024, 14:14
» [Resolvido] Dúvida, colisão única de objeto
por vdm842 Sex 24 maio 2024, 09:50
[Resolvido] Pintar parte da sprite
+2
Gonzo
Super Maker
6 participantes
Página 1 de 1
[Resolvido] Pintar parte da sprite
Olá!
Bem, dessa vez eu vou tentar explicar sem postar imagens e nem vídeos (to meio sem tempo agora).
Quero saber como fazer pra pintar uma parte específica de uma sprite. Sem usar dll ou extenções.
Vou dar um exemplo dizendo sobre a bandeira atrás do logo Game Maker.
Como fazer pra mudar a cor amarela sem passar pro outro lado?
No outro lado também tem a cor amarela, mas ta separada.
Tem como pegar o valor hexadecimal dessa cor e converter pra outro?
Minha dúvida é essa, quem poder me ajudar com esse detalhe eu agradeço.
Até logo!
Bem, dessa vez eu vou tentar explicar sem postar imagens e nem vídeos (to meio sem tempo agora).
Quero saber como fazer pra pintar uma parte específica de uma sprite. Sem usar dll ou extenções.
Vou dar um exemplo dizendo sobre a bandeira atrás do logo Game Maker.
Como fazer pra mudar a cor amarela sem passar pro outro lado?
No outro lado também tem a cor amarela, mas ta separada.
Tem como pegar o valor hexadecimal dessa cor e converter pra outro?
Minha dúvida é essa, quem poder me ajudar com esse detalhe eu agradeço.
Até logo!
Última edição por Super Maker em Seg 02 Jul 2012, 19:43, editado 1 vez(es)
Super Maker- Data de inscrição : 09/07/2011
Reputação : 6
Número de Mensagens : 646
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: [Resolvido] Pintar parte da sprite
ola Super Maker olha eu tentei com a ferramenta substituir cor do photoshop mais parece q a imagem de fundo recebeu um filtro ou uma iluminação bem proximo ao amarelo então acho q da pra fazer só através de montagem separando as partes
* com a ferramenta substituir cor do photoshop
obs : vc tambem pode selecionar o obj com a ferramenta laço e ai usar a ferramenta substituir cor.
* com a ferramenta substituir cor do photoshop
obs : vc tambem pode selecionar o obj com a ferramenta laço e ai usar a ferramenta substituir cor.
Gonzo- Data de inscrição : 29/05/2012
Reputação : 33
Número de Mensagens : 929
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: [Resolvido] Pintar parte da sprite
Pô mina valeu a tentativa, mas é em GML que eu quero fazer isso.
Vou mostrar uma imagem mais simples...
Quero pegar o valor FFFFFF do centro e transformar em qualquer outro. Como se eu estivesse jogando um baude de tinta no Paint.
Só preciso saber como pegar esse valor.
Vou mostrar uma imagem mais simples...
Quero pegar o valor FFFFFF do centro e transformar em qualquer outro. Como se eu estivesse jogando um baude de tinta no Paint.
Só preciso saber como pegar esse valor.
Super Maker- Data de inscrição : 09/07/2011
Reputação : 6
Número de Mensagens : 646
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: [Resolvido] Pintar parte da sprite
bom.. creio que essa engine pode te ajudar
http://sandbox.yoyogames.com/games/184570-tutorial---letting-the-player-customize-colors
http://sandbox.yoyogames.com/games/184570-tutorial---letting-the-player-customize-colors
Gonzo- Data de inscrição : 29/05/2012
Reputação : 33
Número de Mensagens : 929
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: [Resolvido] Pintar parte da sprite
Cara, eu já vi um cara explicando como faz isso (Até num tópico na GMC sobre pistas de corrida). Juro que vou tentar achar pra você...
Gonçalves- Games Ranking :
Notas recebidas : B + A + C
Data de inscrição : 29/10/2010
Reputação : 79
Número de Mensagens : 1013
Prêmios :
x 0 x 4 x 0
x 2 x 0 x 0
x 0 x 0 x 0
Re: [Resolvido] Pintar parte da sprite
Bem, pegar a cor eu já tentei aqui e consegui. https://dl.dropbox.com/u/70151484/drawonsprite.gmk
Agora vou tentar mudar na sprite.
Mina, achei legal essas engines, mas isso eu sei fazer. Meu problema é mudar parte da sprite e não ela toda como nas engines.
Obrigado!
Agora vou tentar mudar na sprite.
Mina, achei legal essas engines, mas isso eu sei fazer. Meu problema é mudar parte da sprite e não ela toda como nas engines.
Obrigado!
Valeu man, eu aguardo...Gonçalves escreveu:Cara, eu já vi um cara explicando como faz isso (Até num tópico na GMC sobre pistas de corrida). Juro que vou tentar achar pra você...
Super Maker- Data de inscrição : 09/07/2011
Reputação : 6
Número de Mensagens : 646
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: [Resolvido] Pintar parte da sprite
Não há nem um meio rápido de se fazer isso sem DLL.
Inclusive eu até já fiz uma DLL para trocar a cor dos pixeis direto das texturas do DirectX na memória.
O processo era bem rápido mas o método só funcionava com o GM8.0 sendo que já tinha o 8.1 então não compensava continuar.
O único jeito para seu caso é redesenhar toda a sprite em uma surface ou dividir a imagem em partes e assim usar o image_blend para mudar a cor.
Inclusive eu até já fiz uma DLL para trocar a cor dos pixeis direto das texturas do DirectX na memória.
O processo era bem rápido mas o método só funcionava com o GM8.0 sendo que já tinha o 8.1 então não compensava continuar.
O único jeito para seu caso é redesenhar toda a sprite em uma surface ou dividir a imagem em partes e assim usar o image_blend para mudar a cor.
Re: [Resolvido] Pintar parte da sprite
Ou, se você não precisar de velocidade, percorrer a área, pixel por pixel, mudando o valor de hue dos pixels que tiverem um hue parecido com o original. Eu ainda vou descobrir um jeito de isolar uma específica usando blend modes. Se conseguíssemos isso, já era meio caminho andado.Kabeção escreveu:O único jeito para seu caso é redesenhar toda a sprite em uma surface ou dividir a imagem em partes e assim usar o image_blend para mudar a cor.
saim- Games Ranking :
Notas recebidas : C-D-A-B
Data de inscrição : 14/01/2011
Reputação : 136
Número de Mensagens : 3033
Prêmios :
x 1 x 6 x 0
x 1 x 0 x 3
x 0 x 0 x 0
Re: [Resolvido] Pintar parte da sprite
O jeito aí nesse caso é usar um flood fill. Há um tempo atrás eu peguei um engine muito bom naquele antigo "64digits" (não lembro se era esse o nome), mas agora não estou em casa, quando chegar eu dou um edit e posto ele aqui pra você (a menos que você consiga achá-lo lá, se é que ainda existe esse site).
Daria pra unir esse engine com essa ideia do saim de pegar o hue. O sistema do engine pega a cor do pixel, então, com pouca modificação a gente consegue isso. Pra ressalvar o que o Kabeção falou: não é rápido porque não usa dll. Ele usa dsmaps, é bem lento, mas funciona.
------- Edit -------
Outra ideia: isolar todas as cores com blend mode, exceto o branco (nesse caso especificamente)
Falou!
GameMakerTutoriais- Data de inscrição : 29/01/2011
Reputação : 26
Número de Mensagens : 800
Prêmios :
x 0 x 4 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: [Resolvido] Pintar parte da sprite
saim escreveu:Eu ainda vou descobrir um jeito de isolar uma específica usando blend modes. Se conseguíssemos isso, já era meio caminho andado.
Se você souber como isolar QUALQUER cor com blend modes, eu gostaria de conhecer a teoria por trás dela.Ninja8086 escreveu:Outra ideia: isolar todas as cores com blend mode, exceto o branco (nesse caso especificamente)
Hm... talvez se... usássemos algo como bm_inv_dest_color... numa superfície totalmente pintada na cor que queremos isolar... não, as cores intermediárias também seriam afetadas. Mesmo que funcionasse, tentar isolar o vermelho transformaria o roxo em azul.
Continuo curioso, Ninja! Como você faria isso?
saim- Games Ranking :
Notas recebidas : C-D-A-B
Data de inscrição : 14/01/2011
Reputação : 136
Número de Mensagens : 3033
Prêmios :
x 1 x 6 x 0
x 1 x 0 x 3
x 0 x 0 x 0
Re: [Resolvido] Pintar parte da sprite
Os caras da pesada
Valeu por estarem me ajudando!
Era isso que eu tava pensando pessoal. Um tipo de dsmap.
Percorrer a área que tem uma determinada cor e mudar esse valor pro que foi pego antes com o draw_getpixel(mouse_x,mouse_y), ou quem sabe criar e dividir em tempo real as várias surfaces pra cada cor, usando um loop.
Quem sabe fazer um dsmap assim? Ou elaborar um loop desses?
Eu vou tentando aqui enquanto isso.
Até logo!
Valeu por estarem me ajudando!
Era isso que eu tava pensando pessoal. Um tipo de dsmap.
Percorrer a área que tem uma determinada cor e mudar esse valor pro que foi pego antes com o draw_getpixel(mouse_x,mouse_y), ou quem sabe criar e dividir em tempo real as várias surfaces pra cada cor, usando um loop.
Quem sabe fazer um dsmap assim? Ou elaborar um loop desses?
Eu vou tentando aqui enquanto isso.
Até logo!
Super Maker- Data de inscrição : 09/07/2011
Reputação : 6
Número de Mensagens : 646
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: [Resolvido] Pintar parte da sprite
saim escreveu:Se você souber como isolar QUALQUER cor com blend modes, eu gostaria de conhecer a teoria por trás dela.
Hm... talvez se... usássemos algo como bm_inv_dest_color... numa superfície totalmente pintada na cor que queremos isolar... não, as cores intermediárias também seriam afetadas. Mesmo que funcionasse, tentar isolar o vermelho transformaria o roxo em azul.
Continuo curioso, Ninja! Como você faria isso?
Então... Nesse caso, a gente não mexeria na cor e sim nos canais de cor. Quando a gente quer isolar uma cor determinada, a gente usa a cor contrária. Isso é muito comum em correção de imagens, por exemplo. É por isso que existem (também) o sistema CMYK, que é o contrário do RGBA.
A gente corrige vermelho com ciano (c), verde com magenta (m) e azul com amarelo (y). O que a gente vai fazer então? Isolar cada canal da imagen na surface, e a partir dos canais, trabalhar com eles de acordo com quanto de r, g ou b determinada cor usa. Lógico, vai afetar toda a imagen, afinal rgb é um composto.
Pra isolar cada canal, eu não tenho certeza absoluta, vou falar de cabeça, mas deve ser isso aqui... Digamos que cê tenha uma imagem onde a gente queira isolar o azul...
1 - Pinta a imagem na surface
2 - Pinta uma surface secundária toda de azul
3 - Usa o blend bm_dest_color e bm_zero (esse eu sei de cabeça porque é o mesmo usado pelo image_blend);
4 - Pinta a secundária por cima da primeira duas vezes com:
A - O contrário de verde: ~c_lime ou $ff00ff
B - O contrário de vermemo: ~c_red ou $ffff00
Daí você isola o azul. Pronto, agora é só escurecer ou clarear o canal. Isolar os outros e mesclar os canais rgb novamente. =)
Super Maker escreveu:
Os caras da pesada cheers
Valeu por estarem me ajudando!
Era isso que eu tava pensando pessoal. Um tipo de dsmap.
Percorrer a área que tem uma determinada cor e mudar esse valor pro que foi pego antes com o draw_getpixel(mouse_x,mouse_y), ou quem sabe criar e dividir em tempo real as várias surfaces pra cada cor, usando um loop.
Quem sabe fazer um dsmap assim? Ou elaborar um loop desses?
Eu vou tentando aqui enquanto isso.
Até logo!
Tá na mão, bróder. Acabei de fazer upload. Esse exemplo é legal demais, tu vai aprender a lot sobre ds_maps. A mudança que eu comentei é simples, vou deixar sem alteração pra que o pessoal possa baixar se interessarem, mas se precisar, a gente altera pra ti.
http://dl.dropbox.com/u/77818756/Game%20Maker/gm6%20-%20Floodfill.gm6
Falou!
GameMakerTutoriais- Data de inscrição : 29/01/2011
Reputação : 26
Número de Mensagens : 800
Prêmios :
x 0 x 4 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: [Resolvido] Pintar parte da sprite
Isso é ótimo Ninja8086!
Da pra ver tudo sendo pintado, o dsmap trabalhando.
Se caso eu ordenar pra velocidade da room almentar pra não ficar vísível esse processo, vai consumir muita memória?
Da pra ver tudo sendo pintado, o dsmap trabalhando.
Se caso eu ordenar pra velocidade da room almentar pra não ficar vísível esse processo, vai consumir muita memória?
Super Maker- Data de inscrição : 09/07/2011
Reputação : 6
Número de Mensagens : 646
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: [Resolvido] Pintar parte da sprite
É bem lento mesmo, nesse caso, aumentar o speed do jogo não vai ajudar muito... Infelizmente. E eu não manjo nada da GMAPI, porque senão daria pra pegar esse sistema e mandar pra uma dll (eu acho! não manjo nada dela). =(
GameMakerTutoriais- Data de inscrição : 29/01/2011
Reputação : 26
Número de Mensagens : 800
Prêmios :
x 0 x 4 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: [Resolvido] Pintar parte da sprite
Pô cara já é de bom tamanho oque você fez.
Pode deixar que seus créditos estão garantidos.
Muito obrigado mesmo a você e todos que ajudaram.
Resolvido!
Pode deixar que seus créditos estão garantidos.
Muito obrigado mesmo a você e todos que ajudaram.
Resolvido!
Super Maker- Data de inscrição : 09/07/2011
Reputação : 6
Número de Mensagens : 646
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: [Resolvido] Pintar parte da sprite
Super Maker, vai lá na linha 79 do script que está no step, e troque isso:
por isso
Daí ele vai dar uma "travadinha" mas pelo menos não vai mostrar o processo de fill. Já vai mostrar a imagem pintada (não precisa alterar o room_speed).
Não fui eu que fiz! Não tem os créditos do autor no engine, também não sei quem fez. Nesse caso, já que vai colocar, coloque para o 64digits, que pelo menos assim, valoriza um pouco o site que prestou o serviço.
Falou!
- Código:
if (doing_floodfill) {
por isso
- Código:
while (doing_floodfill) {
Daí ele vai dar uma "travadinha" mas pelo menos não vai mostrar o processo de fill. Já vai mostrar a imagem pintada (não precisa alterar o room_speed).
Pô cara já é de bom tamanho oque você fez.
Pode deixar que seus créditos estão garantidos.
Não fui eu que fiz! Não tem os créditos do autor no engine, também não sei quem fez. Nesse caso, já que vai colocar, coloque para o 64digits, que pelo menos assim, valoriza um pouco o site que prestou o serviço.
Falou!
GameMakerTutoriais- Data de inscrição : 29/01/2011
Reputação : 26
Número de Mensagens : 800
Prêmios :
x 0 x 4 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: [Resolvido] Pintar parte da sprite
Valeu pela dica Ninja8086.
Mais uma vez muito obrigado!
Mais uma vez muito obrigado!
Super Maker- Data de inscrição : 09/07/2011
Reputação : 6
Número de Mensagens : 646
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Tópicos semelhantes
» [RESOLVIDO] sprite em sprite como fazer isso
» [Resolvido]Subir sprite & Velocidade do Sprite
» [Resolvido]como fazer que quando o objeto vá para cima ele mude de sprite e quando ele caia ele mude para outro sprite ?
» [Resolvido] Fim da animação do Sprite
» [Resolvido]Ajuda num sprite
» [Resolvido]Subir sprite & Velocidade do Sprite
» [Resolvido]como fazer que quando o objeto vá para cima ele mude de sprite e quando ele caia ele mude para outro sprite ?
» [Resolvido] Fim da animação do Sprite
» [Resolvido]Ajuda num sprite
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos