Treinamento em tecnologia de ray-casting, parte 1

Indie 2D ... Projetos AAA 3D ​​... Ou algo intermediário?



Saudações a todos os leitores. Decidi resumir e traduzir uma série maravilhosa de artigos "Tutorial de Ray-Casting para desenvolvimento de jogos e outros propósitos", de F. Permadi, sobre o estudo da tecnologia de ray-casting.



imagem


Esta publicação aborda e combina artigos originais O que é Ray-Casting e Ray-Casting vs. Ray-Tracing para desenvolvimento de jogos .



É importante notar que, em um esforço para criar um motor pseudo-3D (sobre o qual você também pode escrever um artigo), estudei exaustivamente este tutorial. Espero achar que isso me ajudou a encontrar as palavras de maior sucesso na tradução e também a não perder o significado do que estava escrito.



Bem ... vamos começar!



O que é elenco de raios?



A projeção de raios (doravante denominada fundição) é uma tecnologia que converte um conjunto limitado de dados (um mapa simplificado ao máximo ou uma planta baixa) em uma projeção 3D por "projeção de raios" do ponto de vista de todo o campo de visão. Por exemplo, a imagem abaixo mostra como o arremesso transforma algo 2D A em algo quase 3D B.



imagem


Ray-casting e ray-tracing



Assim como o ray-casting, o ray-tracing "define a parte visível de uma superfície lançando raios imaginários de luz do ponto de vista em direção a um objeto na cena".



As duas definições anteriores fazem parecer que lançar e rastrear são a mesma coisa. Na verdade, alguns livros usam ambos os termos alternadamente. Mesmo assim, do ponto de vista dos programadores de gamedev, lançar raios deve ser considerado um caso especial de implementação de rastreamento.



Jogando mais rápido do que rastreando. Isso é possível devido ao fato de que usa algumas restrições geométricas para acelerar o processo de renderização. Por exemplo, as paredes são sempre perpendiculares ao chão (isso pode ser visto em jogos como Doom ou Wolfenstein 3D). Se não fosse por tais restrições, a tecnologia de arremesso não teria sido possível.



Os parágrafos a seguir fornecem uma comparação global de lançamento e rastreamento. A principal coisa a lembrar é que "o lançamento usa menos raios do que o traçado, devido a certas restrições geométricas". Ou então que "lançar é uma implementação especializada de rastreamento".



Princípio



Arremesso : os raios são arremessados ​​e se movem em grupos com base em algumas restrições geométricas. Por exemplo, em uma tela com resolução de 320x200, o "gerador de raios" irá liberar apenas 320 peças deles (obtemos este número do corolário que uma tela com largura de 320 pixels tem 320 colunas verticais).



Traço : cada raio é calculado separadamente, ou seja, cada ponto na tela do monitor (geralmente um pixel) é traçado por um de seus raios. Por exemplo, em uma tela com resolução de 320x200, precisamos de 64 mil (320 * 200 = 64000) raios, o que é 200 vezes mais lento em comparação com o lançamento.



Fórmula



Como regra, ao lançar, erros nos cálculos são permitidos. Ao rotear, tudo deve ser o mais preciso possível.



Rapidez



O lançamento é muitas vezes mais rápido do que o rastreamento e é adequado para processos em tempo real. O rastreamento não é adequado de forma alguma (a menos que tenhamos um PC com uma frequência de 500 GHz).



Qualidade



Quando descartado, obtemos uma imagem de qualidade média / baixa. Você pode notar a divisão em elementos de bloco. Ao traçar, a imagem é o mais realista possível - às vezes até demais.



imagem


Cena de Wolfenstein 3D. Observe que a imagem está dividida em blocos retangulares. Objetos (armas) e inimigos (cachorro) são simplesmente bitmaps transparentes que são dimensionados e desenhados sobre o fundo.



imagem


Uma cena do jogo 7º Convidado. O resultado da renderização é incrível. Porém, os movimentos do jogador são limitados a caminhos previamente definidos (isso se deve ao fato de que o número de imagens pré-renderizadas é limitado).



Mundo externo



Ao lançar, somos limitados geometricamente e apenas formas simples estão disponíveis. Ao traçar, qualquer forma pode ser renderizada.



Memória



Lançamento : as imagens renderizadas não são salvas no disco. Normalmente, apenas o mapa de cena em si é armazenado no meio e as imagens correspondentes são geradas instantaneamente.



Rastrear : as imagens renderizadas são salvas no disco e carregadas de lá quando necessário. Atualmente, não existe tal peça de hardware que seria capaz de renderizar o resultado do traçado de raio em tempo real.



Exemplos de



Arremesso:



  • Wolfenstein 3D (software iD)
  • Shadow Caster (Raven)
  • Arena (Bethesda)
  • Doom (software iD)
  • Dark Forces (LucasArts)


Vestígio:



  • 7º Convidado (Trilobyte)
  • Caminho Crítico (Mechadeus)
  • 11ª hora (trilobyte)
  • Myst (ciano)
  • Cyberia (Xatrix)


Fim da primeira parte




All Articles