Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Миникарта [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]

Текстуру для мини-карты лучше подготовить заранее и грузить вместе с уровнями. Если конечно она у тя не генерится на лету.
ПОложение камеры - пямоугольником, как и везде.


Наверх

Титульная страница Поиск, карта сайта Написать письмо