forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Blitz3D (http://forum.boolean.name/forumdisplay.php?f=45)
-   -   Мягкие тела в Bullet'e (http://forum.boolean.name/showthread.php?t=15549)

teuzet 27.09.2011 00:42

Мягкие тела в Bullet'e
 
Здравствуйте снова.
Столкнулся с проблемой - необходимо ловить столкновение твердого тела с мягким. В хелпе баллета для этого приведена функция:


int btSoftBodyCheckContactAABB (int softbody, int body, float shiftAABВ)

Параметры:
softbody - мягкое тело.
body - физическое тело.
shiftAABB - значение увеличения ограничивающего контейнера.
Описание:
Проверяет тело на пересечение контейнера. Возвращает 1 если пересечение найдено, в противном случае 0.

Меня смутил последний параметр. Что нужно в нем указывать?

HolyDel 27.09.2011 00:55

Ответ: Мягкие тела в Bullet'e
 
судя по названию смещение axis aligned bounding box. судя по типу параметра - равномерное увеличение AABB на заданное значение. чем больше - тем больше вероятность, что пересечение сработает. но могут быть лжесрабатывания.

NitE 27.09.2011 01:00

Ответ: Мягкие тела в Bullet'e
 
Буллет произносится как буллет.

teuzet 27.09.2011 10:50

Ответ: Мягкие тела в Bullet'e
 
Спасибо. Попытался реализовать - наткнулся на то, что буллет (пусть будет буллет, вам лучше знать=) очень странно обрабатывает столкновения мягких тел и твердых. Оставил проблему на потом.

Coks 27.09.2011 12:50

Ответ: Мягкие тела в Bullet'e
 
teuzet, возможно, ты толком не понимаешь что такое AABB. Поставь в режиме дебагдравера значение 2 ( DBG_AABB ). Это и есть контейнеры по которым производится обнаружение контактов с помощью данной функции: проверяется положение всех нодов(вершин) мягкого тела на нахождение в контейнере тела переданного во втором параметре.

Для точного определения коллизий есть функции:
Код:

btSoftBodyGetNumRContacts%(softBody%)
btSoftBodyRContactGetBody%(softBody%, contact%)
btSoftBodyRContactGetNode%(softBody%, contact%)

но пока их не советую использовать так как работает только при дефолтовом флаге коллизии (btSoftBodySetFlagCollisions(softbody, 1)) и вообще его лучше не использовать, имеет место утечка памяти при контакте.

p.s. складывается такое впечатление что симуляция мягких тел еще не вышла за рамки экспериментальных.

moka 27.09.2011 14:29

Ответ: Мягкие тела в Bullet'e
 
Цитата:

Сообщение от NitE (Сообщение 203505)
Буллет произносится как буллет.

Тогда уже "булэт".

teuzet 28.09.2011 01:51

Ответ: Мягкие тела в Bullet'e
 
Coks, спасибо большое. Наглядно и просто все оказалось=) Теперь можно снова засесть за проблему. По-видимому, придется слегка извратиться...


Часовой пояс GMT +4, время: 19:13.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot