segunda-feira, 11 de junho de 2012

paOpenGLPicking

Olá!

De todos os assuntos que me deparo, só existe um que me dá aversão, calafrios, dor de barriga e sofrimento: COLISÃO!!!

De todos os jogos que fiz até hoje, sendo protótipo ou não, incrivelmente apenas um tem uma colisão feita por mim mesmo. Alguns outros que tem foram parceiros de equipe que fizeram.

Tanto é que vocês podem perceber que este assunto nada carismático para mim foi deixado por último, dentre todas as implementações da engine.

Há 100% de chance de que esta seja a última implementação da engine antes da entrega. Só implementei a parte de picking porque ela se faz 100% necessária para o gerador de mapas.

Sem mais delongas, um picking é definido por uma área denominada de viewing volume que intercepta os objetos da cena a fim de gerar hits que serão capturados em um buffer de seleção definido pela engine e atualizado pela OpenGL. Com esse viewing volume, é possível posicionar sua região em torno do mouse e captar com quem ele está colidindo no momento em que se clica, por exemplo.

Para tal, implementei funcionalidades na engine para que o usuário defina grupos e membros para este grupo. A engine tratará de nomeá-los em uma sequência crescente, podendo o usuário saber qual objeto sofreu colisão com o mouse consultando qual membro de qual grupo sofreu colisão.

A facilidade com que o resultado aparenta ser mostra o meu sucesso em abstrair todo o sistema de nomenclatura de objetos, o controle das matrizes para inserção do viewing volume e o gerenciamento do buffer de seleção, sendo este último o maior problema que tive durante esses dias para implementar o picking.

No próximo post falarei sobre as implementações desta técnica de colisão no gerador de mapas, bem como das novas funcionalidades.

Até lá...

Nenhum comentário:

Postar um comentário