GMBR
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.
Entrar

Esqueci-me da senha

Últimos assuntos
» player não consegue andar
por 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] [GM:S] Projeção 3D para Surface?

3 participantes

Ir para baixo

[Resolvido] [GM:S] Projeção 3D para Surface? Empty [Resolvido] [GM:S] Projeção 3D para Surface?

Mensagem por gabrielsch Dom 07 Jul 2013, 06:12

Fala galera, nesse exato momento estou tentando fazer uma especie de print screen da projeção 3D para uma surface mas parece que estou fazendo alguma coisa errada, aqui o código que estou usando:

Código:
 surface_set_target(somesurface)

 draw_clear_alpha(c_black,0);

 d3d_set_projection_ext(
                       camx ,camy  ,camz,
                       camx + cos(degtorad(camera_hangle_fk)),
                       camy - sin(degtorad(camera_hangle_fk)),
                       camz + tan(degtorad(camera_vangle_fk)),
                       0,0,0.0001,55,res_width/res_height,1,32000
                      )
                      
 surface_reset_target()

Depois disso tentou salvar a surface em um arquivo para ver o resultado mas nesse não tem nada, tudo nele é transparente apenas o tamanho que fica correto (tentei mudar alguns valores também mas deu na mesma) . Não sei porque mas sempre tenho problemas com surfaces! :3
Se alguem souber o que está errado no meu código ou sabe alguma maneira diferente de fazer a mesma coisa por favor diga!

Flw! sorrindo2


Última edição por gabrielsch em Dom 07 Jul 2013, 18:27, editado 1 vez(es)
gabrielsch
gabrielsch

Games Ranking : Nota A

Notas recebidas : D + A + A
Data de inscrição : 06/12/2009
Reputação : 28
Número de Mensagens : 1230
Prêmios : [Resolvido] [GM:S] Projeção 3D para Surface? Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 1 Prata x 2 Bronze x 0

Insignia 1 x 1 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

[Resolvido] [GM:S] Projeção 3D para Surface? Empty Re: [Resolvido] [GM:S] Projeção 3D para Surface?

Mensagem por GameMakerTutoriais Dom 07 Jul 2013, 14:21



O help diz que surfaces não trabalham corretamente no modo 3D. Essas são as exatas palavras. Não quer dizer que não dê pra usar, mas deve acontecer umas coisas bem estranhas.

Tive uma ideia, mas não sei se funcionaria. Se você usar uma outra view fora da janela do jogo (onde haveria a projeção alternativa), ela ficaria invisível para o jogador, mas talvez fosse possível salvá-la usando screen_save_part. Não sei como o GM se comportaria tentando salvar uma parte que trespassa o limite da janela, mas quem sabe...

Se nada disso der certo, tente esse código aqui:

Código:

set_automatic_draw(false);
surface_set_target(somesurface);
draw_clear_alpha(c_black,0);
d3d_set_projection_ext(
                       camx ,camy  ,camz,
                       camx + cos(degtorad(camera_hangle_fk)),
                       camy - sin(degtorad(camera_hangle_fk)),
                       camz + tan(degtorad(camera_vangle_fk)),
                       0,0,0.0001,55,res_width/res_height,1,32000
                      )
screen_redraw();                      
surface_reset_target();
set_automatic_draw(true);
avatar
GameMakerTutoriais

Data de inscrição : 29/01/2011
Reputação : 26
Número de Mensagens : 800
Prêmios : [Resolvido] [GM:S] Projeção 3D para Surface? Empty

Medalhas x 0 Tutoriais x 4 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

[Resolvido] [GM:S] Projeção 3D para Surface? Empty Re: [Resolvido] [GM:S] Projeção 3D para Surface?

Mensagem por gabrielsch Dom 07 Jul 2013, 14:39

brendan640 escreveu:

O help diz que surfaces não trabalham corretamente no modo 3D. Essas são as exatas palavras. Não quer dizer que não dê pra usar, mas deve acontecer umas coisas bem estranhas.

Tive uma ideia, mas não sei se funcionaria. Se você usar uma outra view fora da janela do jogo (onde haveria a projeção alternativa), ela ficaria invisível para o jogador, mas talvez fosse possível salvá-la usando screen_save_part. Não sei como o GM se comportaria tentando salvar uma parte que trespassa o limite da janela, mas quem sabe...

Se nada disso der certo, tente esse código aqui:

Código:

set_automatic_draw(false);
surface_set_target(somesurface);
draw_clear_alpha(c_black,0);
d3d_set_projection_ext(
                       camx ,camy  ,camz,
                       camx + cos(degtorad(camera_hangle_fk)),
                       camy - sin(degtorad(camera_hangle_fk)),
                       camz + tan(degtorad(camera_vangle_fk)),
                       0,0,0.0001,55,res_width/res_height,1,32000
                      )
screen_redraw();                      
surface_reset_target();
set_automatic_draw(true);

Parece que resolvi esse problema a alguns minutos, para resolver eu tinha que depois de usar a função d3d_set_projection_ext() desenhar os modelos novamente, mas com isso estou tendo problemas com o depth dos objetos ja que devo chamar o evento draw de todos, um de cada vez ou seja é impossivel deixar uma mais a frente outro e parece que mudar o depth no step não funcionou para resolver meu problema. Infelizmente tive que fazer um código do tipo:
Código:
with (all)
{
 if object_index <> obj_player
 event_perform(ev_draw, 0)
}
Ele resolve o meu problema passando por TODOS os objetos, do com maior depth para o menor retirando o problema de depth entre os modelos, mas o ruim disso é que deixa o jogo de uma forma ou outra um pouco lento e instável pois chama o evento draw em objetos desnecessários... Se alguem souber uma forma de aumentar o desempenho desse código por favor diga.

