При хостинг поддержке Интернет-сообщества VBIOS CS-Mapping.com.ua
Вернуться   CS-Mapping.com.ua > Forum > Разработка игр > Xash3D Engine
Ник
Пароль
Регистрация Правила форума FAQ Пользователи Администрация Календарь Поиск За 24 часа Пометить все разделы прочитанными

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый вчера, 14:11  #541
ncuxonaT
ncuxonaT
Старший прапорщик
Регистрация: 05.05.2013
Сообщения: 694


По умолчанию

2 nemyax: будет 2 куска в одной плоскости
ncuxonaT вне форума Ответить с цитированием
Старый вчера, 14:12  #542
nemyax
nemyax
Сержант
Регистрация: 30.07.2015
Сообщения: 239


По умолчанию

Их всё равно надо положить в разные ветки бинарного дерева.
nemyax вне форума Ответить с цитированием
Старый вчера, 14:19  #543
Raid
Raid
Регистрация: 28.03.2037
Адрес: CSM-чат
Возраст: 26
Сообщения: 7,788


По умолчанию

2 ncuxonaT:
Можно. Будет правда не строго по сетке, но как показывают наблюдения часто лучше так лишь бы плоскость целая. Компилятор справляется в большинстве случаев. Редактировать просто неудобно, сдвинул вертекс и все. Либо инвалидная структура либо щель.
Raid вне форума Ответить с цитированием
Старый вчера, 15:09  #544
Дядя Миша
Дядя Миша
Регистрация: 28.03.2010
Адрес: Кубань
Сообщения: 12,099


По умолчанию

2 ncuxonaT: я боюсь ты или невнимательно читал или вообще не понял принципы работы. Треугольник НИКАК не надо резать для получения аксиальной плоскости, если у треугольника одна из сторон выровнена по XYZ, то в момент создания этого треугольника одна из его секущих будет аксиальной (и перпендикулярна самому треугольнику). Она отправится в общий набор плоскостей, а потом SelectPartition выберет её для сечения в первую очередь, просто потому что она аксиальная. И она разрежет всех соседей, проходящих сквозь эту плоскость. И появятся дополнительные разрубы.
Причём логика самого BSP пересмотру не подлежит, а вот CSG надо исправлять, т.к. он самый глюченый из всех, а глюченый он потому что вальва его отрезала от BSP и с этого всё и началось.
Дядя Миша вне форума Ответить с цитированием
Старый вчера, 16:32  #545
ncuxonaT
ncuxonaT
Старший прапорщик
Регистрация: 05.05.2013
Сообщения: 694


По умолчанию

То есть выбирается какой-то треугольник и вообще вся геометрия режется плоскостью этого треугольника? При этом в несколько раз вырастает общее количество вершин и треугольников?
А я-то думал, откуда эти странные разрезы.
Неудивительно, что появляются дыры и криво накладываются текстуры. И швы на лайтмапе.
[ Миниатюры ]
me_test1_lb3000_brush_0008.jpg Просмотров: 22 Размер:  263.2 Кбайт  
ncuxonaT вне форума Ответить с цитированием
Старый вчера, 16:38  #546
nemyax
nemyax
Сержант
Регистрация: 30.07.2015
Сообщения: 239


По умолчанию

[ Цитата ] Сообщение от ncuxonaT: и вообще вся геометрия режется плоскостью этого треугольника?
Не вся, а та, что оказалась с одной из сторон режущей плоскости уровнем выше в дереве.
nemyax вне форума Ответить с цитированием
Старый вчера, 16:51  #547
Дядя Миша
Дядя Миша
Регистрация: 28.03.2010
Адрес: Кубань
Сообщения: 12,099


По умолчанию

