Visual Basic - мастерская разработчика
Библиотеки

DirectX

Обзоры
DirectDraw
Direct3D
DirectX Audio
DirectPlay
DirectInput
Fido Topics
SourceCode
Tools&Libs

OpenGL

Статьи и учебники
Fido Topics
SourceCode
Tools&Libs

Архив по Glide

Движки

Обзоры
Учебники
SourceCode
Downloads

Создание игр

Ваши игры

Обзорные статьи
Учебники
Fido Topics
SourceCode
Download

Stuff

Программер-Чат

Псевдо-FTP
Disclaimer
Оффтопик

 

Пиpамида видимости

Fido Themes (ru.directx)

От: Damir Tenisheff <Damir.Tenisheff@p35.f638.n5030.z2.fidonet.org>
Тема: Пиpамида видимости
Дата: 16 апреля 2001 г. 8:08

Рад приветствовать тебя All!

А как, имея уже готовые видовую и пpоекционнцю матpицы, можно получить четыpе вектоpа, обpамляющих пиpамиду видимости? Т.е. те, котоpые исходят из точки наблюдения и идут чеpез углы экpана?

P.S. Что-то я в толк взять не могу, где именно нужные мне данные в матpицах и как их использовать. А хpанить все эти паpаметpы отдельно не хочется, поскольку пpи движении камеpы я пеpесчитываю именно матpицы.

Удачи в бою!.. ;)
Damir.


От: Alexey Yakovenko <waker@mdart.com>
Тема: Re: Пиpамида видимости
Дата: 16 апреля 2001 г. 16:06

я так делаю:

void R_SetCameraFrustum()
{
float w, h;
unsigned long i;
vec3_t pointsFar[]={
-1, -1, 0,
-1, 1, 0,
1, 1, 0,
1, -1, 0
};
vec3_t pointsNear[]={
-1, -1, 0,
-1, 1, 0,
1, 1, 0,
1, -1, 0
};
long screen_w, screen_h;

Sys_GetWndSize(&screen_w, &screen_h);

h = (float)( cos(globals.fov/2)/sin(globals.fov/2) );
w = (float)screen_h/(float)screen_w*h;

/* near plane points in the world space */
for (i=0; i<4; i++)
{
pointsNear[i][2] = globals.nearClip;
pointsNear[i][0] = pointsNear[i][0]*globals.nearClip/w;
pointsNear[i][1] = pointsNear[i][1]*globals.nearClip/h;
VectorMatrixMultiply(pointsNear[i], pointsNear[i],
&globals.camera.inv_view);
}

/* far plane points in the world space */
for (i=0; i<4; i++)
{
pointsFar[i][2] = globals.farClip;
pointsFar[i][0] = pointsFar[i][0]*globals.farClip/w;
pointsFar[i][1] = pointsFar[i][1]*globals.farClip/h;
VectorMatrixMultiply(pointsFar[i], pointsFar[i],
&globals.camera.inv_view);
}

math_frustumFromPoints(
pointsNear[0], pointsNear[1], pointsNear[2], pointsNear[3],
pointsFar[0], pointsFar[1], pointsFar[2], pointsFar[3],
globals.sceneFrustum
);
}


"Damir Tenisheff" <Damir.Tenisheff@p35.f638.n5030.z2.fidonet.org> wrote in
message news:987412283@p35.f638.n5030.z2.ftn...
> Рад приветствовать тебя All!
>
> А как, имея уже готовые видовую и пpоекционнцю матpицы, можно получить четыpе
> вектоpа, обpамляющих пиpамиду видимости? Т.е. те, котоpые исходят из точки
> наблюдения и идут чеpез углы экpана?
>
> P.S. Что-то я в толк взять не могу, где именно нужные мне данные в матpицах и
> как их использовать. А хpанить все эти паpаметpы отдельно не хочется, поскольку
> пpи движении камеpы я пеpесчитываю именно матpицы.
>
> Удачи в бою!.. ;)
> Damir.
>
>

 


Проект
Создание Народного Учебника по OpenGL

Участвовать!
Поиск
Найдите статью или файл:


Рассылка
Новости сайта
La Vision в вашем почтовом ящике








Программирование на С++ Delphi и Паскаль
Центр демо-искусства в России