Новости/News | | Туториалы/Tutorials | | Форум/Forum | | ЧаВо/FAQ | | Файлы/Downloads | | Ссылки/Links | | Авторы/About |

CSG & BSP. Концепция создания нереального мира и типы брашей

CSG & BSP

Взгляните на окружающий нас мир, согласно представлениям множества религий, Бог сотворил его. Затем он добавил эту вселенную, землю, небо и все остальное, что нас окружает, и о чем мы даже и не подозреваем.

Редактор для создания карт - UnrealEd представляет собой инструмент для подобного строительства абстрактного мира. Создавая свой, виртуальный мир картостроитель идет по стопам создателя, сперва расчищая пространство для жизнедеятельности его созданий, а затем, уже, добавляя, необходимые ему элементы антуража, будь то материя или скрытые механизмы бытия.

Рассмотрим аспекты создания (строения) нашего абстрагированного мира. Создатели Unreal engine предусмотрели свою концепцию построения мира - Constructive Solid Geometry (CSG), которая представляет собой последовательность вырезаний или надстраиваний геометрии карты. Загрузите свой редактор, все, что Вы видите перед глазами - это сплошное (solid) пространство твердого мира и единственным логическим действием будет вытиснение пространства для обеспечения "жизнедеятельности игрока" и последующего наполнения окружением игрока. Эта процедура выполняется созданием вырезающих/вычитающих брашей (Subtractive Brush ), в редакторе эти браши отображаются желтым цветом. В полученное пространство Вы можете добавлять всевозможные надстройки, элементы декора и т.п. это выполняется вторым типом брашей - добавляющим брашем (Additive Brush ), он может быть трех типов, которые рассмотрим ниже, по умолчанию это синий браш.

Эти два типа CSG операций (вырезания/добавления) могут создавать достаточно сложную последовательность, смешиваясь и чередуясь. К примеру, вначале Вы можете вырезать пространство комнаты, затем добавить стену, разделяющую пространство на две части и, наконец, в этой перегородке вырезать дверной проем. В редакторе это будет выглядеть как три браша, вложенных друг в друга - 2 желтых и 1 синий:

Последовательность построения геометрии задавалась Вами в процессе создания карты, т.е. вытеснение, затем добавление, затем снова вытеснение. Если нарушить эту последовательность, то результат может стать совершенно иным, к примеру, сперва добавим перегородку, затем вырежем окно, а затем вырежем все пространство комнаты в результате мы получим всего одну комнату без перегородки, хотя в редакторе нам будет видно все три браша. Нарушить последовательность совершения CSG операций можно командами Order->ToFirst (порядок выполнения->первым) и Order->ToLast (порядок выполнения->последним) отдаваемые в контекстном меню, вызванном путем клика правой кнопкой мыши по нужному брашу (группе брашей).

Рассмотрим теперь другое понятие - Binary Space Partitioning (BSP) tree - это древовидная структура данных для сортировки и поиска вершин многоугольников в многомерном пространстве (в данном случае трехмерном). Это стандартное двоичное дерево (binary tree) используется для прорисовки 3D сцен, в которых позиции объектов жестко фиксированы и меняется только точка обзора пространства, типичным примером является симулятор полета. Как Вы уже поняли, в U-движке BSP используется в качестве способа представления жесткой геометрии (CSG), естественно на муверы (Mover) и меши (Mesh) это не распространяется. От сложности структуры BSP tree естественно зависит скорость вывода геометрии на экран.

Итак, мы подошли к тому месту, когда наши браши накиданы в пространстве карты, и мы компилируем ее, нажав на F8 - Rebuild (или Build All в UEd2.0). После расчета геометрии выполняется расчет BSP, здесь можно несколько подстроить параметры оптимизации дерева, но лучше воспользоваться стандартными установками, а в качестве оптимизации лучше с большим вниманием отнестись к изначальной геометрии карты, т.е. к нашим брашам. Ведь именно расположение, формы, типы брашей и являются предпосылками для аккуратных BSP вырезов - сечений (BSP cuts) которыми будет испещрена Ваша карта после компиляции. Эти сечения Вы можете увидеть в соответствующем режиме камеры - BSP cuts. Возьмем предыдущий пример, в режиме BSP cuts практически нет перепадов в яркости цвета, что указывает на несложную BSP картину, но здесь также присутствуют дополнительные сечения, в чем мы можем убедиться, обжав карту единым рабочим брашем. Для того, что бы обжать карту, необходимо поместить всю комнату в строительный браш больший по размерам и выполнить команду deintersect.

Как Вы видите, на карте появились дополнительные вершины (nodes) не принадлежащие вершинам брашей - дополнительные узлы BSP дерева. Как известно, количество этих вершин и есть самый большой враг производительности FPS. Узнать количество нодесов в игре Вы можете, набрав в консоли STAT FPS, количество больше 200 начнет ощутимо притормаживать на слабеньких машинах, стандарт сейчас 200-350, естественно с увеличением мощностей, наблюдается тенденция к их увеличению. Внесение новых технологий аппаратного T&L в U движок позволяет на порядок перескочить через этот рубеж, но нам пока этот билд движка недоступен 8(

Типы добавляющих (Additive) брашей

Добавляющие браши имеют такое свойство, как твердость, оно означает, как взаимодействует с ними игрок и какими свойствами они обладает в рамках движка и при расчете BSP дерева. Добавляющие браши могут быть 3-х типов: твердый (solid), нетвердый (non-solid) и полутвердый (semi-solid).

Твердый браш (синего цвета) является твердым для игрока и актеров, как это странно не звучит ;) Он также создает BSP вырезы и при необходимости дополнительные сечения. Добавляет твердое (solid) пространство на предварительно вырезанном пространстве и является простой ADD командой CSG. Используется повсеместно.

Нетвердый браш (non-solid зеленого цвета) НЕ является твердым и не составляет из себя препятствие для игрока, Он просто пустой внутри и НЕ создает BSP вырезы и дополнительные сечения. Применяется исключительно для декораций, к примеру, огня, стекол или поверхности воды. В связи с его свойством не создавать препятствий для игрока и актеров, его применяют в качестве перегородок разных зон (Zone Portal).

Полутвердый браш (semi-solid коричневого цвета) является чем-то средним между твердым и нетвердым брашем. Он блокирует игрока и актеры, но в тоже время НЕ создает BSP вырезов и дополнительных сечений, также он НЕ может являться границей разных зон (Zone Portal). Применяется для декораций требующих жесткости, к примеру, колонн, карнизов, труб, нагромождения скал и т.п. За счет отсутствия BSP вырезов он благоприятно сказывается на чистоте BSP картины, не создавая дополнительных нодесов.

Если браш представляет из себя плоский лист (sheet), несмотря на цветовую принадлежность к твердым или полутвердым брашам, он автоматически будет иметь свойства нетвердого (non-solid) браша и не сможет блокировать игрока и акторов, т.к. внутри него движок не сможет добавить твердое пространство за неимением такового. Это один из первых казусов встречающий новичков в редакторе, в последствии, все кажется вполне естественным и вполне укладывается в концепцию движка, а впрочем, и миропредставления как такового тоже, ведь лист бумаги для жесткости тоже должен имеет определенную толщину.

Грамотное использование типов брашей существенно разгружает BSP картину и позволяет избавиться от многих ошибок в обработке геометрии. При должном соблюдении гигиены браше-строительства, черные порталы, HOM'ы будут Вас беспокоить гораздо реже, что Вам и пожелаем!

Автор

tAtUm

Хостинг от uCoz