Flw! sorrindo2
gabrielsch
gabrielsch

Games Ranking : Nota A

Notas recebidas : D + A + A
Data de inscrição : 06/12/2009
Reputação : 28
Número de Mensagens : 1230
Prêmios : [Resolvido] [GM:S] Projeção 3D para Surface? Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 1 Prata x 2 Bronze x 0

Insignia 1 x 1 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

[Resolvido] [GM:S] Projeção 3D para Surface? Empty Re: [Resolvido] [GM:S] Projeção 3D para Surface?

Mensagem por Kabeção Dom 07 Jul 2013, 16:38

d3d_set_projection_ext só configura a projeção, ela não desenha nada.
Use view_surface_id[id] que automaticamente copia uma view para uma surface.
É praticamente o substituto do screen_redraw().
Kabeção
Kabeção

Games Ranking : Sem avaliações

Data de inscrição : 08/06/2008
Reputação : 100
Número de Mensagens : 2314
Prêmios : [Resolvido] [GM:S] Projeção 3D para Surface? Empty

Medalhas x 0 Tutoriais x 7 Moedas x 0

Ouro x 3 Prata x 0 Bronze x 1

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

http://blackcapapps.blogspot.com.br/

Ir para o topo Ir para baixo

[Resolvido] [GM:S] Projeção 3D para Surface? Empty Re: [Resolvido] [GM:S] Projeção 3D para Surface?

Mensagem por gabrielsch Dom 07 Jul 2013, 17:19

Kabeção escreveu:d3d_set_projection_ext só configura a projeção, ela não desenha nada.
Use view_surface_id[id] que automaticamente copia uma view para uma surface.
É praticamente o substituto do screen_redraw().

Hm... ja tinha visto isso em alguns tópicos da GMC mas nunca entendi direito como funciona, então quer dizer que nesse código:
Código:
view_surface_id[0] = surf;
Tudo que estiver sendo mostrado na view0 vai ser passado automaticamente para a surface surf? Se sim essa atribuição pode ser feita apenas uma vez para assim o GM atualizar automaticamente a surface a cada step ou devo atribuir a cada step para só assim atualizar a surface?

Flw! sorrindo2
gabrielsch
gabrielsch

Games Ranking : Nota A

Notas recebidas : D + A + A
Data de inscrição : 06/12/2009
Reputação : 28
Número de Mensagens : 1230
Prêmios : [Resolvido] [GM:S] Projeção 3D para Surface? Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 1 Prata x 2 Bronze x 0

Insignia 1 x 1 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

[Resolvido] [GM:S] Projeção 3D para Surface? Empty Re: [Resolvido] [GM:S] Projeção 3D para Surface?

Mensagem por Kabeção Dom 07 Jul 2013, 17:43

Defina a variável uma vez só.
A surface atualizara automaticamente com a imagem da view.

Na verdade, isso transfere o desenho dos gráficos na surface principal do programa para uma surface criada por nós mesmos. Por isso, se estiver usando só uma view, a tela (surface principal) ficará preta porque o GM não está mais desenhando ali. Para resolver isso basta usar draw_surface para desenha-la e "imitar" o que o GM faz internamente.

Como ela se atualiza sozinha, para tirar uma "print screen" você deve copiar a surface para outra com surface_copy.
Kabeção
Kabeção

Games Ranking : Sem avaliações

Data de inscrição : 08/06/2008
Reputação : 100
Número de Mensagens : 2314
Prêmios : [Resolvido] [GM:S] Projeção 3D para Surface? Empty

Medalhas x 0 Tutoriais x 7 Moedas x 0

Ouro x 3 Prata x 0 Bronze x 1

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

http://blackcapapps.blogspot.com.br/

Ir para o topo Ir para baixo

[Resolvido] [GM:S] Projeção 3D para Surface? Empty Re: [Resolvido] [GM:S] Projeção 3D para Surface?

Mensagem por gabrielsch Dom 07 Jul 2013, 18:26

Kabeção escreveu:Defina a variável uma vez só.
A surface atualizara automaticamente com a imagem da view.

Na verdade, isso transfere o desenho dos gráficos na surface principal do programa para uma surface criada por nós mesmos. Por isso, se estiver usando só uma view, a tela (surface principal) ficará preta porque o GM não está mais desenhando ali. Para resolver isso basta usar draw_surface para desenha-la e "imitar" o que o GM faz internamente.

Como ela se atualiza sozinha, para tirar uma "print screen" você deve copiar a surface para outra com surface_copy.

Incrivel, antes no metodo antigo eu conseguia em torno de 50/60 FPS agora consigo exatos 60/60 FPS mesmo com os shaders sendo usados. Vlw Kabeção tu foi de grande ajuda!

Flw! sorrindo2



Como o tópico ja foi resolvido, ele sera trancado.
Caso o autor deseje inserir mais alguma informação, contacte um moderador.
Att: CRP-Max.

gabrielsch
gabrielsch

Games Ranking : Nota A

Notas recebidas : D + A + A
Data de inscrição : 06/12/2009
Reputação : 28
Número de Mensagens : 1230
Prêmios : [Resolvido] [GM:S] Projeção 3D para Surface? Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 1 Prata x 2 Bronze x 0

Insignia 1 x 1 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

[Resolvido] [GM:S] Projeção 3D para Surface? Empty Re: [Resolvido] [GM:S] Projeção 3D para Surface?

Mensagem por Conteúdo patrocinado


Conteúdo patrocinado


Ir para o topo Ir para baixo

Ir para o topo

- Tópicos semelhantes

 
Permissões neste sub-fórum
Não podes responder a tópicos