Como transformar em sprite ?

Ver o tópico anterior Ver o tópico seguinte Ir em baixo

Como transformar em sprite ?

Mensagem por Lukbebalduke em Dom 19 Jan 2014, 14:48

Seguinte pessoal , eu não tenho ideia de como vou fazer isso e também não encontrei nada relacionado. Eu tenho aqui o meu "editor" de imagens no GM. Cada "pixel" que vocês veem desse cachorro é um obj_pixel , que é um quadrado com uma variável de cor que é desenhada em cima dele no draw. Aquele + ali na imagem é onde deve ser o center da sprite.

Alguém sabe como transformar isso em uma sprite dentro do jogo ? Ou tem alguma ideia de como eu poderia fazer isso.

Lukbebalduke

Ranking : Nota B
Número de Mensagens : 764
Data de inscrição : 06/07/2011
Notas recebidas : B - B - A - B
Reputação : 30
Insignia 1 x 1 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 2

Voltar ao Topo Ir em baixo

Re: Como transformar em sprite ?

Mensagem por Gabreel em Dom 19 Jan 2014, 14:49

GMS ou GM8?

Gabreel

Número de Mensagens : 2227
Idade : 20
Data de inscrição : 02/10/2009
Reputação : 52
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Como transformar em sprite ?

Mensagem por Lukbebalduke em Dom 19 Jan 2014, 14:54

Opa, esqueci de dizer. Gm 8.

Lukbebalduke

Ranking : Nota B
Número de Mensagens : 764
Data de inscrição : 06/07/2011
Notas recebidas : B - B - A - B
Reputação : 30
Insignia 1 x 1 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 2

Voltar ao Topo Ir em baixo

Re: Como transformar em sprite ?

Mensagem por Jiraya em Dom 19 Jan 2014, 17:33

obj_to_spr(objeto pixel,filename,largura padra de cada objeto,altura padrao de cada objeto, escala de redimensao horizontal,escala de redimensao vertical);

Código:

//obj_to_spr(objeto index,arquivo,largura padrao,altura padrao,escala de redimensao HORIZONTAL,escala de redimensao VERTICAL)
var xmin,ymin,largura,altura,pix,i,surf,xs,ys,w,h,redimensionar,dw,dh,XS,YS;
w=argument2;
h=argument3;
largura=0;
altura=0;
xmin=999999;
ymin=999999;
//obter informações basicas
for(i=0;i<instance_number(argument0);i+=1;)
{pix=instance_find(argument0,i)
    if(sprite_exists(pix.sprite_index))
    {
    dw=pix.bbox_right-pix.bbox_left;
    dh=pix.bbox_bottom-pix.bbox_top;
    largura=max(largura,pix.bbox_right);
    altura=max(altura,pix.bbox_bottom)
    xmin=min(xmin,pix.bbox_left);
    ymin=min(ymin,pix.bbox_top);
    }else
    {
    dw=w;dh=h;
    largura=max(largura,pix.x+w)
    altura=max(altura,pix.y+h)
    xmin=min(xmin,pix.x);
    ymin=min(ymin,pix.y)
    }
}
//criar surface
surf=surface_create(largura-xmin,altura-ymin);
surface_set_target(surf);
for(i=0;i<instance_number(argument0);i+=1;)
{pix=instance_find(argument0,i)
xs=pix.x;ys=pix.y;
pix.x-=xmin;
pix.y-=ymin
//redesenhar
with pix event_perform(ev_draw,0)
pix.x=xs;pix.y=ys
}
surface_reset_target();
//salvar surface original
surface_save(surf,argument1);
//===CRIAR COPIA REDIMENSIONADA
XS=max(argument4,1);YS=max(argument5,1);
redimensiona=surface_create((largura-xmin)/dw*XS,(altura-ymin)/dh*YS);
surface_set_target(redimensiona);
draw_surface_stretched(surf,0,0,(largura-xmin)/dw*XS,(altura-ymin)/dh*YS)
surface_reset_target();
//salvar copia redimensionada
surface_save(redimensiona,filename_path(argument1)+"redimensionado_"+filename_name(argument1));
//limpando a memoria usada...
surface_free(redimensiona);
surface_free(surf);

exemplo de uso
obj_to_spr(objeto_pixel,"c:\imagen.png",32,32,1,1);

Jiraya

Ranking : Nota A
Número de Mensagens : 1134
Data de inscrição : 20/03/2010
Notas recebidas : A+A
Reputação : 108
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 1

https://www.facebook.com/seito.washiro.7

Voltar ao Topo Ir em baixo

Re: Como transformar em sprite ?

Mensagem por Gabreel em Dom 19 Jan 2014, 20:23

Bom, eu, faria diferente, mas talvez a solução do Jiraya seja a mais ideal.

Como é GM8, usaria sprite_create_from_screen() e redimensionaria. O problema seria trabalhar com o filtro alpha.

Gabreel

Número de Mensagens : 2227
Idade : 20
Data de inscrição : 02/10/2009
Reputação : 52
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Como transformar em sprite ?

