×
Меню
Индекс

Collision detection about PROXY object

 
Второй объект.
Это Bounding Box (ББ).
 
ББ является так называемым; Alternate Bounding Volumes типом объектов.
Который, как раз и был специально разработан для упрощения просчета столкновений* и не содержит полигонов, как таковых.
Представляя из себя некую математическую (виртуальную) зону используемую только для ускорения вычисления этого типа.
Параметр "Bounding Box"  имеется во всех нодах и шейпах, а также в текстурных эффектах... которые являются подклассом нод.
Поскольку это "зона" - она (оказывается) может иметь относительно произвольную форму.
Коробки, сферы, или плоскостей.
Впрочем, для МВ, нормально работает только "коробка".
*ББ, теоретически должен бы влиять на зону отсечения объекта из зоны видимости камеры, но тесты не показали такой связи.
Объекты убираются из поля зрения, только с учетом радиуса указанного в их шейпдате.
Т.е. включение прокси геометрии в настройках ноды, (могут, должны?) влиять на такие зоны отсечения, но не похоже чтобы они это делали.
 
Помимо параметра в ниф файлах, это еще и системное имя в движке.
Которое используется здесь, в качестве триггера.
Т.е. названный как Bounding Box объект (шейп, нода), получит автоматические оптимизации в редакторе и в сеансе игры.
Объект перестанет отображаться в сцене, но будет, тем или иным образом, участвовать в просчете столкновений и прочего, что с ними связано.
Например, он будет виден на правах "коробки окружения", при выделении объекта в редакторе .
Да-да, тех самых линий которые появляются вокруг любого выделенного объекта.
Т.е. ББ позволяет управлять зоной выделения объектов, смещая, или изменяя ее радиус.
Что бывает весьма полезно при работе со сложными сценами в редакторе.
 
ББ - как правило пустая нода, у которой активно значение "has bounding box" и установлено значение =1 (BOX) + значение объема XYZ.
ББ - может быть и шейпом (произвольной формы), хотя это и не правильно делать, но вполне возможно.
В какой-то мере, это даже упросит получение "объема", который будет рассчитан по крайним точкам такого шейпа.
Сам шейп, будет скрыт игрой и не потребуется указывать значение параметров размера в настройках, собственно раздела настроек ББ.
ББ - используется в качестве детектора столкновений только у "живых" объектов.
Во всех остальных типах - влияет только на размер выделения в редакторе и никак не влияет на помещение объектов в мире.
Т.е. брошенные друг на друга (камни душ) будут размещаться согласно видимых сетчатых оболочек и наличие ББ никак не скажется на их положениях.
 
Для правильной работы ББ в "живых" объектах, он должен иметь, как правильное название "Bounding Box", так и активированный параметр в настройках ноды.
Настройка параметров в разделе "has bounding box" необходима для придания ББ нужного "объема".
Если просто назвать ноду, как ББ, игра, улетит в КТД не поперхнувшись.
Равно - если назвать, включить, но не выставить значения объема.
Для всех прочих типов объектов, ББ может быть с нулевыми значениями.
НО!
Если назвать шейп (желательно в виде куба) как Bounding Box - игра создаст правильный ББ в составе модели.
 
ББ имеет несколько режимов работы, но для МВ, фактически, актуален только один.
Собственно режим БОКС, ака коробка.
Остальные режимы (сфера, ромб, полуобъем) - не работают правильно.
И насколько они востребованы в целом, вопрос открытый, т.е. в силу "древности" движка и неизвестных правок внесенных в него беседкой.
Возможно использование отличных от бокса режимов и было бы полезно, если бы "неживые" объекты принимали ББ вместо, или вместе с РК.
ББ - можно включить в настройках шейпов РК, но тесты не показали сколько-то заметной пользы для фпс.
Т.е. ББ работает в качестве детектора столкновений только у "живых" объектов, который не используют никаких сложных техник просчета пересечений.
Ни между своими сетками, ни между другими объектами.
Это становится актуальным, только при наличии физики и массы объектов, чего в МВ не имеется от слова "почти совсем".
А "неживые" объекты используют РК ноду с просчетом коллизий по треугольникам.
 
Итого:
- ББ в качестве отдельного объекта в ниф файле, необходим только живым существам.
Без наличия оного в файле, включается автосоздание ББ силами движка на основе просчета объема по треугольникам.
Но при этом, похоже, что нарушаются некоторые данные.
Т.е. возникают проблемы с поиском пути, нахождением цели, огромные радиусы активации вокруг, слишком растянутые магические щиты и пр..
 
- ББ, в качестве отдельного объекта, полезно добавлять в "неживые" объектов, чтобы задавать зону выделения в редакторе!
Это просто удобно при работе в редакторе, но ничего больше.
 
- ББ всегда следует добавлять в новые модели магических снарядов!
Здесь он работает в полной мере. Позволяя огромному фаерболу пролететь сквозь маленькое окошко.
Т.е. здесь ББ работает триггером на запуск взрыва.
Если ББ нет, взрыв произойдет едва один из полигонов снаряда коснется поверхности другой модели.
Также это будет работать и для стрел, но здесь это не необходимо.
 
Читать далее по тексту, т.е. продолжение.
См. здесь.
 
О методах собственно детектирования применяемых именно в ББ объекте, см. эту статью.