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
» Procuro Programador de game maker
por Wou Sex 15 Mar 2024, 10:27

» Retorno da GMBR!!!
por vinians Qui 14 Mar 2024, 19:07

» Mod APK
por gamerainha Qua 13 Mar 2024, 06:30

» Mudar cor de apenas uma palavra
por lunalol Sex 01 Mar 2024, 13:42

» Aceito pedidos de sprites (Com exemplos meus)
por Sevilha Qua 28 Fev 2024, 12:17

» Inventário simples
por Isquilo_Roedor Qui 22 Fev 2024, 15:18

» Problemas na programaçnao de inimigo [jogo DOOM LIKE]
por Black Mirror Dom 11 Fev 2024, 13:34

» ANDROID MULTI TOUCH
por DiegoBr Dom 04 Fev 2024, 12:13

» Servidor de Discord do fórum?
por Lighter Sáb 27 Jan 2024, 17:18

» Save e Load Json
por Klinton Rodrigues Qui 25 Jan 2024, 11:12

» Colisão com mais de um objeto
por aminaro Seg 22 Jan 2024, 15:02

» Oi sou novo aqui
por Thiago Silveira Alexandre Sáb 20 Jan 2024, 20:55

» Como acessar conteudo comprado no marketplace
por macmilam Sex 19 Jan 2024, 07:42

» Devlogs em vídeos do Block Room
por Joton Seg 15 Jan 2024, 16:56

» Alguém aqui já ganha dinheiro com seus games?
por Joton Seg 15 Jan 2024, 16:49

» ACERVO GMBR MAGAZINE
por Joton Qui 11 Jan 2024, 19:21

» como aumentar o obj sem aumentar a colisão??
por GabrielXavier Qua 10 Jan 2024, 07:21

» Asteroid Core - Early Acesse Update [0.2.0.0]
por JOZ. Seg 08 Jan 2024, 14:39

» Versionamento de código com GitHub
por GabrielXavier Seg 08 Jan 2024, 07:32

» Rio Rise - novo launcher do Gta San Andreas SAMP Brasil
por kolesovsup Sex 29 Dez 2023, 07:16

» a funçao approach ainda existe?
por PEDRINDEV Ter 26 Dez 2023, 20:05

