Entenda as tecnologias por trás das modelagens mais populares do mercado: Polígonos e voxels, e por quê o voxel não é tão usado em games!
| Se você apoia nosso site, desative o AdBlock quando visitá-lo, inclusive em Mobile!
Os anúncios são poucos e não invasivos. Se quiser contribuir com nosso trabalho, clique em qualquer banner de sua preferência, exceto dos Parceiros. Mais detalhes clicando aqui.
1. Introdução
Desde 1996 as desenvolvedoras já estavam planejando qual seria a tecnologia que iria ser o “padrão” de mercado, mas àquela altura já tínhamos muitos games feitos em Voxels, como o Populous, SimCity2000 e o Outcast:
Outcast (1998): Usa voxels no terreno, o que tornou-o um dos jogos mais impactantes visualmente para a época.
Populous The Beginning (1998): Os planetas do jogo eram compostos por voxels incluindo os efeitos de água e terraformação.
E havia a promessa de que os polígonos poderiam revolucionar o mercado, mas até aquele ponto nada de interessante havia surgido.
Porém foi no lançamento de Quake em 1996 que o jogo começou a virar: foi o primeiro game de sucesso a usar polígonos e tirar melhor proveito de uma placa gráfica com Aceleração 3D. Isso reduziu custos de produção e chamou a atenção de outros desenvolvedores a partir desse momento!
Com o advento do Minecraft – e outros games como o Roblox atualmente – os voxels ganharam a atenção da grande mídia e do público. Mas antes de tudo, precisamos contextualizar um pouco mais do por quê dessa discrepância e o quanto os voxels ainda são importantes!
2. História
2.1 Polígonos
Um polígono é uma figura geométrica de vários lados, como um cubo ou um dodecaedro, composta de diversas faces, arestas e vértices.
De forma simples, polígonos são muitas vezes representados explicitamente pelas coordenadas dos seus vértices sob os pontos cartesianos X, Y e Z no mundo de um game. E a quantidade deles faz toda a diferença.
Por exemplo, no recente Gran Turismo® 7 disponível para os consoles PlayStation’s 4 e 5, cada veículo possui em média 500.000 polígonos enquanto que o primeiro game da franquia, no PlayStation® 1, cada veículo tinha em média 300 polígonos apenas.
O que isso significa?
Quanto mais polígonos tiver, mais faces e cantos arredondados o modelo 3D vai ter, se aproximando do que temos no mundo real com uma imagem mais fiel.
Gran Turismo 1 do PlayStation 1 versus Gran Turismo 7 do PlayStation 4
2.2 Voxel
O nome voxel é um portmanteau – neologismo com origem na mistura de palavras – de “Volume” e “Pixel”. Enquanto pixel por si só é uma combinação, na língua inglesa, das palavras “Picture” e “Element”, ou seja, elemento da imagem. São parecidos conceitualmente mas são tecnologias distintas.
Como os pixels em uma imagem bitmap, os voxels por si só não têm normalmente suas posições (coordenadas) explicitamente codificadas junto aos seus valores. Pelo contrário, a posição de um voxel é deduzida com base em sua posição com relação a outros voxels. Por exemplo, sua posição nos dados da estrutura que gera uma única imagem volumétrica. O tamanho desse voxel também diz muito sobre o que poderá ser expresso naquele game.
No Minecraft temos voxels “grandes”, se tentarmos gerar a ilusão de ótica de uma esfera o resultado será semelhante a:
Minecraft Sphere by Tugtugbug on DeviantArt
Porém quanto menores em área, cada um desses voxels for, mais precisos serão os resultados e mais bonito o efeito. Exemplo disso é o que é visto no simulador de física Teardown®:
Mas ainda assim, o efeito de “cubos” continua, como se a imagem toda estivesse eternamente serrilhada com todas essas pontas de vértices. E isso tem um motivo mais plausível!
3. Aplicações
Hoje em dia a tecnologia Voxel é mais aproveitada para fazer escaneamentos e virtualização de cenários, prédios e monumentos inteiros com incrível realismo.
Note que eu falei de cenários: os voxels possuem um problema estrutural básico, por serem compostos essencialmente de cubos aglomerados, é mais complicado fazer um sistema de animação para voxels, afinal esses cubos não vão deslizar uns sobre os outros ou sobrepor-se para compor algo animado. E para isso acontecer, exigiria muito mais poder de processamento do que o exigido por um modelo semelhante feito de polígonos.
Mas ainda temos o melhor dos dois mundos: Um exemplo interessante é a Unreal Engine que permite trabalhar com voxels lado a lado com os polígonos para dar ainda mais polimento aos gráficos:
Porém isso é algo que foi trazido à tona recentemente, é uma tecnologia nova para dar mais fidelidade aos polígonos!
O Voxel já fazia isso a muito mais tempo, tínhamos gráficos de Unreal Engine 5 numa época que mal existia a Unreal Engine 3. Exemplo, publicado 8 anos atrás pela empresa Euclideon:
O Voxel permite que um scanner capture um objeto ou local trazendo ao mundo virtual uma riqueza de detalhes que beira o infinito sem comprometer tanto o processamento de um computador tal qual seria se fossem usados polígonos para isso. Nesse caso a escala do voxel também é extremamente reduzida, ou veríamos serrilhados dos vértices saltando aos olhos!
4. Conclusão
Curiosamente, ao contrário de um modelo 3D baseado em polígonos que é normalmente oco, como vocês podem ter percebido em diversos games e cenários, o voxel é preenchido, ele é um objeto virtual com profundidade e opaco.
A forma como isso é processado também conta: A modelagem fiel da Euclideon também é uma “casca” de micro-cubos compondo o modelo 3D. Se fosse denso, como o Minecraft é, com um mundo vasto que tende ao quase infinito, com certeza precisaríamos de um computador da NASA® pra rodar!
#UrbanCompassPony
Referências:
Agradeço a meu parceiro e CDC Vilson Heuer de Oliveira, quem trabalhou bem próximo de projetos com polígonos e explicou o motivo da não implementação dos voxels atualmente em larga escala.
Autodidata, me aprofundei em sistemas operacionais baseados em UNIX®, principalmente Linux. Também procuro trazer assuntos correlacionados direta ou indiretamente, como automação, robótica e embarcados.
Curiosidade sobre a implementação da Euclideon:
O que torna a implementação deles eficiente é que começam já restringindo a quantidade de voxeis a processar por quadro utilizando algoritmo padrão de PVS (forkado de um treco que eu conheço aí…) e uma árvore de pesquisa eficiente BSP, pra achar os voxels mais interessantes no caminho de procura para cada pixel.
Eu lembro que no começo eles exibiam o “Unlimited Dettêêeeiiioooollll” rodando em um Celeron, com uma boa velocidade, mas deixaram BEM CLARO no demo que isso também dependia muito do quão indexada estava a árvore de voxeis e que o bixinho só processava seus pixeis + PVS.
Post interessante, realmente…
Ahhh, na parte do Quake…
Quake na verdade foi o primeiro jogo a conseguir entregar vértices texturizadas em todos os objetos para PC, 3D de verdade, sem warp, sem falcatruas, porém, ele só conseguiu isso por ser EXTREMAMENTE otimizado para rodar em processadores Intel Pentium, então processadores que não tinham todas as instruções SIMD do Pentium não conseguiam rodar o Quake corretamente.
O pessoal até brinca, dizendo que foi o Quake que matou a Cyrix… Enfim…
Quem não tinha Pentium também queria jogar Quake, e onde tem vontade, tem dinheiro, e onde tem dinheiro… PRONTO. Mercado saturado de placas de vídeo, todas prometendo rodar Quake sem precisar de Pentium. E como o padrão adotado pelo quake foi de vértices, baseando-se em triângulos para calcular toda a geometria, acabou por consolidar-se com o tempo como a forma correta de lidar com objetos tridimensionais em games.
Claro, se entrar em 3D, a conversa muda, temos NURBS e o capiroto a mais por lá.