Como um mapa de jogo em 3D é armazenado e manipulado


9

Sou programador, mas ainda não desenvolvi nenhum jogo.

Joguei vários jogos em 3D e sempre me perguntei como o mapa do campo é armazenado e renderizado.

Eu sei que alguma placa de aceleração é um hardware necessário, mas como exatamente a visualização é alterada sem sequer um único piscar na tela.

Você tem algum material on-line para me ajudar a entender isso?

obrigado

Respostas:


9

Geralmente, o mundo é mapeado com muitos triângulos, e o mapa é uma lista desses triângulos e a localização no mundo de cada vértice. O processo para desenhá-los é:

  • Configure a posição da 'câmera' - se você estivesse no mundo, é aqui que você estaria na posição mundial
  • Transforme os vértices do triângulo em 'espaço da câmera'
  • Transforme os triângulos de 'espaço da câmera' em 'espaço da tela' - é aqui que o efeito em perspectiva acontece (as coisas distantes são menores). Os triângulos se tornam 2D ​​neste momento.
  • Desenhe o triângulo 2D em uma tela oculta.
  • Quando todos os triângulos tiverem sido desenhados, mostre a tela ao jogador.

A última etapa geralmente está ligada à taxa de quadros do monitor, para que o processo de exibição da tela oculta seja realizado durante o intervalo v-blank - um conceito derivado dos monitores de tubo de raios catódicos que permitiam que o feixe catódico se movesse de baixo para a direita à esquerda, isso exigia uma mudança rápida, mas não instantânea, das tensões nas bobinas de deflexão na parte traseira do tubo de raios.

Este é realmente um método simples. Para obter alto desempenho, você precisa adicionar itens como remoção de superfície oculta, ocultação, determinação visível de conjuntos e assim por diante. Existem muitos algoritmos envolvidos na decisão do que desenhar.

Além disso, eu disse que o mundo é composto de triângulos, mas pode não ser armazenado em disco dessa maneira. Freqüentemente, os triângulos que são desenhados para a tela são definidos em tempo de execução a partir de primitivas de ordem superior, como mapas de altura, splines, tessalação, primitivas geométricas (por exemplo, uma esfera, caixa etc.) e assim por diante.

O hardware dedicado não é necessário - muitos jogos 3D anteriores fizeram tudo isso em software (mesmo em CPUs de 8 bits sem FPUs). Isso apenas torna mais rápido e fácil de fazer.

Uma pergunta tão simples. Nenhuma resposta fácil.


0

A visualização é alterada sem qualquer oscilação na tela por causa do buffer duplo. Processe todos os dados no buffer traseiro e, quando terminar de ser processado, troque-o no buffer frontal.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.