Perspectiva nos primeiros jogos pseudo-3d

7

Dê uma olhada na captura de tela abaixo, do antigo clássico Space Harrier. Minha pergunta diz respeito à perspectiva curva no 'chão' do tabuleiro de damas. Tem uma geometria estranhamente curva (eu lembro de ter visto isso em alguns jogos / demos antigos). Eu me lembro um pouco do efeito moiré, e acho que parte (no fundo) é exatamente isso - mas não acho que seja a história completa. Compare com a captura de tela da versão Sega, que mostra efeitos de moiré à distância, mas não a mesma curvatura.

Assim...

  • Por que a curvatura?
  • Eles fizeram isso de propósito ou é um efeito colateral de alguma técnica?
  • Como é conseguido?

Harrier do espaço - C64 Space Harrier - Sega

Até o riacho
fonte
Sua pergunta parece sugerir que essas duas imagens não exibem a mesma curvatura da grade no plano. No entanto, ambos produzem exatamente o mesmo efeito, tanto quanto eu posso dizer. É só que, na imagem inferior, o ângulo da câmera é um pouco menor.
Olhovsky
11
Acredito que esse efeito foi chamado de 'mode 7' no super nintendo: en.wikipedia.org/wiki/Mode_7, o que pode responder à sua terceira pergunta.
Thedaian
@Olhovsky - Concordo que existe um efeito moiré nas duas imagens, mas sinto que há um efeito adicional acontecendo na primeira (a curvatura é claramente visível em primeiro plano). Talvez eu esteja errado.
UpTheCreek 10/05
2
A quantidade de curvatura muda à medida que o ângulo da câmera muda (menos curvatura se aproxima à medida que a câmera se afasta do chão). Imagine olhar diretamente para a grade. Em seguida, você verá que não há curvatura no centro, e você iria ver a curvatura nas extremidades. No entanto, existe algum tipo de técnica de amostragem diferente usada na primeira imagem, você está certo. O aliasing das bordas de perto é claramente diferente (não necessariamente melhor) do que na segunda imagem. Não sei que tipo de amostragem é essa. Ainda estou confiante de que a diferença de curvatura se deve apenas ao ângulo da câmera.
Olhovsky

Respostas:

6

Isso tem a ver com as texturas do Mip Mapping . Essa textura não foi mapeada pelo mip. Veja o mapeamento mip antes e depois nesta imagem:

http://warsztat.gd/files/articles/texatlas/mip-map2.png

Portanto, é um efeito colateral do jogo tentar desenhar texturas distantes em ângulo. O mapeamento mip corrige isso, portanto, a maneira de alcançá-lo é não usar o mapeamento mip.

MichaelHouse
fonte
Interessante, obrigado. No entanto, em seus dois exemplos, se você seguir uma das diagonais da parte inferior da imagem, ambas seguirão uma linha completamente reta (a imagem c64 segue uma curva). A versão mapeada do Mip parece sofrer menos com os efeitos de interferência / moiré e alias, mas a geometria parece a mesma em cada caso para mim. Ainda não estou convencido de que esta é a resposta completa.
UpTheCreek 10/05
Não é a resposta completa, mas é um efeito colateral. Tem algo a ver com o desenho de uma textura até o infinito. Quando a perspectiva é nesse ângulo e com seu poder de processamento muito limitado, acho que eles escreveram algo que seria bom o suficiente. Como tal, você teria que criar o efeito manualmente via shaders.
Peter Ølsted
Bem, será difícil encontrar um exemplo de mipmapping que mostre exatamente o mesmo efeito. A influência do software / hardware de renderização afetará o resultado final. Aqui estão alguns outros exemplos de mipmapping: link link
MichaelHouse
11
UpTheCreek: Na verdade, as diagonais NÃO seguem uma linha reta. Considere a imagem que ele vinculou: warsztat.gd/files/articles/texatlas/mip-map2.png . Veja as diagonais à distância, elas exibem o mesmo comportamento das imagens da sua pergunta. A razão pela qual a curva está mais distante é principalmente porque o ângulo da câmera com o plano é maior que o ângulo nas imagens em sua pergunta.
Olhovsky
Tenho certeza de que há muitos aplicativos de teste disponíveis para mostrar os efeitos do mapeamento mip. Tente montar uma e veja se é possível recriar a aparência desejada.
MichaelHouse
6

Eu acho que é mais correto dizer que o efeito que você está vendo se chama Aliasing . Especificamente um padrão Moiré .

Basicamente, para velocidade, havia um método ingênuo de escolher qual pixel de uma textura desenhar em um determinado pixel na tela, dada a câmera da qual você está renderizando, e a curvatura que você vê é um efeito colateral do padrão de grade.

Então não, não foi intencional.

O mapeamento de mip ajuda a corrigir esse problema e melhora a velocidade de renderização (como escolher pixels adjacentes em uma textura de baixa resolução é mais rápido devido à coerência do cache do que escolher pixels distantes em uma textura maior). Mas, como você pode ver nos exemplos do mipmap, não faz a textura parecer "correta". Para isso, você precisa de filtragem anisotrópica .

Tetrad
fonte
Algo que esta resposta perde é que a imagem superior da pergunta não está usando amostragem de pontos simples. (Compare o aliasing das bordas da grade na primeira e segunda imagem em primeiro plano.)
Olhovsky