Программирование игр, создание игрового движка, OpenGL, DirectX, физика, форум
GameDev.ru / Программирование / Форум / вектор направления взгляда

вектор направления взгляда

Поделиться
mutПостоялецwww24 дек. 200515:51#0
Как найти вектор направления взгляда ?
В tip's есть статья "Позиционирование объекта вдоль вектора направления взгляда", там написано
      " //получаем вектор направления взгляда:
        vector3 vectorX =vector3(Cam.View.x-Cam.pos.x,Cam.View.y-Cam.pos.y,Cam.View.z-Cam.pos.z);"

так вот Cam.pos - это понятно, а вот как получить Vector3 Cam.View если есть Vector2 mouse_pos ?

NomadПостоялецwww24 дек. 200515:53#1
normalize(mouse_pos - eye_pos)
mutПостоялецwww24 дек. 200516:34#2
Feaerenil
eye_pos - откуда это ? это ты мне наверное из алгоритмов для ппл говоришь ?
mouse_pos - 2д вектор, eye_pos я так понимаю 3д, как их вичитать можно ?

Внесу поправку к вопросу -  направления взгляда мне нужно не для bump'a spec-ra и т.п.
У меня есть положение камеры (3д вектор) и позиция мышы (2д вектор) мне нужно получить 3д вектор -направления камеры.

Правка: 24 дек. 2005 16:45

XProgerПостоялецwww24 дек. 200516:37#3
Dir вектор из матрицы вида
cremenПостоялецwww24 дек. 200516:50#4
хех, так это ты хочешь клик мышкой по 3Д объекту сделать? тебе надо прямую эту найти?
mutПостоялецwww24 дек. 200516:50#5
XProger
Конкретнее плиз, юзаю опенжл. glGetFloatv( GL_MODELVIEW_MATRIX, m ) выдает еденичную матрицу и не риагирует на изменения Cam.pos и mouse_pos,
glGetFloatv( GL_PROJECTION_MATRIX, m )  - реагирует, там все это есть, это так, но никакой конкретной закономерности (типа первый столбец - вектор направления) нет!
mutПостоялецwww24 дек. 200516:57#6
>хех, так это ты хочешь клик мышкой по 3Д объекту сделать? тебе надо прямую эту найти?
Нет мне нужно отрассировать лучь из камеры.
cremenПостоялецwww24 дек. 200517:12#7
я тоже самое сказал

вот тебе пример, подробно не расскажу, но совет, ВЫСШУЮ МАТЕМАТИКУ ЗНАТЬ НАДО... либо использую чужие движки... эх

void GetMouseVector( int mx, int my, D3DXVECTOR3 *Origin, D3DXVECTOR3 *Dir )
{
    // Get the pick ray from the mouse position
D3DXMATRIX matProj;
app->g_pd3dDevice->GetTransform( D3DTS_PROJECTION, &matProj );

D3DXVECTOR3 v;
v.x =  ( ( ( 2.0f * mx ) / app->Options.Width  ) - 1 ) / matProj._11;
v.y = -( ( ( 2.0f * my ) / app->Options.Height ) - 1 ) / matProj._22;
v.z =  1.0f;

// Get the inverse view matrix
D3DXMATRIX matView, m;
app->g_pd3dDevice->GetTransform( D3DTS_VIEW, &matView );
D3DXMatrixInverse( &m, NULL, &matView );

Dir->x  = v.x*m._11 + v.y*m._21 + v.z*m._31;
Dir->y  = v.x*m._12 + v.y*m._22 + v.z*m._32;
Dir->z  = v.x*m._13 + v.y*m._23 + v.z*m._33;
Origin->x = m._41;
Origin->y = m._42;
Origin->z = m._43;
};

это под D3DX, но все понятно из текста... дерзай

NEXПостоялецwww24 дек. 200519:30#8
полчаса назад видел этот топик в ФАКЮ...

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

2001—2014 © GameDev.ru — Разработка игр