F'System'Stream (03:34:53 15/11/2009) есть вопросы по BSP)) c4tnt (03:35:09 15/11/2009) Какие? F'System'Stream (03:35:41 15/11/2009) как отсечь невидимую геометрию F'System'Stream (03:35:50 15/11/2009) за картой F'System'Stream (03:36:10 15/11/2009) и как связаны дыры с ней c4tnt (03:36:12 15/11/2009) Вообще или применительно к какой-то игре? F'System'Stream (03:36:23 15/11/2009) сам пишу двиг F'System'Stream (03:36:45 15/11/2009) типа алгоритм c4tnt (03:36:48 15/11/2009) У тебя в бсп нужно собрать выпуклые объёмы из плоскостей c4tnt (03:36:52 15/11/2009) для начала F'System'Stream (03:37:06 15/11/2009) листья c4tnt (03:37:11 15/11/2009) ага F'System'Stream (03:37:15 15/11/2009) и c4tnt (03:37:36 15/11/2009) Потом можно просто построить список доступности F'System'Stream (03:37:45 15/11/2009) pvs c4tnt (03:37:50 15/11/2009) т.е. у тебя должен быть хоть один энтити c4tnt (03:38:11 15/11/2009) ищешь лист, в который энтити попал c4tnt (03:38:43 15/11/2009) и отмечаешь все объёмы, которые доступны из объёма с энтити F'System'Stream (03:39:05 15/11/2009) а остальные отсекаю c4tnt (03:39:11 15/11/2009) после проверки всех энтити непомеченые листы выкидываются нафих c4tnt (03:39:37 15/11/2009) Если отмечено всё, то явно где-то есть дырка F'System'Stream (03:40:09 15/11/2009) ага вот почему невозможно построить bsp без info_player_start c4tnt (03:40:36 15/11/2009) в общем бсп то построить можно, а вот выкинуть лишнее нельзя. Хотя есть способ если надо F'System'Stream (03:41:04 15/11/2009) надо)) c4tnt (03:41:15 15/11/2009) Нужно найти листы, захватывающие бесконечно удалённую точку c4tnt (03:41:41 15/11/2009) обычно это неполные листы, открытые в одну сторону F'System'Stream (03:42:20 15/11/2009) их типа сразу отсечь c4tnt (03:42:22 15/11/2009) и отметить их как внешние, потом эту отметку распространять в соседние листы c4tnt (03:42:48 15/11/2009) как только соседние с внешними листы кончатся - удалить всё это F'System'Stream (03:43:33 15/11/2009) а этим алгоритмом пользуется QBSP, F'System'Stream (03:43:35 15/11/2009) ? c4tnt (03:43:41 15/11/2009) Только в этом случае нереально построить leak-кривую c4tnt (03:43:50 15/11/2009) QBSP от энтити идёт c4tnt (03:44:44 15/11/2009) Но вроде бы он внешние сектора сразу отмечает и если от энтити до такого сектора можно дойти, то он рисует путь и заканчивает компиляцию F'System'Stream (03:46:33 15/11/2009) а для pvs надо провести от одного полигона первого листа до другого полигона другого листа линию и если линия не с чем не пересекается то они видны друг другу c4tnt (03:47:16 15/11/2009) ну не лучший вариант, но можно. Это сильно зависит от устройства листа c4tnt (03:47:47 15/11/2009) Просто у листа есть же портальные стороны и твёрдые F'System'Stream (03:48:18 15/11/2009) а как делает qbsp c4tnt (03:49:04 15/11/2009) Для того, чтобы был виден один лист из другого - из него должна быть видна хоть одна портальная поверхность проверяемого сектора c4tnt (03:49:42 15/11/2009) Как делает QBSP - сложный вопрос - их много разных. Но он это точно делает медленно F'System'Stream (03:49:51 15/11/2009) как понял поверхность без полигона F'System'Stream (03:50:01 15/11/2009) -порталбная c4tnt (03:50:02 15/11/2009) да c4tnt (03:50:32 15/11/2009) В принципе изнутри листа видны все его стороны - это факт c4tnt (03:50:51 15/11/2009) уже на этом можно приблизительно построить карту видимости F'System'Stream (03:51:22 15/11/2009) ну да c4tnt (03:51:58 15/11/2009) и так же если в листе для двух разных плоскостей угол между нормалями не менее 90 градусов, то через эти две плоскости лист просматривается насквозь c4tnt (03:52:51 15/11/2009) хотя нет, там слегка подругому F'System'Stream (03:53:28 15/11/2009) список доступности-это и есть pvs?? c4tnt (03:54:04 15/11/2009) не совсем - список доступности - это откуда куда через порталы можно дойти, а пвс - список видимости F'System'Stream (03:54:38 15/11/2009) блин c4tnt (03:54:56 15/11/2009) но первый для второго полезен F'System'Stream (03:54:57 15/11/2009) его сложно построить?? c4tnt (03:55:10 15/11/2009) хотя первый построить довольно легко, кстати c4tnt (03:56:00 15/11/2009) просто выбираешь один из листов и добавляешь его в список, потом добавляешь его соседей, соседей его соседей и т.д. В общем flood fill F'System'Stream (03:56:27 15/11/2009) gjyznyj c4tnt (03:56:27 15/11/2009) Получатся наборы из листов, может один, а может и несколько F'System'Stream (03:56:31 15/11/2009) понятно c4tnt (03:56:52 15/11/2009) Набор, в котором есть внешние листы выкидывается c4tnt (03:57:07 15/11/2009) если он, конечно, не один