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] [GM:S] Projeção 3D para Surface?
3 participantes
Página 1 de 1
[Resolvido] [GM:S] Projeção 3D para Surface?
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:
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!
- 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!
Última edição por gabrielsch em Dom 07 Jul 2013, 18:27, editado 1 vez(es)
gabrielsch- Games Ranking :
Notas recebidas : D + A + A
Data de inscrição : 06/12/2009
Reputação : 28
Número de Mensagens : 1230
Prêmios :
x 0 x 0 x 0
x 1 x 2 x 0
x 1 x 0 x 0
Re: [Resolvido] [GM:S] Projeção 3D para Surface?
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);
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] [GM:S] Projeção 3D para Surface?
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)
}
Flw!
gabrielsch- Games Ranking :
Notas recebidas : D + A + A
Data de inscrição : 06/12/2009
Reputação : 28
Número de Mensagens : 1230
Prêmios :
x 0 x 0 x 0
x 1 x 2 x 0
x 1 x 0 x 0
Re: [Resolvido] [GM:S] Projeção 3D para Surface?
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().
Use view_surface_id[id] que automaticamente copia uma view para uma surface.
É praticamente o substituto do screen_redraw().
Re: [Resolvido] [GM:S] Projeção 3D para Surface?
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;
Flw!
gabrielsch- Games Ranking :
Notas recebidas : D + A + A
Data de inscrição : 06/12/2009
Reputação : 28
Número de Mensagens : 1230
Prêmios :
x 0 x 0 x 0
x 1 x 2 x 0
x 1 x 0 x 0
Re: [Resolvido] [GM:S] Projeção 3D para Surface?
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.
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.
Re: [Resolvido] [GM:S] Projeção 3D para Surface?
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!
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- Games Ranking :
Notas recebidas : D + A + A
Data de inscrição : 06/12/2009
Reputação : 28
Número de Mensagens : 1230
Prêmios :
x 0 x 0 x 0
x 1 x 2 x 0
x 1 x 0 x 0
Tópicos semelhantes
» [Resolvido]como fazer um personagem soltar poderes para cima,para baixo,para a direita e para a esquerda?
» [Resolvido]Bug de surface luz nao segue jogador
» [Resolvido] background em surface bugado
» [Resolvido]Problemas com alpha da surface
» [Resolvido]Problemas ao criar surface
» [Resolvido]Bug de surface luz nao segue jogador
» [Resolvido] background em surface bugado
» [Resolvido]Problemas com alpha da surface
» [Resolvido]Problemas ao criar surface
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos