Войти
ПрограммированиеФорумГрафика

Доклад о порталах и секторах (Комментарии к статье)

Страницы: 1 2 3 Следующая »
#0
22:13, 22 дек. 2004

Комментарий к Статье "Доклад о порталах и секторах"
В статье рассматривается несколько точных методов деления уровня на секторы, а также предлагается приблизительный “корпускулярный” метод.
Подробнее: http://www.gamedev.ru/code/articles/?id=4217


#1
22:13, 22 дек. 2004

Предложенный тобой метод будет плохо работать с узкими щелями и дырами, в которых не размещены порталы?

#2
0:04, 23 дек. 2004

Позвольте навести немного критики.
Не согласен с данным определением секторов и порталов. По мне, так в минимальном определении сектор является синонимом пространства, а портал - преобразованием пространства.
Далее,  обычно различают как минимум два вида портально/секторных походов. В первом, сектора действительно можно определить так же, как это сделано в статье, т.е. по сути сектора могут быть представлены выпуклыми полиэдрами, грани которых являются либо порталами, т.е. прозрачны, либо частями геометрии уровня. Простейший способ получения этих данных - построить BSP уровня. В этом подходе никто порталы/сектора руками не задаёт, они генерируются автоматически и их, обычно, очень много. Плюс подхода в том, что при растеризации можно обеспечить нулевой overdraw. Минус в том, что подход не самый актуальный на сегодняшний день, т.к. в условиях высокополигональной геометрии уровней даёт слишком большую и не оправданную нагрузку на процессор, память и совсем не дружественен современным GPU. Во втором, более современном подходе сектор является просто некоторым пространством, если и ограниченным, то достаточно условно. А порталы - это, если угодно, всё так же окна или входы/выходы в это пространство. Но, как уже ранее упоминалось, правильнее было бы назвать порталы преобразованием пространства. Чаще всего под этим преобразованием подразумевается единичная матрица трансформации и некоторая область отсечения. Для пущей универсальности хотелось бы предложить, что портал связывает два сектора только в одном направлении, т.е. это либо вход, либо выход. Кому как удобнее. Чтобы можно было свободно перемещаться из одного сектора в другой и обратно, нужно определить как минимум два портала.
Продолжая. В статье дано определение секторов скорее для первого подхода, в то время как всё остальное повествование идёт скорее о втором. При этом из статьи так и не стало ясно, для чего вся эта хитрость затевается. Работоспособность предложенных алгоритмов вызывает сомнение. Их можно принять для некоторых частных случаев, но, опять же, эти случаи небыли ясно описаны.

(Edit: стёрто ошибочное предположение об опечатке в статье)

#3
0:23, 23 дек. 2004

arabesc
> P.S.: в конце второго пункта опечатка - Zemledelec, отсутствует первая буква l.
Не.. тут всё правильно, это от Болгарского, и именно такой ник.

#4
0:28, 23 дек. 2004

wat
Прошу прощения, значит у меня устойчивая иллюзия. Всё время, что читал форумы, видел там букву l :)

#5
5:58, 23 дек. 2004

Сорри господа, но.... Я понимаю что сие не для начинающих, но в итоге... Кхммм.. После некоторых статей, не буду называть авторов дабы не возгордились (хотя в принципе есть за что) это выглядит туманным и путанным. Если быть более правдивым и правильным, я после изречения Quilera (дай бог не ошибится) пытаюсь поднять беларусский геймдевеломпминг(затея пустая и любительская, но все от компьютерщики от любителя и начинали). Что весьма.... Тяжелая проблема, если не говорить более жЕстко, если не жёсткО....  Конкретно, нам не хватает учебного материала. Я перерываю все ваши форумы и уроки, да и не только ваши... Но это минимум... Не хватает просто примеров. Теории, завались. Реальных примеров, хотя бы кусочков.... Миниум...
Да. Вы можете воспринимать этот пост как крик о помощи... Но все же мы не настолько глупы что нам надо все разжевывать, просто хочется немного больше ясности и примеров. Для того что бы мы(я) могли хотя бы часть людей НАУЧИТЬ возможностям 3d програминга.... И пополнить ваши ряды...
С уважением ^^Тринадцатый^^

P.S. Сорри за скомканный стиль письма....

#6
9:42, 23 дек. 2004

Зачем примеры? Все равно все придется переделывать под свои нужды и стиль.

#7
10:43, 23 дек. 2004

> , просто хочется немного больше ясности и примеров.

Абсолютно согласен, зачастую пример в 5 строк говорит больше чем 10 страниц пространных философских размышлений о сути проблемы.

#8
10:59, 23 дек. 2004

По поводу корпускулярного метода - что мы получим в результате?  Выходит, что такой сектор будет включать больше геометрии, чем сектор, определенный точным методом.

В каких ситуациях  не нужно задавать границы секторов точно и в чем преимущество такого подхода?

В чем смысл создания вокруг каждого сектора ограничивающего куба и в дальнейшем использования для всех проверок (имеется в виду отсечение?)?
Я представяю себе использование секторов\порталов таким образом. Если мы видим портал, то обрабатываем сектор, в который ведет этот портал (или вообще просто рисуем содержимое сектора).

О методе лучевой маркировки. Из каких точек портала пускаются лучи? Из вершин, из произвольных точек периметра портала или из произвольных точек полигона?
Операция маркировки повторяется для только что отмаркированных полигонов – теперь уже они испускают лучи. Если некоторый маркированный полигон, принадлежащий сектору B, “видит” немаркированный полигон A, то полигон A тоже маркируется – приписывается сектору B.
Каким образом испускаются лучи из полигонов? При этом портал считается непрозрачным полигоном? Не получится ли так, что полигон А должен был принадлежать к другому сектору, но виден через портал  и поэтому был приписан к В?
Было бы интересно посмотреть реализацию этого алгоритма.

Метод “хождения по ребрам” достаточно приятный, если аккуратно готовить геометрию. ;)

#9
12:09, 23 дек. 2004

По всей видимости автор выложил свои мысли  и соображения по данному поводу в статью. Для представления ситуации очень даже хорошо написано. Я бы написал похоже. А что касается конкретики. то (повторяясь)...

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

Сектор - это некое замкнутое пространство, ограниченное геометрией и порталами. (Полу-)Прозрачные полигоны имея в основе портал, принадлежат к обоим видам ограничителей.

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

Используя кубы секторов можно быстро отсекать невидимые сектора. Алгоритм прост:
берем сектор, определяем, какие порталы попадают в зону видимости, берем кубы секторов, принадлежащих той стороне портала, ищем порталы.... и так далее, пока порталы не кончатся, либо пока не будет достигнут предел видимости по прямой.

...
Метод лучевой маркировки описан не полностью. Дано лишь приблизительное описание. Если взять ситуацию - два кубика связанные квадратным проёмом-окном, то такой метод не пойдёт, полигоны, составляющие проём, просто не будут найдены.
BSP-дерево в таком случае скорее всего составило бы ветку - кубик1 -> кубик2-который-проём -> кубик3. Отсюда вывод - если порталы строятся человеком, то для отсечения внутренней геометрии должны использоваться дополнительные автоматические алгоритмы, типа BSP (сектор по определению-замкнутая геометрическая фигура).

#10
12:36, 23 дек. 2004

Neonic
Используя кубы секторов можно быстро отсекать невидимые сектора. Алгоритм прост:
берем сектор, определяем, какие порталы попадают в зону видимости, берем кубы секторов, принадлежащих той стороне портала, ищем порталы.... и так далее, пока порталы не кончатся, либо пока не будет достигнут предел видимости по прямой.

То есть без построения фрустума портала?

#11
12:44, 23 дек. 2004

Предложу ещё один способ привязки геометрии к секторам. Он логично получается из разбиения сцены BSP деревом на выпуклые полиэдры. Достаточно взять многогранник хотя бы одна грань которого принадлежит текущему порталу и начать рекурсивно присоединять к нему смежные по проницаемым граням, за исключением тех случаев, когда грань является частью другого портала. Полигоны, являющиеся частью непроницаемых граней, помечаются как принадлежащие сектору, в который ведёт текущий портал. Метод требует только правильной первоначальной расстановки порталов, в остальном достаточно гибок.

Earl Vlad XIII
Если есть желание учиться, то лучше его сейчас направить на освоение английского языка. После этого дефицит в информации во многом отпадёт сам собой. Останется только фильтровать полезное от мусора.

#12
13:03, 23 дек. 2004

Neonic
По всей видимости автор выложил свои мысли  и соображения по данному поводу в статью.
Свои мысли и соображение лучше выкладывать в личный дневник. А в статью это превращать только после хорошего обдумывания темы, принятия отзывов от коллег, и желательно, подкрепляя многочисленными иллюстрациями и примерами. А так, просто поток мыслей, непонятно в каком контексте.

Для представления ситуации очень даже хорошо написано
Для представления какой ситуации? О чём речь? О методах оптимизации обработки столкновений, рендеринга, поиска пути?

Сектор - это некое замкнутое пространство, ограниченное геометрией и порталами
Почему замкнутое? Почему ограниченное?
Разве ландшафт, видимый из помещения, нельзя объявить отдельным сектором? И что, он замкнут или ограничен?

#13
13:08, 23 дек. 2004

Agressor
С построением фрустума портала на основе фрустума видимости (камеры игрока).

arabesc
это и есть 2 метод zemedelec'a

#14
13:21, 23 дек. 2004

Neonic
это и есть 2 метод zemedelec'a
Нет, не тот же. Там хождение по рёбрам исходной геометрии. Требуется связанность. И вообще, больше ограничений на исходные данные.
В описанном мной методе идёт перебор многогранников, образованных BSP деревом. Связанность не требуется. Это скорее похоже на то, что описано в п.2 статьи. Только там не был сделан последний логический шаг - получение списка полигонов, принадлежащих сектору. Плюс приплетён какой-то ограничивающий куб...

Страницы: 1 2 3 Следующая »
ПрограммированиеФорумГрафика

Тема в архиве.