Exemplos de falsificação 3D


17

Alguém sabe de bons exemplos de 3D sendo falsificado em 2D (não necessariamente código, mas jogos que eu poderia procurar)? O jogador tem a perspectiva de que eles estão "entrando" na tela e as coisas estão surgindo para eles. No momento, estou simplesmente escalando os inimigos em 2D para dar a ilusão de que eles estão se aproximando, mas ainda parece bastante plano. Existem dicas sobre como criar uma ilusão 3D sem usar um mecanismo 3D?

Edit : Acabei de encontrar o termo 'Mode7' e este vídeo que mostra praticamente o que estou tentando descobrir. (especialmente os jogos às 0:13 e 1:03). Qual é uma boa maneira de implementar algo assim?


1
Muitos jogos de computador anteriores a meados dos anos 90 "falsificaram" o 3d, e praticamente todos os jogos de console anteriores à era da quinta geração (Playstation / N64). Pode ajudar a esclarecer o que você está fazendo agora com uma imagem ou algo assim ...
thedaian

1
Atualizei a postagem com um vídeo que acabei de encontrar.
XSL

2
Todo o 3D em jogos de computador é falsificado em 3D. Nenhuma dessas coisas realmente existe! (Quero dizer isso no sentido de que qualquer 'falsificação' de 3D em um jogo é apenas um parente do que você pensa que é 'real'. Mode7 é apenas um meio termo entre eles. A mesma matemática básica.)
DampeS8N

Respostas:


13

Um dos meus jogos de arcade clássicos favoritos também aconteceu com 3D falso: Space Harrier

Nesse vídeo, você pode ver alguns truques que eles usaram, mas um dos efeitos visuais mais eficazes é tão perfeito que você nem percebe que está acontecendo: quando o player (ou o mais importante a câmera) se move, eles usam paralaxe para fornecer objetos. a cena um sentimento de profundidade.

Ou seja, objetos mais próximos se movem de um lado para o outro mais rápido que objetos distantes. O exemplo clássico de paralaxe é olhar pela janela de um carro em movimento: coisas próximas, como placas de rua passam em um borrão, árvores mais distantes se movem mais devagar, enquanto coisas distantes, como montanhas, parecem mal se mover.

Além disso, os objetos não escalam linearmente à medida que se aproximam. Ou seja, os objetos escalam apenas um pouco longe e aumentam mais rapidamente quando próximos; o dimensionamento linear seria se eles aumentassem na mesma taxa o tempo todo. Você diz que já está dimensionando seus objetos à medida que eles se aproximam, mas pode estar dimensionando-os linearmente e isso parece plano.

ADIÇÃO: Afterburner é outro jogo de arcade clássico que usa muitos dos mesmos truques gráficos.


1
As sombras também são partes muito importantes para fazer as coisas "parecerem" 3D. Dependendo do estilo do jogo, isso pode ou não ser fácil, seu personagem pode projetar uma sombra no chão ou sua nave é grande o suficiente para projetar uma sombra em um planeta? Esse é o conceito geral por trás do mapeamento de bump ou normal. (Não sugerindo que isso seja feito, apenas como um exemplo de ponta). A sombra do seu personagem passando por cima da árvore um pouco ao fundo, mas não a colina distante, pode adicionar uma vantagem que você está procurando.
James

6

A maioria desses jogos usa os famosos truques do "Modo 7". É apenas um rotozoom. Esta operação foi realizada pelo coprocessador no console, por isso foi muito rápido nesses hardwares. Operações 3D reais eram muito caras. Mas com o hardware real, é mais fácil simular com 3D real.

Um rotozoom é uma rotação e um zoom em um sprite. Veja esta explicação ou esta implementação SDL .

Pesquise no google "MODE-7 floormap" para encontrar amostras e código.

O F-Zero Mode 7 foi um dos primeiros jogos a usá-lo em snes.


5

Encontrei uma revisão fantástica dessas técnicas, com exemplos e explicações, vários anos atrás. Sua pergunta me levou a procurá-lo novamente: Pseudo 3d Page de Lou . Ele costumava ter um motor Outrun funcionando, mas o removeu por algum motivo ( a Wayback Machine, se seu amigo estiver aqui )

Para responder ainda mais a sua pergunta, aqui está uma lista dos jogos da página dele:

  • Street Fighter II (arcade) (os "efeitos raster" no piso do dojo)
  • Superação (arcada)
  • Space Harrier (arcada)
  • Super Hang-on (fliperama)
  • Enduro (Atari 2600)
  • Posição do poste (arcada, Atari 2600)
  • Road Rash (3DO)
  • Power Drift (arcada)
  • Força Racin '(arcada)
  • Hydra (arcada)
  • Outrunners (arcade)
  • Turbo (arcada)
  • Caçador de Espiões II (arcada)
  • Pitstop II (comodoro 64)
  • Enduro Racer (arcada)
  • Lotus (comodoro Amiga)
  • Test Drive II (Commodore Amiga?)
  • Speed ​​Buggy

Novamente, não é minha lista - todo o crédito deve ser dado a Louis Gorenfeld por sua incrível pesquisa.


4

Todos os jogos em 3D são falsos em 3D: P Estou brincando, eu sei o que você quer dizer com 'fake 3d' ..

Bem, o 8 / 16bit tem vários exemplos de uma técnica muito comum de apresentar o plano de fundo em camadas que se movem com velocidades diferentes, para imitar a paralaxe. Também era muito comum ver ... na verdade, é mais fácil olhar para qualquer jogo de corrida feito para esses consoles do que explicar, o que acredito ser o que você está tentando fazer.

Estou vendo algumas coisas novas com o mesmo espírito surgindo no cenário flash. Dê uma olhada no Missile Game 3d .

Não sei qual o caminho que você deseja seguir para alcançar esse efeito, mas parece que você está sugerindo que iniciou alguma programação e tem acesso a gráficos (uma API, talvez?). Portanto, é apenas uma questão de encontrar os parâmetros certos para o movimento na tela e a escala em função do tempo. Eu não acho que você encontrará equações específicas para isso, pois provavelmente será altamente dependente da situação específica do seu jogo (a velocidade usual, corridas, aviões, túneis etc.) A tentativa e erro que você já está fazendo é sua melhor aposta, para encontrar as funções de escala e trajetória na tela em relação ao tempo.


3

Jazz Jackrabbit e os antigos jogos do Sonic tinham aqueles Mundos de Bônus que eram pseudo-3d.

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.