Войти
ПрограммированиеФорумФизика

Коллизии с heightmap'ом (2 стр)

Страницы: 1 2
#15
19:59, 3 авг 2022

MaRC
> Да вроде же проще по итогу - ищем индексы ячейки, которую занимает bbox.min -
> например это (2,3)
> а потом ищем, ячейку, которую занимает bbox.max - например (4,7)
> и в итоге бокс занимает ячейки по X от 2 до 4, а по Y от 3 до 7.
Так а выше мой код по твоему что делает?

> Теперь с OBB на нужный путь направьте.
Непонятно насколько точный результат нужен, и что ты вообще пытаешься сделать со всем этим. Если просто найти факт коллизий - то я бы просто по OBB построил бы AABB, и проверял с ячейками от AABB.

#16
20:08, 3 авг 2022

MrShoor
> Так а выше мой код по твоему что делает?
Да, я уже исправил исходное сообщение - твой код делает тоже самое.

MrShoor
> Непонятно насколько точный результат нужен результат
Хочу найти коллизию с террайном, проверив при этом как можно меньше треугольников  - в случае столба разница в количестве треугольников попавших в AABB и OBB может быть значительной. А у меня еще и Javascript, там каждый треугольник на счету.

#17
23:10, 3 авг 2022

MaRC
Забивай треугольниками 3д-дерево и округляй 3 координаты. Или посмотри, как сделано в исходниках тогоже буллета. В дереве тебе нужны только индексы вершин и ссылка на кеш, а не сами треугольники.

#18
(Правка: 23:16) 23:13, 3 авг 2022

MaRC
> А у меня еще и Javascript, там каждый треугольник на счету.
Просто перебрать все ячейки в AABB области с проверкой может быть быстрее, чем выбрать только те ячейки, которые накрывает проекция OBB. Если OBB всё же сильно отличается от AABB, например тонкий длинный диагональный OBB, то такой OBB можно напилить на пачку более квадратных OBB, а от них уже построить пачку AABB, и проверить с этой пачкой.

#19
7:53, 4 авг 2022

Я бы постарался отказаться и от OBB и от слишком длинных объектов. С ОBB всегда слишком много вычислений, и длинные объекты любая физика не любит.
И размер ячеек террайна надо стараться делать как можно больше.

Страницы: 1 2
ПрограммированиеФорумФизика