Collision Boxes.

Icosider

Kotliner
Администратор
3,649
100
718
Ну собсна недавно запили себе обоже(obj) модельки и понял, что коробки столкновения в майне полнейшее деремо. Как вы думаете, стоит ли пилить свою систему столкновений или же заюзать фейковые блоки, которые будут гинерится по размерам модели?

Для каких моделей мне это нужно? Да всё просто: машины, самолёты, вертолёты и т.п.
 
Делай в две фазы проверку столкновений. Первая - широкая, будет использовать апроксимированную коробку. Их можно хранить в деревне(дабы быстрее проверять, не каждый с каждым же проверять, это O(n²)). В узкой проверяй по выпуклой оболочке. SAT/GJK. Дальше ищи точки контакта через EPA или еще что-нибудь. В конце концов собирай точки, расталкивай их по физическим законам.
===
Или не стоит?
 
CoomingSoon написал(а):
Делай в две фазы проверку столкновений. Первая - широкая, будет использовать апроксимированную коробку. Их можно хранить в деревне(дабы быстрее проверять, не каждый с каждым же проверять, это O(n²)). В узкой проверяй по выпуклой оболочке. SAT/GJK. Дальше ищи точки контакта через EPA или еще что-нибудь. В конце концов собирай точки, расталкивай их по физическим законам.
===
Или не стоит?
Тут больше вопрос в том, что стоит ли изобретать велосипед или же есть какая то альтернатива. А так спасибо за совет, сейчас как раз преступил к написанию.
 
Всё зависит от использования этих obj моделей и наверное от их количества.
Я сам хочу попробовать сделать свою систему, пока-что у меня в идеях использовать его только для декоративных моделей.
Если не получиться, то использовать фейковые(/фантомные) блоки.
 
timaxa007 написал(а):
Всё зависит от использования этих obj моделей и наверное от их количества.
Я сам хочу попробовать сделать свою систему, пока-что у меня в идеях использовать его только для декоративных моделей.
Если не получиться, то использовать фейковые(/фантомные) блоки.

Я видел такую реализацию(не фейками) в DecoCraft и в McHeli, но в декокрафте там от либы идёт реализация боксов, а в mcheli там как то кривовато это сделано, но проходить через модель нельзя(если не сидишь в ней конечно же).


Решил отказаться от фейковых, так как уж больно зашкварно выглядело.
 
Сделать скелет по модели несложно -- читаешь OBJ, создаёшь список полигонов(polygon mesh, треугольники). А потом проверяешь уже на пересечение. Я уверен, что есть более быстрый алгоритм, чем GJK, поскольку он для выпуклых оболочек(любых! Можно даже сферу! С некоторыми аппроксимациями, конечно же). Думаю, в интернете сто процентов есть какой-нибудь research paper из Австралийского/Американского колледжа/университета, где говорится об этом.
Тема интересная, меня хватило на месяц-два изучения её. Для реализации я просто выгорел.
===
Выталкивать можешь, прибавляя motion в опредленном направлении. Только, вытолкнув, нужно снять этот motion. Т.е. выходит, что тела как бы проникают друг в друга, но затем расталкиваются.
 
Очевидно же, не? Он пишет мод для проекта, который ему платит. Тебе бы было приятно если бы ты купил мод, а его сразу же слили в паблик и любой юзверь мог его поставить себе на сервер?
 
Есть bullet engine. Там должен быть движок с коллизиями. Смотреть туда, если нужно. Я лично код вообще не разбираю в JBullet
 
В JBullet довольно приятно написанный код, за исключением автогенерации 
D83DDE11.png
 
CoomingSoon написал(а):
Есть bullet engine. Там должен быть движок с коллизиями. Смотреть туда, если нужно. Я лично код вообще не разбираю в JBullet

Уже не один раз посматривал на него) Надо будет глянуть реализацию.
 
Я jbullet не осилил, хотя пытался. Ну или хреново искал по нему информацию. А вообще, имело бы смысл развивать моддинг комьюнити сильнее, даже пусть и такими вещами, вроде коллизии и прочих вещей, которые основоположны в игре, т.к. некоторые (петушки из вне этого форума), свято верят в бедрок эдишн кубов, мол жаба эдишон умрет. Мое мнение таково, вот.
 
За такие вещи платят. А поскольку наш мир не утопия, то мы должны зарабатывать деньги. Так что напрашивается вывод, что либо денюжка, либо человек окажется добрым настолько, чтобы залить это на гитхаб. Разработчики dyn4j, Bullet, nphysics оказались такими добряками.
 
Кстати, вот вам ещё один вопрос на засыпку. Стоит ли писать свой загрузчик obj моделей, если есть тот же IModelCustom(Forge)? Задачи такие: сделать перезарядку для оружия, изменение положения колёс и т.д. С помощью Forge метода загрузки Obj моделей, можно сделать кучу моделей в которых будут хранится: основная модель, модель патрона, колёс и т.д. А через свою реализацию я планирую не делать кучу моделей, а использовать одну и изменять положения конкретных мешей.
 
Можешь модифицировать формат модели, можешь свой написать. Поверь, это не так сложно, написать загрузчик модели
 
Назад
Сверху