Mensagem por Jiraya em Dom 19 Jan 2014, 21:22

gabreel, tbm pensei nisso, mas ai veio um problema, se o desenho fosse maior q a tela, como faria?

diminuir o zoom seria uma opcao, mas perderia qualidade original do q ele fez.

e com surface da p trabalhar com o filtro alfa.

Jiraya

Ranking : Nota A
Número de Mensagens : 1134
Data de inscrição : 20/03/2010
Notas recebidas : A+A
Reputação : 108
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 1

https://www.facebook.com/seito.washiro.7

Voltar ao Topo Ir em baixo

Re: Como transformar em sprite ?

Mensagem por Lukbebalduke em Seg 20 Jan 2014, 04:26

Seguinte , tentei usar o seu script Jiraya, por algum motivo não deu muito certo. A principio ele acusou esse nessa parte
Código:
    }else <br>    {
Como não vi esse "br" em mais lugar nenhum , presumi que não fosse nada e deletei esse
. Na verdade eu executei e função e nada ocorreu, vou deixar o link da engine aqui qualquer coisa.
Código:
http://www.mediafire.com/download/dm9zyv76crcgmfy/Engine.zip

--Ideia--

Gabreel, vamos supor que eu usa-se isso, existe alguma função que faz um especie de "chroma key" ? Por exemplo, no momento em for capturar a imagem, transformo o fundo inteiro num rosa, ai quando o desenho virar sprite eu retiro o fundo rosa e deixo o transparente de fundo.

Lukbebalduke

Ranking : Nota B
Número de Mensagens : 764
Data de inscrição : 06/07/2011
Notas recebidas : B - B - A - B
Reputação : 30
Insignia 1 x 1 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 2

Voltar ao Topo Ir em baixo

Re: Como transformar em sprite ?

Mensagem por Gabreel em Seg 20 Jan 2014, 12:58

pinpi escreveu:
--Ideia--

Gabreel, vamos supor que eu usa-se isso, existe alguma função que faz um especie de "chroma key" ? Por exemplo, no momento em for capturar a imagem, transformo o fundo inteiro num rosa, ai quando o desenho virar sprite eu retiro o fundo rosa e deixo o transparente de fundo.

Dando uma olhada no help do GM8, achei a função: sprite_set_alpha_from_sprite(), mas que não tem nada a ver com o que queremos. Não sei se você chegou a usar o GM7 e anteriores, mas antigamente o alpha do GM se dava pela cor do pixel mais inferior à esquerda. Logo, se em uma sprite de 32x32, a cor alpha seria a cor contida na posição Y=32 e X=1. Vi aqui e o sprite_create_from_screen() tem como remover o background com a mesma ideia.

Caso aconteça de como o Jiraya falou, do desenho ser grande, pensei que tu pudesse usar views, não sei de explicar direitinho D:

Gabreel

Número de Mensagens : 2227
Idade : 20
Data de inscrição : 02/10/2009
Reputação : 52
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Como transformar em sprite ?

Mensagem por Lukbebalduke em Ter 21 Jan 2014, 15:14

Ta , algo esta dando errado. Por algum motivo quando eu deixo o background transparente , e ativo o fundo rosa para capturar a tela, o obj_pixel nao estão sendo gravado. Ele fica como alpha na sprite , entao se eu habilitar o removeback nada aparece , se eu desabilitar aparece um retângulo rosa com um buraco no meio , que corresponde ao desenho.

Em fim, vou deixar novamente a engine ai;
Código:
http://www.mediafire.com/download/tj936k9hrcafj9c/engine.zip

Se alguem souber o que está rolando

OBS: O código que captura a tela ta no obj_done

Lukbebalduke

Ranking : Nota B
Número de Mensagens : 764
Data de inscrição : 06/07/2011
Notas recebidas : B - B - A - B
Reputação : 30
Insignia 1 x 1 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 2

Voltar ao Topo Ir em baixo

Re: Como transformar em sprite ?

Mensagem por Gabreel em Ter 21 Jan 2014, 16:22


Não vi nada de anormal, pinpi. '-'

Gabreel

Número de Mensagens : 2227
Idade : 20
Data de inscrição : 02/10/2009
Reputação : 52
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Como transformar em sprite ?

Mensagem por Lukbebalduke em Ter 21 Jan 2014, 17:25

Poxa velho... como tu saiu da chatbox e nao sei se vai voltar a entrar fica aberto ai pessoal, aparentemente funcionou com o Biel exatamente a msm engine e comigo não ta indo.

Realmente não sei o que vou fazer, se alguem puder baixar pra dizer se também está bugado por favor avisem.

Lukbebalduke

Ranking : Nota B
Número de Mensagens : 764
Data de inscrição : 06/07/2011
Notas recebidas : B - B - A - B
Reputação : 30
Insignia 1 x 1 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 2

Voltar ao Topo Ir em baixo

Re: Como transformar em sprite ?

Mensagem por Conteúdo patrocinado Hoje à(s) 11:35


Conteúdo patrocinado


Voltar ao Topo Ir em baixo

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo

- Tópicos similares

 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum