Пятница, 19 Апреля 2024, 09:06

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Программирование » Общие обсуждения программистов » Порталы, как в Portal. (Как реализованы?)
Порталы, как в Portal.
UndeadДата: Понедельник, 28 Января 2013, 01:36 | Сообщение # 1
NeoAxis User
Сейчас нет на сайте
Кто-нибудь знает как они реализованы, или где про это почитать(можно на английском).
Меня интерисует только принципы работы, хочу реализовать подобное.


Вcем зла.

Сообщение отредактировал Undead - Понедельник, 28 Января 2013, 13:34
TimKruzДата: Понедельник, 28 Января 2013, 18:37 | Сообщение # 2
старожил
Сейчас нет на сайте
Как конкретно в Portal - не знаю, но самый простой вариант - делать как зеркала. Т.е. делается дырка в стене, а за ней - вторая сцена, копия первой, только с определённой точки зрения и под определённым углом (если второй портал открыт). Ну и при переходе объекта из портала в портал просто одна копия выходит в основную сцену, а вторая уходит в дополнительную.
Или можно рисовать одну сцену с разных позиций, сохранять "скриншот" в памяти и использовать как текстуру портала, а для перехода создавать копию объекта в другом месте. Т.е. первая прорисовка в заднем буфере формирует изображение "из портала", картинка сохраняется как текстура, буфер перерисовывается картинкой "из глаз игрока" и выводится на экран. Только ещё угол зрения учитывать придётся...


UndeadДата: Понедельник, 28 Января 2013, 19:06 | Сообщение # 3
NeoAxis User
Сейчас нет на сайте
TimKruz, Зеркала у меня иначе. Просто рендер в текстуру с дополнительной камеры.
За идею про 2 сцены спасибо. Можно и так попробовать.
Вот только с дырками(самими порталами) в стенах и потолке проблема. Комната состоит из тайлов стен, потолка, пола. И каждый тайл - статичная физ. модель. Придётся либо обновлять модель во время игры, либо делать из примитивов и просто убирать колизии с примитивами. Буду думать.


Вcем зла.

Сообщение отредактировал Undead - Понедельник, 28 Января 2013, 19:38
daunДата: Понедельник, 28 Января 2013, 20:34 | Сообщение # 4
постоянный участник
Сейчас нет на сайте
Скорей всего сцена отрисовывается два раза, вторая смещается (translate, rotate), чтобы дыры совпали, и как-то гг телепортируют.
Наверно сцену клонируют прямо с гг.


Сообщение отредактировал daun - Понедельник, 28 Января 2013, 20:39
UndeadДата: Понедельник, 28 Января 2013, 21:03 | Сообщение # 5
NeoAxis User
Сейчас нет на сайте
daun, Нет, тут сложнее, чем телепортация.
Если портал в плоской поверхности и объект в нём только на половину. Надо что-то с остальной частью делать.
Просто модель обрезать не проблема. Да только тут ещё и физическая модель есть, её так просто не обрезать.


Вcем зла.
ShadowZiДата: Понедельник, 28 Января 2013, 21:58 | Сообщение # 6
постоянный участник
Сейчас нет на сайте
Пройди первый портал с коментариями Там вроде в одном из первых коментариев для уровня.
Было сказано, что для них это был большим гемором, чтобы обеспечить возможность прохождения, частичного (внести часть куба или часть героя в портал). Проблема была как с физикой(портал может быть один на стене второй на полу и потолку) так и с поведением. В итоге они отказались от совмещённой прорисовки и физики и разделили на разные системы. С камерами вроде поступили банально, а именно в каждый портал засунули по камере и рисуют это в текстуру, правда чтобы обеспечить вид вложенных порталов, там приходится несколько раз один основной портал проходить чтобы получить коридорчик, но им как-то удалось оптимизировать. С физикой было интереснее
UndeadДата: Вторник, 29 Января 2013, 15:31 | Сообщение # 7
NeoAxis User
Сейчас нет на сайте
ShadowZi, Я помню про это. Они всех секретов то не рассказывают.

Вcем зла.
nonameДата: Среда, 13 Марта 2013, 20:10 | Сообщение # 8
заслуженный участник
Сейчас нет на сайте
вряд ли эта инфа чем-то поможет, но ещё интересно порталы сделаны в игре Prey:

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


все правила форумной игры Дуэль Программистов
ТехникДата: Среда, 13 Марта 2013, 20:50 | Сообщение # 9
Глава X-ray Games
Сейчас нет на сайте
Как я вижу реализацию порталов: трассируем 1 луч и получаем координаты центра первого портала, трассируем второй для задания координат второго. Затем при пересечении сферы с ограничивающим объемом одного из порталов перемещаем на координаты второго. Рисование зеркальной поверхности - это работа со стенсил буфером,если писать на чистом API или работа с ним же,но косвенно через методы некоторого класса или механизма,отвечающего за данную работу. Про реализацию зеркал на любом API можно найти в интернетах.
vinurdДата: Четверг, 14 Марта 2013, 03:09 | Сообщение # 10
постоянный участник
Сейчас нет на сайте
выстрел в стену ставит камеру. выстрел в другую тоже ,обе камеры перекрестно передают изображение на текстуру порталов . дальше идет большой код. если модель игрока прикоснусь к тексту первого портала то идет перенос камеры зрения в координаты портала выхода создание модели тела, того что в руках с уничтожением модели в портала входа и по второму движению по отношению к текстурам портала если движение при выходе меняется на обратный вход то процесс переворачивается. портал выхода становиться входом и все повторяем. создание модели предмета воспроизводится по углу прикосновения модели. по сути это фокус, быстрота двжка и умелая постановка предметов не дает разглядеть подмены.
UndeadДата: Четверг, 14 Марта 2013, 04:42 | Сообщение # 11
NeoAxis User
Сейчас нет на сайте
Цитата (noname)
Prey была издана раньше чем Portal, и в ней портал просто не заметен: там есть момент, где ты просто идя по коридору, проходишь через портал в другую часть коридора, и это совершенно не заметно. обычно же там порталом является, например, одна из сторон ящика или дверной проём, стоящий посреди комнаты- смотришь в ящик(или такой проём) и видишь другую комнату и можешь в неё войти. при этом, некоторые порталы можно и отключать.

Кэп.

Цитата (vinurd)
выстрел в стену ставит камеру. выстрел в другую тоже ,обе камеры перекрестно передают изображение на текстуру порталов . дальше идет большой код. если модель игрока прикоснусь к тексту первого портала то идет перенос камеры зрения в координаты портала выхода создание модели тела, того что в руках с уничтожением модели в портала входа и по второму движению по отношению к текстурам портала если движение при выходе меняется на обратный вход то процесс переворачивается. портал выхода становиться входом и все повторяем. создание модели предмета воспроизводится по углу прикосновения модели. по сути это фокус, быстрота двжка и умелая постановка предметов не дает разглядеть подмены.

Модель != физическое тело.

Цитата (Техник)
Как я вижу реализацию порталов: трассируем 1 луч и получаем координаты центра первого портала, трассируем второй для задания координат второго. Затем при пересечении сферы с ограничивающим объемом одного из порталов перемещаем на координаты второго. Рисование зеркальной поверхности - это работа со стенсил буфером,если писать на чистом API или работа с ним же,но косвенно через методы некоторого класса или механизма,отвечающего за данную работу. Про реализацию зеркал на любом API можно найти в интернетах.

Цитата (Undead)
Если портал в плоской поверхности и объект в нём только на половину. Надо что-то с остальной частью делать. Просто модель обрезать не проблема. Да только тут ещё и физическая модель есть, её так просто не обрезать.


Вcем зла.
TimKruzДата: Четверг, 14 Марта 2013, 12:38 | Сообщение # 12
старожил
Сейчас нет на сайте
Цитата (Undead)
Если портал в плоской поверхности и объект в нём только на половину. Надо что-то с остальной частью делать. Просто модель обрезать не проблема. Да только тут ещё и физическая модель есть, её так просто не обрезать.

Ещё зависит от типа портала. По разным теориям, портал может либо пропускать тело напрямую, т.е. можно сунуть руку и увидеть её, торчащей из другого портала, либо производить переправку тела только после полного поглощения тела порталом. Если возникают сильные сложности с физикой - сделай второй тип портала, в который нужно целиком запрыгивать (или он сам засасывает - ещё и красивый спецэффект можно прикрутить).

Ну можно ещё делать примерно так: совсем отключать коллизию с теми стенами, на которых порталы, в момент вхождения в портал; и ещё у тебя должно быть как бы три сцены (основная, для первого и второго порталов) и две модели игрока, но столкновения обрабатывает только первая физическая модель, которая переходит из первой во вторую сцены; после окончательного перехода модель №1 уничтожается, а физическая модель переносится на модель №2.


OpenGOOДата: Четверг, 14 Марта 2013, 22:59 | Сообщение # 13
почти ветеран
Сейчас нет на сайте
Пример портала на Blitz3D почти как в Portal

Games Demystified: Portal


Мои проекты:
- Свободный и открытый клон World Of Goo
- TrueEngine2D (2D игровой фреймворк основанный на FreeBASIC)

[GameMaker: Studio v1.4.9999]
Форум игроделов » Программирование » Общие обсуждения программистов » Порталы, как в Portal. (Как реализованы?)
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг