|
Collision detection some words around
Примечание.
В общих спецификациях рендеренга отмечается, что прокси геометрия может влиять на зоны отсечения объекта.
Тесты не показали наличия такой связи в МВ.
Общие примечания про работу ББ в качестве прокси геометрии для детектирования коллизий.
Bounding Box (BB) по мимо названия системного объекта, еще и proxy геометрия для упрощения просчета столкновений.
Proxy т.е. вместо просчета по множеству треугольников используется некоторый примитив.
В данном случае это коробка (бокс).
Существуют и другие объекты, сфера, плоскость и еще несколько, но они не используются. ^-^
В основном, по причине, неправильного декодирования этих понятий в Нифскопе.
А также, по причине более старого движка и невозможности получать эти типы (прокси геометрии) штатными средствами экспортеров.
Greatness7 писал:
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 на примере игрока.
Это хорошо видно по 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) либо разделитель.
|
|
|
Не отображается, или приводит к вылетам!
|
![]() |
Если выбран в качестве режима прокси геометрии, для Боундинг Бокс объекта - приводит редактор к вылету сразу при попытке поместить объект в сцену!
Т.е. движок не может корректно отобразить этот объект.
Было упоминание, что возможно, движок, пытается рисовать безконечную плоскость.
Что и приводит к вылету.
Либо, в Нетиммерсе движке времен МВ, так и должно быть.
И этот тип прокси геометрии использовался для создания плоскости земли.
Либо что-то другое.
СкенеВиювер - также вылетает при попытке отобразить этот тип прокси геометрии.
|
Взято с одного форума.
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