Есть камера, у нее фиксированный вектор взгляда направленный в начало координат так, что 0,0,0 всегда в центре экрана.
Управлять можно только расстоянием на котором находится камера от начала координат.
Есть некий объект описанный через AABB.
Нужно расположить объект и установить расстояние у камеры так, чтобы
1) Объект был полностью виден в камере(полностью попадал в Frustum)
2) Объект занимал максимально возможную площадь на экране(минимум пустого пространства оставалось)
Это нужно, чтобы сделать превьюшки моделек. Камера выставляется автоматически, делается шот, загружается следующая модель.
Попробуй использовать ограниченные объемы, причем не один, а группу, например группу параллелепипедов, которые более точно будут охватыать модель, а так как фигуры простые, то можно будет попробывать их располагать, а это уже проще.
А потом попробывать использовать матрицу проекций, параллелепипеды легко проецировать и найти нужное расположение.
Можно вспомнить курс школьной тригонометрии. Один катет треугольника - расстояние до объекта, другой катет - половина радиуса объекта. Отношение противолежащего катета к прилежащему это тангенс половины угла обзора fov. Естественно надо учесть соотношение сторон вьюпорта.
@!!ex
> 1) Объект был полностью виден в камере(полностью попадал в Frustum)
Получи 8 точек бокса и проверь входят ли они во фрустум
> 2) Объект занимал максимально возможную площадь на экране(минимум пустого
> пространства оставалось)
Получи самые левые самые верхние/нижние и правые координаты точек( относительно взгляда из камеры) и от центрируй плоскости фрустума по ним
>Это нужно, чтобы сделать превьюшки моделек. Камера выставляется автоматически, делается шот, загружается следующая модель.
Я для такого случая вообще Сферу использую а не AABB.
Тут все равно какая-нибудь грань будет больше, а размер превьюшки задан конкретно( к примеру в пропорции 4:3 ), так что с одной из сторон полюбому будет пустое место( за исключением боксов и сферообразных объектов).
Да и скорость обработки выше.
Можно просто изменить масштабирование модели. Хотя.... хоть просто изменяй масштаб, хоть вычисляй по
фруструму: Если например моделька вытянутая и её сфотографировать с того боку, с которого она имеет меньший размер, то фотоснимок не будет точно показывать модель.
Лучше с баундсферой.
Тема в архиве.