forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Blitz3D (http://forum.boolean.name/forumdisplay.php?f=45)
-   -   порталы как в Portal - это как ? (http://forum.boolean.name/showthread.php?t=17240)

tirarex 27.08.2012 16:16

порталы как в Portal - это как ?
 
как можно реализовать порталы из игры portal то-есть входим в один выходим из 2рого
была идея создавать триггер и проверять если игрок в нём то тп его ко 2рому порталу
так сделать можно но выглядеть это будет не очень

в самой игре портал была другая механика
то-есть можно было на половину зайти в один портал и пол игрока торчит из 2 рого
как сделать такое даже идей нет

если кто-то знает может поделитесь

Hurrit 27.08.2012 16:52

Ответ: порталы это как ?
 
создаешь двух игроков, одного скрываешь, в случае необходимости показываешь где надо

tirarex 27.08.2012 16:57

Ответ: порталы это как ?
 
а как быть с обьектами с кубиком на пример
все обьекты по 2 штуки иметь это не выход

Hurrit 27.08.2012 16:59

Ответ: порталы это как ?
 
это выход вообще-то, другого способа я не вижу

tirarex 27.08.2012 17:03

Ответ: порталы это как ?
 
эх жаль нельзя посмотреть как сделано в самом портале

tirarex 27.08.2012 17:31

Ответ: порталы это как ?
 
ну хоть способ самый простой с перемещением боди как сделать такой не работает XD


If EntityDistance (camera,portal1) <15
pxBodySetPosition player_body ,EntityX(portal2),EntityY(portal2),EntityZ(portal2 )
;RotateEntity camera ,EntityRoll(portal2),EntityYaw(portal2),EntityPitc h(portal2)+90
EndIf
If EntityDistance (camera,portal2) <15
pxBodySetPosition player_body ,EntityX(portal1),EntityY(portal1),EntityZ(portal1 )
;RotateEntity camera ,EntityRoll(portal1),EntityYaw(portal1),EntityPitc h(portal1)+90
EndIf

Hurrit 27.08.2012 18:06

Ответ: порталы это как ?
 
Прочитай свой код еще раз, небось туда сюда без конца кидает ?

tirarex 27.08.2012 18:08

Ответ: порталы это как ?
 
но как по другому я уж не знаю

Spy4433 27.08.2012 18:41

Ответ: порталы это как ?
 
ну код написали как пример, это не значит что он должен полностью реализовывать все. его доработать и все будет ок :)

а что бы видеть то что в портале молжно заюзать вторую камеру(хотя ресурсоемко)

P.S а зачем телепортировать именно в точку где портал номер 2 стоит ? надо же как бы перед порталом ? вот просто телепортить игрока немного смещая в ту сторону куда смотрит портал :) это самое первое что на ум пришло

tirarex 27.08.2012 18:56

Ответ: порталы это как ?
 
вот как доработать то
на счёт отражения в портале можно создать портал и отрендерить кубемапу

Igor 27.08.2012 21:27

Ответ: порталы это как ?
 
А может, сделать честно - отрендерить мир в текстуру и поверх её там где потрал нарисовать тот же мир но с другой позиции?
P.S. Только если в Portal 2 сделать порталы друг напротив друга, получается 100500 отражений, тут как-то схитрить надо.

LLI.T.A.L.K.E.R. 27.08.2012 21:35

Ответ: порталы это как ?
 
ну схитрить - просто циклично* пририсовывать изображения мира, с уменьшением в центр на каждой плоскости портала.
только рендер в текстуру будет "тяжёлым" для блитз3д

*минимум сделать два рендера с каждого портала, а потом цикл


хотя нет - центром считать параллельную противоположность между порталами.

Код:

/
|
|_____\
\    |
      |
    /

сайт долго грузится - заканчиваю печатать

tirarex 28.08.2012 09:36

Ответ: порталы это как ?
 
в fast ext рендер в текстуру очень быстрый поэтому сделать не так сложно а вот как сделать нормальное перемещение мкжду порталами я не знаю

pax 28.08.2012 09:44

Ответ: порталы это как ?
 
Цитата:

Сообщение от Igor (Сообщение 237394)
Только если в Portal 2 сделать порталы друг напротив друга, получается 100500 отражений, тут как-то схитрить надо.

Многократное отражение будет автоматом, правда каждое следующее отражение будет с задержкой на один кадр. Это получается потому, что каждая камера рендерит рендертекстуру другой камеры и каждый кадр получается новое отражение.

moka 28.08.2012 13:44

Ответ: порталы это как ?
 
Цитата:

Сообщение от pax (Сообщение 237421)
Многократное отражение будет автоматом, правда каждое следующее отражение будет с задержкой на один кадр. Это получается потому, что каждая камера рендерит рендертекстуру другой камеры и каждый кадр получается новое отражение.

В Xors3D была проблема в данном случае - т.к. лочилась текстура для рендера в неё, объекты на которые она была наложена текстура с них летела. Следственно для нормальной реализации такого зацикленного отражения, приходилось использовать две текстуры чередуя их одну за другой.

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

Да, и при рендере отражения, нужна ClipPlane для того чтобы отсечь всё что ближе чем портал, а то будут проблемы там..


Часовой пояс GMT +4, время: 01:23.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot