Пересечение плоскостей усеченной пирамиды камеры Libgdx с землейJAVA

Программисты JAVA общаются здесь
Anonymous
Пересечение плоскостей усеченной пирамиды камеры Libgdx с землей

Сообщение Anonymous »

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

Это то, что я наконец ожидаю.

Изображение

Красные линии — это усеченная пирамида камеры.

Синие линии соединяют точки пересечения. (они не визуализированы, я просто нарисовал их вручную).

Зеленым цветом обозначена сетка на земле Plane(Vector3(0f, 1f, 0f), Vector3.Zero)
Я использую следующий код, чтобы получить точку перехвата (например, лево/верх/земля и право/верх/земля).

Код: Выделить всё

val p1 = Vector3().apply {
Intersector.intersectPlanes(
ground,
camera.frustum.planes[2],
camera.frustum.planes[4],
this
)
}
val p2 = Vector3().apply {
Intersector.intersectPlanes(
ground,
camera.frustum.planes[3],
camera.frustum.planes[4],
this
)
}
Но p1 и p2 кажутся неправильными.

Код: Выделить всё

p1 = (-8.2670743E-7, -0.0, 2.1598353E-7)

Код: Выделить всё

p2 = (-2.382607E-7, 0.0, 2.1598355E-7)
Обе точки слишком близки к исходной точке, но на самом деле они должны быть достаточно далеко.
Как с этим справиться? Пытался использовать camera.unproject() для точек, но получил что-то странное.

Подробнее здесь: https://stackoverflow.com/questions/786 ... ith-ground

Вернуться в «JAVA»