Бесконечная карта[зацикленная]

Общие вопросы о Unity3D

Бесконечная карта[зацикленная]

Сообщение artk 09 фев 2012, 23:35

Надо сделать бесконечную карту, довольно большую, при переходе за "грань" персонаж должен появиться на другом конце(незаметно). Карта примитивная, без ландшафта, без стен и потолка. На карте, например будут столбы, либо ящики(все однообразно), которые почти не загораживают вид. Дальность обзора средняя, освещенность слабая. Еще на карте будут динамические объекты(которые можно перемещать, мелкие, с физикой). Возможен мультиплеер. Действие происходит во сне, в фантазии, короче не в реале.
У меня есть несколько решений:
1) разбить карту на куски и за границу карты добавить копии кусков. копировать и динамические объекты на эти куски. При переходе границы телепортировать гг в начало. (Минусов много, сложность в реализации, затратность, возрастающая сложность)
2) сделать границу ввиде пелены или тумана. (Идеально, но надо сделать красиво)
3) Сделать стенки границы в виде зеракала. (хз как)
Есть ли более элегантные решения? Как реализованы порталы в Portal? Думаю, тоже с помощью копирования комнаты. :think:
Аватара пользователя
artk
Старожил
 
Сообщения: 749
Зарегистрирован: 22 май 2011, 12:22

Re: Бесконечная карта[зацикленная]

Сообщение AndreyMust19 10 фев 2012, 06:29

Как реализованы порталы в Portal? Думаю, тоже с помощью копирования комнаты.

Нет, вы что? Прямо так, с помощью порталов.

Я не знаю как точно это сделано в Source, но могу предположить как устроены порталы в Unreal Engine (н-р мод Nameless Mod к Deus Ex).
Весь уровень строится из аддитивной геометрии. Вы добавляете в сцену прямоугольные пустые области (комнаты, улица) и твердые блоки (здания, колонны), перед запуском сцены нужно выполнить ее Build (или портализацию). Причем твердые блоки уже выступают в качестве коллайдеров физического движка.
Портализация сводится к определению пересечения созданных брашей и разбиения игрового пространства на маленькие комнатки простой формы. Эти комнатки называются ячейками (cell) а переходы между ними - порталами (portals). Такое разбиение игрового пространства используется как Occlusion Culling в Unity - рендерится только содержимое тех ячеек, которые граничат с ячейкой в к-й находится игрок, а также ячеек, чьи порталы видно из граничных ячеек. При входе в портал меняется текущая ячейка и, след-но - список ее порталов и граничных ячеек.

Так вот, "порталы" в Unreal Engine наверняка (не могу ручаться точно) были сделаны путем добавления вручную дополнительного портала в процессе портализации. Добавлялась еще одна грань между ячейками, но в отличие от нормального процесса портализации 2 соединяемые ячейки находились далеко друг от друга, в разных частях карты. Соседство ячеек в данном случае не требуется, в портале просто указывались номера ячейки A и B. В результате в комнате A игрок мог видеть через портал комнату B и наоборот. Так обеспечивалась естественная поддержка порталов со стороны игрового движка.

В Source сцена также строится на основе первичной геометрии (пустые и твердые браши), поэтому вполне возможно что порталы устроены так же, как в Unreal Engine, только вместо статического добавления портала используется добавление динамическое.

Создание сцены в Unity основано геометрии сложных мешей с отдельными физическими коллайдерами, поэтому попытка разбить пространство на ячейки приведет к их огромному количеству. В общем, использование портализации уровня в Unity ни к чему хорошему не приведет.
Для создания замкнутого мира скорее всего придется создавать зеркало на границе мира, а при входе в него - телепортировать игрока в противоположную часть сцены.
Нужна помощь? Сами, сами, сами, сами, сами... делаем все сами
AndreyMust19
Адепт
 
Сообщения: 1119
Зарегистрирован: 07 июн 2011, 13:19

Re: Бесконечная карта[зацикленная]

Сообщение Belfegnar_ 10 фев 2012, 10:25

artk писал(а):1) разбить карту на куски и за границу карты добавить копии кусков. копировать и динамические объекты на эти куски. При переходе границы телепортировать гг в начало. (Минусов много, сложность в реализации, затратность, возрастающая сложность)

Не совсем понял, что и куда вы копировать собираетесь. А просто разбиение на куски и перемещение/подстановка нужного куска в нужное место разве не подходит?
Belfegnar_
UNIт
 
Сообщения: 112
Зарегистрирован: 22 ноя 2010, 14:08

Re: Бесконечная карта[зацикленная]

Сообщение jetyb 10 фев 2012, 13:36

Как реализованы порталы в Portal? Думаю, тоже с помощью копирования комнаты.

Сомневаюсь. В Portal порталы могут быть созданы под любым углом, в том числе и не перпендикулярно плоскости поверхности. Притом в настройках можно задать и количество "отражений" в порталах. Реализовать такое путем копирования весьма заморотно.
Может они к каждому порталу(всего их 2) привязывают несколько render texture, а затем последовательно рендерят в них :-?
jetyb
Адепт
 
Сообщения: 1486
Зарегистрирован: 31 окт 2011, 17:21

Re: Бесконечная карта[зацикленная]

Сообщение artk 10 фев 2012, 15:01

Belfegnar_ писал(а):Не совсем понял, что и куда вы копировать собираетесь. А просто разбиение на куски и перемещение/подстановка нужного куска в нужное место разве не подходит?
Перемещать кусок карты нельзя.
Слушал комментарии разработчиков в игре, они говорили что используют для отражения в воде упрошенную геометрию, которую же используют для фрактального изображения портала в портале.
Ступил. Портал - это просто текстура, которая рендериться другой камерой. И вместо зеркала, значит, нужно тоже использовать вторую камеру и рендерить сначала фон, потом главной камерой. Так же как и делается удаленные детали для скайбокса в HL2(так малькие здания со скайкубом и там находиться вторая камера) - SkyDome.
Последний раз редактировалось artk 10 фев 2012, 21:31, всего редактировалось 1 раз.
Аватара пользователя
artk
Старожил
 
Сообщения: 749
Зарегистрирован: 22 май 2011, 12:22

Re: Бесконечная карта[зацикленная]

Сообщение yura415 10 фев 2012, 20:06

Смотрите локомоушн туториал!
http://unity3d.com/support/resources/un ... on-ik.html
Добавить yura4151 в Skype
Аватара пользователя
yura415
Старожил
 
Сообщения: 567
Зарегистрирован: 14 дек 2010, 08:27
  • Сайт

Re: Бесконечная карта[зацикленная]

Сообщение waruiyume 11 фев 2012, 13:47

Моя поделка(wsad пробел мышь)
Скрытый текст:
HTML код для вашего блога :
Код: Выделить всё
<script language='javascript' type="text/javascript"> document.write("<iframe marginheight='0' src='http://unity3d.ru/distribution/player.php?url=http://dl.dropbox.com/u/23279033/InfLevel/WebPlayer.unity3d&w=640&h=480&t=true&preview=1' height='"+(480+30)+"' width='640' frameborder='0' scrolling='no'></iframe>"); </script>
У вас нет доступа для просмотра вложений в этом сообщении.
Аватара пользователя
waruiyume
Адепт
 
Сообщения: 6143
Зарегистрирован: 30 окт 2010, 05:03
Откуда: Ростов на Дону

Re: Бесконечная карта[зацикленная]

Сообщение yura415 11 фев 2012, 13:52

waruiyume писал(а):Моя поделка(wsad пробел мышь)
Скрытый текст:
HTML код для вашего блога :
Код: Выделить всё
<script language='javascript' type="text/javascript"> document.write("<iframe marginheight='0' src='http://unity3d.ru/distribution/player.php?url=http://dl.dropbox.com/u/23279033/InfLevel/WebPlayer.unity3d&w=640&h=480&t=true&preview=1' height='"+(480+30)+"' width='640' frameborder='0' scrolling='no'></iframe>"); </script>

Прямо-таки волшебный мир! Иду по дороге из жёлтого латекса!
Добавить yura4151 в Skype
Аватара пользователя
yura415
Старожил
 
Сообщения: 567
Зарегистрирован: 14 дек 2010, 08:27
  • Сайт

Re: Бесконечная карта[зацикленная]

Сообщение artk 11 фев 2012, 15:24

Спасибо. Супер демо, считай готовая игра. Только зачем столько камер? :-o Мне 2-х, считая главную, хватило. Удивительная производительность.
Аватара пользователя
artk
Старожил
 
Сообщения: 749
Зарегистрирован: 22 май 2011, 12:22

Re: Бесконечная карта[зацикленная]

Сообщение waruiyume 11 фев 2012, 15:55

Мини-демку соорудите (а лучше проектик ;;) )?
Аватара пользователя
waruiyume
Адепт
 
Сообщения: 6143
Зарегистрирован: 30 окт 2010, 05:03
Откуда: Ростов на Дону

Re: Бесконечная карта[зацикленная]

Сообщение artk 11 фев 2012, 18:14

ваша идея гениальна. Я хотел клонировать карту на углах и перемещал вторую камеру в след первой. Оказывается, камера - мощный инструмент.
Аватара пользователя
artk
Старожил
 
Сообщения: 749
Зарегистрирован: 22 май 2011, 12:22

Re: Бесконечная карта[зацикленная]

Сообщение sonofatrus 25 мар 2012, 15:48

А можете оьъяснить принципы заложенные в демку? Я скачал но не ничего, к сожалению, не понял... В чем хитрость?
sonofatrus
UNец
 
Сообщения: 38
Зарегистрирован: 05 мар 2012, 12:53

Re: Бесконечная карта[зацикленная]

Сообщение artk 25 мар 2012, 16:23

Принцип SkyDome. В данном случаи создаются по периметру камеры, которые вращаются и движутся вслед за игроком. Они отрисовывются первыми, потом рисуется главная камера.
Аватара пользователя
artk
Старожил
 
Сообщения: 749
Зарегистрирован: 22 май 2011, 12:22

Re: Бесконечная карта[зацикленная]

Сообщение Belfegnar_ 25 мар 2012, 17:32

То есть RenderTexture? :-s
Belfegnar_
UNIт
 
Сообщения: 112
Зарегистрирован: 22 ноя 2010, 14:08

Re: Бесконечная карта[зацикленная]

Сообщение sonofatrus 25 мар 2012, 18:54

А как же тогда с объектами которые переходят через границу каждой области?
sonofatrus
UNец
 
Сообщения: 38
Зарегистрирован: 05 мар 2012, 12:53

След.

Вернуться в Общие вопросы

Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot], Yandex [Bot] и гости: 16