Флейм
GameDev.ru / Флейм / Форум / 3д столкновения с боксом , но бокс повернут.

3д столкновения с боксом , но бокс повернут.

Страницы: 1 2 Следующая »
ronnikoЗабаненwww11 окт. 201815:09#0
Как определить что точка в 3д боксе если бокс такой , проблем нет.
Изображение

Но вот если его повернуть , то как определить на CPU что точка попала в какую то часть бокса ?
Изображение
У меня тут непонимание.

DimichПостоялецwww11 окт. 201815:28#1
Повернуть точку в пространство бокса, потом как с aabb.
AslanПостоялецwww11 окт. 201815:55#2
Повернуть точку вокруг центра бокса

Правка: 11 окт. 2018 15:57

ronnikoЗабаненwww11 окт. 201816:31#3
Точку повернуть.
А как быть с верхней и нижней координатой бокса ?
Когда бокс не повернут, то его точка B1 = 10,10 и B2 = 5,0
И легко проверить если точка P находится между 10 и 5 по Х и 10 и 0 по Y
Вот когда повернут бокс то B1 и B2 будут другими и как тут ?
При повороте B1 и B2 изменят свою длину по  X и Y.

Не могу уловить всего смысла в повороте точки.
Чего то мне не хватает что бы картина стала видна целиком.
Потому не совсем понимаю зачем точку повернуть , а точнее как после поворота это мне поможет при сравнении находится ли точка в боксе.

Правка: 11 окт. 2018 16:39

lookidПостоялецwww11 окт. 201816:46#4
Примени к точке трансформ бокса. Потом как AABB
ronnikoЗабаненwww11 окт. 201816:52#5
А не легче ли повернуть сам бокс так что бы он стал прямым.
Что бы легко находить что точка находится в боксе.

К примеру точка это игрок, а бокс это здание.
И здание повернуто.
Значит и BoundBox здания повернут.

И игрок подошел к какому то углу здания.
И надо что бы игрок не прошел этот угол насквозь.


Я видел пример где баунд бокс вращали и он как бы оставался прямым , но тогда большие погрешности.
Как тут на картинке повернули баунд и он увеличил свою площадь как бы получили новый баунд.
Изображение

Правка: 11 окт. 2018 17:00

ArochПостоялецwww11 окт. 201818:33#6
ronniko
бери готовый физ. движок если не можешь понять что тут тебе советуют.
ronnikoЗабаненwww11 окт. 201819:18#7

Aroch
нет мне надо понять смысл и я сам напишу.
IvashkaПостоялецwww11 окт. 201819:34#8
А можно попробовать включить в расчёт нормали, типо считать угол между нормалью стенки бокса и вектором от центра бокса до точки огрока, если угол у каждой из сторон больше 90 градусов то  точка внутри если хоть один меньше то снаружи.
ronnikoЗабаненwww11 окт. 201820:11#9
Ivashka твое решение напоминает столкновение Sphere and Plane
ArochПостоялецwww11 окт. 201822:31#10
ronniko
> нет мне надо понять смысл
смысл в том что бокс это только его размеры + позиция и ориентация.
> Повернуть точку в пространство бокса, потом как с aabb.
подразумевается что нужно преобразовать точку так чтобы относительное ее положение относительно бокса не изменилось, но сам бокс был словно к нему применена единичная матрица, то есть позиция равна 0, и угол вращения тоже равен 0. В таком случае стороны бокса будут параллельны осям координат, что есть aabb (axis aligned bounding box) (твой первый рисунок).
FordPerfectПостоялецwww11 окт. 201823:17#11
Aroch
По-моему "перевести точку в локальную систему координат бруска (object space)" - более внятная формулировка.
emptiness_rainУчастникwww11 окт. 201823:36#12
ronniko
Возьми листок, нарисуй повернутый бокс. потом нарисуй точку рядом.
Потом вокруг центра бокса поверни листок так, чтоб бокс стал не повернутый( аабб ), все станет ясно.

Правка: 11 окт. 2018 23:37

*Lain*Забаненwww12 окт. 20180:03#13
ronniko
Можешь написать уравнения прямых бокса и дальше уже проверять лежит ли в боксе точка
ronnikoЗабаненwww12 окт. 20187:30#14
Aroch значит точки бокса min i max я не вращаю.
А вращаю точку, что бы её перевести в пространство бокса и сравниваю точку с min i max бокса.


Потому что я раньше думал что надо min i max бокса тоже вращать. Вот это как раз меня и приводило в тупик.

Правка: 12 окт. 2018 7:31

Страницы: 1 2 Следующая »

/ Форум / Флейм / Программирование

2001—2018 © GameDev.ru — Разработка игр