| 
	
		
		
			| Порталы, как в 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]
 |  |  |  |  |  
 |