Ладно, еще раз по полкам. Это не единственный способ, но один из самых оптимальных. В карте - плоскости. Шесть плоскостей образует браш. Каждая плоскость каждого браша обрезается всеми остальными плоскостями. В итоге получаются реальные вертексы (для примера рассматриваем кубег). Эти брашы подаются на вход CSG. CSG дополнительно вычитает из каждого браша каждый.
Легко заметить что при таком подходе можно получить каждый раз разные результаты, поскольку любое вычитание (неважно чем мы оперируем брашами или числами), критично к положению мест вычитаемых. Поэтому для CSG действует два простых правила - сортировка по контентсам (солиды жрут воду, но вода не может жрать солид) и приоритеты в порядке возрастания номера браша. Т.е. младший в списке номер всегда вычитается из старшего, хотя и не факт, что это всегда правильно. Ну это лирическое отступление по вышеописанной проблеме. Пойдем дальше, когда CSG завершил свою работу у нас больше нет брашей, всё. Только сурфейсы. Точнее браши-то никуда не делись конечно, но уже нет никакого смысла знать какие сурфейсы какому брашу принадлежали (для ку2 ситуация иная, там дерево режет не сурфейсы, а именно браши, но об этом как-нить в другой раз), эти сурфейсы вместе со всеми вертексами натурально дампятся в текстовые файлики, откуда их потом читает BSP. Ну видели наверное файлы mapname.p0, mapname.p1 и так далее. Вот там фейсы всех моделей для каждого хулла свой файлик. При загрузке в BSP они группируются по плоскости. Т.е. все фейсы, имеющие одну плоскость собираются в цепочку. Для ускорения работы. Ну а дальше мы выбираем секущую плоскость из уже имеющихся. BSP не порождает новых плоскостей (технически ему никто не мешает конечно). В определённых случаях, порождается аксиальная плоскость точно посередине карты, это как правило делается на начальных этапах построения, когда на вход подаются все полигоны карты. И здесь BSP ведёт себя именно так как написано в учебниках - разрубает карту пополам. Это необязательно делать, но так зачастую балансировка лучше получается (хотя и глубина рекурсии тоже возрастает, каждый такой разруб даёт явный +1 к глубине и потенциально еще пару неявных). Но зато у нас не получается уродства когда у корневой ноды второй узел ведёт на аутсайдлиф.
Вообщем после такого аксиального разруба уже в дело вступают наши цепочки фейсов с прилинкованными плоскостями. Мы перебираем их все (те, которые остались во второй половине карты после разруба) и выбираем ту плоскость, которая даёт минимальное кол-во новых разбиений, это аналитический процесс.
Не факт что это произойдет именно с аксиальной плоскостью, кстати. Но это напрямую зависит от того как поработал CSG. Но CSG (само вычитание), не порождает новых плоскостей. Только создание самих брашей.
Дядя Миша вне форума Ответить с цитированием
Старый вчера, 17:27  #549
Дядя Миша
Дядя Миша
Регистрация: 28.03.2010
Адрес: Кубань
Сообщения: 12,099


По умолчанию

[ Цитата ] Третья часто встречающаяся ошибка — «leaf saw into leaf». Появляется эта ошибка, когда объект как бы смотрит внутрь себя
Ага, если бы только из-за этого...
Дядя Миша вне форума Ответить с цитированием
Старый вчера, 17:59  #551
qpAHToMAS
qpAHToMAS
z3r0t0l3r4nc3
Регистрация: 22.10.2006
Адрес: Russian Far East
Возраст: 26
Сообщения: 8,824


По умолчанию

[ Цитата ] Сообщение от Big Boss: Дядя Миша, если движке Xash3D или будущих компиляторах такая фича?

А в чем прикол и почему так медленно?
qpAHToMAS вне форума Ответить с цитированием
Старый вчера, 18:52  #553
Дядя Миша
Дядя Миша
Регистрация: 28.03.2010
Адрес: Кубань
Сообщения: 12,099


По умолчанию

Дядя Миша вне форума Ответить с цитированием
Ответ

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход



Часовой пояс GMT +3, время: 03:55.


Designed by FT-502, TRUP@C. Originally by Ulric Spaak
Hosted by: VBIOS.COM, Powered by: vBulletin
copyright © 2002 - 2017 by CS-Mapping.com.ua Community