ПрограммированиеФорумГрафика

Как вписать AABB в Frustum

#0
12:33, 4 мар 2010

Есть камера, у нее фиксированный вектор взгляда направленный в начало координат так, что 0,0,0 всегда в центре экрана.
Управлять можно только расстоянием на котором находится камера от начала координат.
Есть некий объект описанный через AABB.
Нужно расположить объект и установить расстояние у камеры так, чтобы
1) Объект был полностью виден в камере(полностью попадал в Frustum)
2) Объект занимал максимально возможную площадь на экране(минимум пустого пространства оставалось)

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

#1
13:02, 4 мар 2010

Попробуй использовать ограниченные объемы, причем не один, а группу, например группу параллелепипедов, которые более точно будут охватыать модель, а так как фигуры простые, то можно будет попробывать их располагать, а это уже проще.
А потом попробывать использовать матрицу проекций, параллелепипеды легко проецировать и найти нужное расположение.

#2
13:58, 4 мар 2010

Можно вспомнить курс школьной тригонометрии. Один катет треугольника - расстояние до объекта, другой катет - половина радиуса объекта. Отношение противолежащего катета к прилежащему это тангенс половины угла обзора fov. Естественно надо учесть соотношение сторон вьюпорта.

#3
14:22, 4 мар 2010

@!!ex
> 1) Объект был полностью виден в камере(полностью попадал в Frustum)
Получи 8 точек бокса и проверь входят ли они во фрустум
> 2) Объект занимал максимально возможную площадь на экране(минимум пустого
> пространства оставалось)
Получи самые левые самые верхние/нижние и правые координаты точек( относительно взгляда из камеры) и от центрируй плоскости фрустума по ним

>Это нужно, чтобы сделать превьюшки моделек. Камера выставляется автоматически, делается шот, загружается следующая модель.
Я для такого случая вообще Сферу использую а не AABB.
Тут все равно какая-нибудь грань будет больше, а размер превьюшки задан конкретно( к примеру в пропорции 4:3 ), так что с одной из сторон полюбому будет пустое место( за исключением боксов и сферообразных объектов).
Да и скорость обработки выше.

#4
18:44, 4 мар 2010

Можно просто изменить масштабирование модели.  Хотя....  хоть просто изменяй масштаб, хоть вычисляй по
фруструму:  Если например моделька вытянутая и её сфотографировать с того боку, с которого она имеет меньший размер,  то фотоснимок не будет точно показывать модель.

    Лучше с баундсферой.

ПрограммированиеФорумГрафика

Тема в архиве.