![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Миникарта [Delphi, OpenGL]
Ricks © (2005-10-13 11:40:00)Столкнулся с проблеммой создания миникарты. Думаю основную текстуру (ландшафт) создавать в начале, а объекты выводить точками в процессе игры. Правильно ли это? И еще: необходимо показывать на миникарте положение камеры. Как это лучше реализовать, может кто-то сталкивался??
A22 (2005-10-14 13:34:00) [1]если известен FOV, то
(w/2) = zNear * tg(FOV/2);
A22 (2005-10-14 13:26:00) [2]берем позицию камеры pos, вектор взгляда dir, боковой вектор side, значения zNear и zFar (расстояние от камеры до соотв. плоскостей), размеры виджимой на экране части ближней плоскости отсечения w, h;
Далее
float fw = (w/2)*zFar/zNear;
Vec2 p0 = (pos + zNear*dir + w/2*side).xz;
Vec2 p1 = (pos + zNear*dir - w/2*side).xz;
Vec2 p2 = (pos + zFar *dir + fw *side).xz;
Vec2 p3 = (pos + zFar *dir - fw *side).xz;
").xz" в том смысле, что pos, dir, side - трехмерные векторы, нам же высота не потребуется.
Если проекция задается не через w/h, а с помощью FOV, можно пересчитать
Ricks (2005-10-14 11:18:00) [3]
> проекция фрустума на плоскость
А как его спроектировать?
A22 (2005-10-13 17:53:00) [4]клином... может, трапецией? проекция фрустума на плоскость будет как раз ею
Antonn (2005-10-13 12:29:00) [5]П7 (13.10.05 12:25) [1]
ПОложение камеры - пямоугольником, как и везде.
если это 2Д, то да, прямоугольником. в 3Д еще клином делают(Earth 2050, ColdZero)
П7 (2005-10-13 12:25:00) [6]Текстуру для мини-карты лучше подготовить заранее и грузить вместе с уровнями. Если конечно она у тя не генерится на лету.
ПОложение камеры - пямоугольником, как и везде.