Примеры подделки 3D


17

Кто-нибудь знает какие-нибудь хорошие примеры фальсификации 3D в 2D (не обязательно код, но игры, которые я мог бы посмотреть)? У игрока есть перспектива, что он «уходит» на экран, и на него что-то выходит. На данный момент я просто масштабирую 2D врагов, чтобы создать иллюзию, что они приближаются, но это все еще кажется довольно плоским. Есть ли какие-нибудь советы о том, как сделать 3D-иллюзию более реалистичной, не используя 3D-движок?

Изменить : только что столкнулся с термином «Mode7» и это видео, которое показывает в значительной степени то, что я пытаюсь выяснить. (особенно игры в 0:13 и 1:03). Какой хороший способ реализовать что-то вроде этого?


1
Многие компьютерные игры до середины 90-х годов «подделывали» 3d, и почти все консольные игры до эры пятого поколения (Playstation / N64) это делали. Это может помочь уточнить, что вы делаете сейчас с помощью скриншота или чего-то ...
Thedaian

1
Я обновил пост с видео, которое я только что нашел.
XSL

2
Все 3D в компьютерных играх - фальшивка 3D. Ничего из этого на самом деле не существует! (Я имею в виду это в том смысле, что любое «подделывание» 3D в игре - это просто родственник того, что, по вашему мнению, является «реальным». Mode7 - это просто золотая середина между ними. Та же базовая математика.)
DampeS8N

Ответы:


13

Одна из моих любимых классических аркадных игр также сделала фальшивку 3D: Space Harrier

В этом видео вы можете увидеть несколько приемов, которые они использовали, но один из наиболее эффективных визуальных эффектов настолько плавный, что вы даже можете не заметить, что это происходит: когда игрок (или, что важно, камера) движется, он использует параллакс, чтобы дать объектам На сцене ощущение глубины.

То есть более близкие объекты перемещаются из стороны в сторону быстрее, чем удаленные объекты. Классический пример параллакса - это взгляд из окна движущейся машины: находящиеся поблизости объекты, такие как дорожные знаки, проносятся мимо, деревья дальше движутся медленнее, а отдаленные предметы, такие как горы, едва ли движутся.

Кроме того, объекты не линейно масштабируются по мере приближения. То есть объекты лишь немного масштабируются, а при приближении увеличиваются быстрее; линейное масштабирование будет, если они будут увеличиваться с одинаковой скоростью все время. Вы говорите, что уже масштабируете свои объекты по мере их приближения, но вы можете масштабировать их линейно, и это выглядит плоским.

ДОПОЛНЕНИЕ: Afterburner - еще одна классическая аркадная игра, в которой используется много одинаковых графических приемов.


1
Тени также являются очень важными частями создания 3D-объектов. В зависимости от стиля игры это может быть или не быть так просто, может ли ваш персонаж отбрасывать тень на землю или ваш корабль достаточно велик, чтобы отбрасывать тень на планету? Это общая концепция, лежащая в основе рельефа или нормального отображения. (Не предполагая, что это будет сделано, просто в качестве примера высокого уровня) Тень вашего персонажа, слегка пересекающая дерево на заднем плане, но не далеко от холма на расстоянии, может добавить искомую грань.
Джеймс

6

В большинстве этих игр используются знаменитые приемы «Mode 7». Это просто ротозум. Эта операция была выполнена сопроцессором на консоли, поэтому она была очень быстрой на этом оборудовании. Реальные 3d операции были слишком дорогими. Но с фактическим оборудованием легче симулировать с реальным 3D.

Rotozoom - это вращение и увеличение спрайта. Посмотрите это объяснение или эту реализацию SDL .

Выполните поиск в Google "MODE-7 floormap", чтобы найти образцы и код.

F-Zero Mode 7 была одной из первых игр, которая использовала его на snes.


5

Несколько лет назад я нашел фантастический обзор этих методов с примерами и объяснениями. Ваш вопрос подтолкнул меня к поиску: «Псевдо-3-я страница Лу» . Раньше у него был работающий двигатель Outrun, но по какой-то причине его сняли ( Wayback Machine, если ваш друг здесь )

Чтобы в дальнейшем ответить на ваш вопрос, вот список игр с его страницы:

  • Street Fighter II (аркада) («растровые эффекты» на этаже додзё)
  • Обгон (аркада)
  • Космический Харриер (аркада)
  • Super Hang-on (аркада)
  • Эндуро (Atari 2600)
  • Положение полюса (аркада, Atari 2600)
  • Road Rash (3DO)
  • Power Drift (аркада)
  • Racin 'Force (аркада)
  • Гидра (аркада)
  • Outrunners (аркада)
  • Турбо (аркада)
  • Spy Hunter II (аркада)
  • Питстоп II (Коммодор 64)
  • Эндуро Гонщик (аркада)
  • Лотос (коммодор Амига)
  • Тест-драйв II (Commodore Amiga?)
  • Скорость багги

Опять же, не мой список - вся заслуга должна быть за Луи Горенфельдом за его потрясающее исследование.


4

Все 3d-игры являются поддельными 3d: P Я шучу, я знаю, что вы подразумеваете под «поддельным 3d» ..

Ну, у 8/16 бита есть несколько примеров очень распространенной техники представления фона в слоях, движущихся с разными скоростями, для имитации параллакса. Было также очень часто видеть ... на самом деле, проще взглянуть на любую гоночную игру, созданную для этих приставок, чем объяснить, что, я считаю, то, что вы пытаетесь сделать.

Я вижу некоторые новые вещи в том же духе, которые появятся в сценарии флэш. Взгляните на ракетную игру 3d .

Я не знаю, по какому пути вы хотите пойти, чтобы достичь этого эффекта, но, похоже, вы предлагаете начать программирование и иметь доступ к графике (может быть, API?). Так что это просто вопрос выбора правильных параметров движения по экрану и масштабирования в зависимости от времени. Я не думаю, что вы собираетесь найти конкретные уравнения для этого, так как это, вероятно, будет сильно зависеть от конкретной ситуации в вашей игре (обычная скорость, гонки, самолеты, туннели и т. Д.). Метод проб и ошибок, который вы уже делаете. Ваш лучший выбор для определения масштаба функций и траектории на экране относительно времени.


Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.