×
Menu

Collision detection some words around

 
Примечание.
В общих спецификациях рендеренга отмечается, что прокси геометрия может влиять на зоны отсечения объекта.
Т.е. когда оный перестает выводиться на экран с учетом поля зрения камеры.
Тесты не показали наличия такой связи в МВ.
Т.е. если создать зону прокси геометрии, на рендеринг объекта это никак не повлияет.
За это отвечает параметр radius в настройках шейпдаты
 
Общие примечания про работу ББ в качестве прокси геометрии для детектирования коллизий.
Bounding Box (BB) по мимо названия системного объекта, еще и proxy геометрия для упрощения просчета столкновений.
Proxy т.е. вместо просчета по множеству треугольников используется некоторый примитив.
В данном случае это коробка (бокс).
Существуют и другие объекты, сфера, плоскость и еще несколько, но они не используются. ^-^
В основном, по причине, неправильного декодирования этих понятий в Нифскопе.
А также, по причине более старого движка и невозможности получать эти типы (прокси геометрии) штатными средствами экспортеров.
 
Greatness7 писал:
I checked in game with "SSG" command
0=Sphere, 1=Box
in the docs there are others
 
             BASE_BV      : -1,
            SPHERE_BV    :  0,
            BOX_BV       :  1,
            CAPSULE_BV   :  2,
            LOZENGE_BV   :  3,
            UNION_BV     :  4,
            HALFSPACE_BV :  5,
            MAXTYPE_BV   :  6
По движку игры видны только следующие методы:
SPHERE_BV
BOX_BV
LOZENGE_BV
HALFSPACE_BV
UNION_BV
Т.е. в МВ нет режима CAPSULE и  MAXTYPE.
 
Дальнейшие наблюдения показали:
- в ниф.хмл 1.1.3 версии этот раздел не декодирован правильным образом.
- в ниф.хмл 2.0.8 версии, раздел декодирован более верно, но все равно содержит серьезные ошибки.
- отчего полноценно использовать прочие методы (кроме бокса) (было) проблематично.
- для моделей МВ в принципе, использование чего-то отличного от БОХа, мало актуально.
Отчего, можно и дальше использовать оригинальную версию ниф.хмл 1.1.3.
 
Т.е. документация к движку сообщает о нескольких типах методов работы АБ (Alternate Bounding Volumes).
Которые и можно увидеть по ССГ
Однако, на практике нормально может работать только один метод (бокс).
Все прочее не показывает какой-то заметной пользы.
А если не обновить ниф.хмл файл, то будет приводить к ошибкам и вылетам!
 
Первый это конечно же - БОКС. Флаг 1.
Второй это сфера. Флаг 0. Да, сфера идет на нулевом флаге и раньше БОКСа.
Если установить этот флаг, то ББ не превратиться в сферу, но так и останется кубом, с равными сторонами.
Впрочем, сферу все-таки можно увидеть, см. здесь.
 
Собственно вот здесь мы и приплываем к неточности декодирования настроек ББ в нифскопе 1.1.3 версии.
Смена метода, должна приводить к изменению некоторых значений после флага.
Например, точно можно говорить, что UNION_BV должен включать ссылку на объекты!
Это хорошо видно по SSG на примере игрока.
 
После некоторых шаманств с ниф.хмл файлом, можно получить более работоспособные результаты.
Т.е. получить правильные настройки по типу прокси геометрии коллизий!
И даже увидеть (некоторые из них) в редакторе по нажатии F4.
 
Сферический тип прокси геометрии.
См. здесь. как это увидеть.
по SSG
 
Если применить для БоундБокса, будет, выглядеть все одно как обычный куб.
Т.е. линии выделения накладываются по крайним точкам образую типовую коробку.
Либо вовсе игнорируют этот режим!
Т.к. изменение точки опоры и радиуса сферы ни к чему не приводило.
Область выделения вокруг объекта никак не менялась.
 
В настройках имеется только радиус и точка опоры оного, ака центр.
 
За метод просчетов TRI or OBBS, отвечает флаг ноды.
Кубический тип прокси геометрии.
 
 
Обычный куб.
Используется во всех моделях, где используется.
Позволяет управлять габаритами коробки выделения.
Либо служит магнитом для МобБоунд ноды.
Все параметры работают и отображаются корректно.
 
Настройки в ниф файле, позволяют изменить длину каждой стороны и позицию в сцене.
Но по SSG, габариты, не отображаются.
Только тип ABV.
Ромб (Lozenge)
 
 
Не отображается ни в каком виде!
Здесь объект выделен, но так и не получил линий вокруг.
Может быть добавлен в ниф файлы после правки ниф.хмл файла.
Но никак не отображается в окне рендеринга.
Ни по Ф4, ни для ББ!
Т.е. если установить Lozenge_BV для объекта названного Bounding Box, в сцене будет пусто. Т.е. линии выделения не появляются.
НО!
Объект можно нормально выделять и двигать мышью.
 
Верно и для СкенеВиювера.
Этот тип прокси геометрии, не подсвечивается.
Требуются правки кода.
 
По SSG, габариты, не отображаются.
Только тип ABV.
Совмещенный тип (Union_BV)
 
 
Ничего не отображается в обычных моделях "неживых" объектов.
 
Игрок:
Используется движком игры для существ и НПС.
 
Такой режим можно получить и для прочих моделей, но вложения, не указываются по графику сцены.
Т.е. показан режим правильно (Union_BV) но вложенные типы - не указываются.
 
При включении TCB, или выделении обычных, "неживых", объектов, рисуется обычное кубическое выделение.
Либо вовсе ничего не рисуется!
SSG корректно показывает смену типа записи, но в окне рендеринга пусто.
Никаких линий выделения для Боундинг Бокса, ни для Моб Боунд ноды.
 
При этом, автоматически созданный Union_BV  (для игрока и существ) отображается нормально.
И равно, указываются типы вложенных объектов прокси геометрии по SSG.
 
Полуобъем (HalfSpace_BV) либо разделитель.
 
 
Не отображается, или приводит к вылетам!
Если выбран в качестве режима прокси геометрии, для Боундинг Бокс объекта - приводит редактор к вылету сразу при попытке поместить объект в сцену!
Если был активирован в пустой ноде - то вылет, при нажатии F4.
 
Т.е. движок не может корректно отобразить этот объект.
 
Было упоминание, что возможно, движок, пытается рисовать безконечную плоскость.
Что и приводит к вылету.
Либо, в Нетиммерсе движке времен МВ, так и должно быть.
И этот тип прокси геометрии использовался для создания плоскости земли.
Либо что-то другое.
 
СкенеВиювер - также вылетает при попытке отобразить этот тип прокси геометрии.
 
Взято с одного форума.
Q:
What is a halfspace?
Sorry, I mean: what is the difference between a halfspace and a plane?
…Oh, is it like a "line in the sand" where other objects are only allowed to be on one side of it?
 
A:
It's for dividing the scene in two.
The plane is the separator and the normal points into the half space. Collision routines are provided to tell if a given object is inside or outside of the half space.
not very useful for us anyways because MW never uses it. but potentially useful for some lua mods doing math stuff
 
Greatness7 писал:
there are several bounding volume types but we don't have any way to make use of them
i think only box bv works for creatures
the others are visible with tcb, but i dont think there's any part of the physics system that uses htem
at least i nvr found any way to use them
they could still be useful for lua script logic tho