» Inimigo ataca até por trás! >:(
por saim Sex 22 Dez 2023, 08:55

» [RESOLVIDO]Spawn após morte
por Deception_1999 Dom 17 Dez 2023, 16:39

» Remunerado $$$ - Procuro programador para ajudar a "montar" um jogo
por theguitarmester Sáb 02 Dez 2023, 16:28

» Game maker nao abre
por Cerf Dom 26 Nov 2023, 12:01


[Engine] Identificação de Modelos por Surface/View

4 participantes

Ir para baixo

[Engine] Identificação de Modelos por Surface/View Empty [Engine] Identificação de Modelos por Surface/View

Mensagem por gabrielsch Qua 04 Fev 2015, 05:49


Identificação de Modelos por Surface/View
Por: gabrielsch
____

Requerimento: Game Maker: Studio
Dificuldade: Avançado
____

Sobre:

Essa engine é uma solução para um problema frequente para aqueles que desejam verificar se um modelo dentro da projeção está presente em alguma coordenada da tela.
____

Como funciona?

Ela funciona de uma forma bem simples, duas views são habilitadas na room, a primeira serve para desenhar os modelos apenas com cores, a segunda e ultima serve para desenhar os modelos com suas respectivas texturas. Depois é criada uma surface que terá todo o resultado da primeira view e por tanto basta utilizar a função surface_getpixel() para obter a cor de uma determinada coordenada e pronto, já é possível saber qual modelo se encontra nela.
____

Imagens:

[Engine] Identificação de Modelos por Surface/View FWnnpHb
____

Download:

Dropbox
Mediafire
Zippyshare
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 : [Engine] Identificação de Modelos por Surface/View 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

[Engine] Identificação de Modelos por Surface/View Empty Re: [Engine] Identificação de Modelos por Surface/View

Mensagem por theguitarmester Qua 04 Fev 2015, 09:53

E método é útil e parece funcional. Porém, me parece que usar este recurso, pode causar um pouco de atraso no jogo(lentidão).


Contudo, a um tempinho atrás, estava fazendo um sistema baseado no jogo Perspective, e no GMS, usei o draw_get_pixel no draw da GUI para pegar as cores criadas no 3D, com as texturas já aplicadas.
Talvez se voltar a mexer no sistema, vou tentar usar um método parecido ao seu. Smile
Parei de mexer devido a ficar em duvida como fazer o 'boneco' grudar na parede, e seguir o eixo Z também, algo como um point_direction3D.
theguitarmester
theguitarmester

Games Ranking : Nota C

Notas recebidas : B + C
Data de inscrição : 28/02/2012
Reputação : 139
Número de Mensagens : 2207
Prêmios : [Engine] Identificação de Modelos por Surface/View Empty

Medalhas x 0 Tutoriais x 4 Moedas x 0

Ouro x 2 Prata x 2 Bronze x 1

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 1
Plataformas :
  • Unity


http://guitarmester.no.comunidades.net/index.php?pagina=19362978

Ir para o topo Ir para baixo

[Engine] Identificação de Modelos por Surface/View Empty Re: [Engine] Identificação de Modelos por Surface/View

Mensagem por Kabeção Qua 04 Fev 2015, 12:33

Método interessante.
Também tive muitos problemas com isso mas agora que você pode pegar a matrix de projeção e view é fácil fazer isso usando apenas multiplicação (extremamente rápido).

Código:
// Matrices
pos = matrix_build(x, y, z, 0, 0, 0, 1, 1, 1);
projection = matrix_get(matrix_projection);
view = matrix_get(matrix_view);

// Calcular clip space
temp = matrix_multiply(view, projection);
clip = matrix_multiply(pos, temp);

// Normalizar coordenadas
nx = clip[12] / (clip[15]);  // x/w
ny = clip[13] / (clip[15]);  // y/w

// Resultado
final_x = (nx + 1) * 0.5 * view_wview;
final_y = (1 - (ny + 1) * 0.5) * view_hview;

final_x e final_y são as coordenadas na tela (desconsiderando view_xview e view_yview assim como o evento Draw Gui).
É basicamente a mesma coisa que aquele vertex shader padrão e a base dos sistemas de renderização 3D.

Você também pode facilmente descobrir se um objeto está ou não por cima de outro.
Código:
nz = clip[14] / clip[15];
depth_pos = (nz + 1) * 0.5;
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 : [Engine] Identificação de Modelos por Surface/View 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

[Engine] Identificação de Modelos por Surface/View Empty Re: [Engine] Identificação de Modelos por Surface/View

Mensagem por All-x Qua 04 Fev 2015, 12:51

Bacana demais, resolve bem o problema Very Happy

Estava usando esta técnica no meu projeto de iniciação cientifica. Mas como ela é limitada, minha orientadora me fez aprender o método que o Kabeção mostrou. No caso, a OpenGL pega o inicio e o fim do objeto.

FLWS!
All-x
All-x

Games Ranking : Nota A

Notas recebidas : B A
Data de inscrição : 20/12/2008
Reputação : 189
Número de Mensagens : 2571
Prêmios : [Engine] Identificação de Modelos por Surface/View Empty

Medalhas x 0 Tutoriais x 25 Moedas x 0

Ouro x 2 Prata x 1 Bronze x 1

Insignia 1 x 1 Insignia 2 x 0 Insignia 3 x 0
Plataformas :
  • Game Maker 8.0 ou 8.1
  • Game Maker Studio 1.4
  • Game Maker Studio 2.0
  • Javascript
  • C ou C++


https://redscreensoft.com

Ir para o topo Ir para baixo

[Engine] Identificação de Modelos por Surface/View Empty Re: [Engine] Identificação de Modelos por Surface/View

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