Hola :lol: ,
Uso OGL y gluPerspective para definir el FOV.
Me estaba preguntando si podia hacer un render donde cambiara con gluPerspective la matriz de proyección para alterar el FOV de unos objetos y otros.
Cualquier comentario al respecto lo agradecere. B)
Asiasssss !!!
Pues no lo he probado pero cambiando la matriz de proyección por la nueva con el FOV cambiado cada vez que vayas a renderizar un objeto, debería funcionar. Al fin y al cabo los vértices se transformarán por las matrices activas en ese momento, entre ellas la matriz de proyección.
Saludos.
No se usa esto para ciertos efectos? Como por ejemplo la tipica estela que deja una espada (tipo devil may cry, por ejemplo), donde al hacer una estocada, la estela muestra una version de la escena con el FOV cambiado?
Pues me ha dao por probarlo y si se puede, no he visto ningun efecto extraño y parece que no hay problema con el test de profundidad.
ya nos contarás para que sirve. :D
por si te vale de algo te paso la rutina que tengo para calcular la perspectiva en opengl
// Indicar la prespectiva del render
__forceinline void Device::SetPerspective( float fFovY, float fAspect, float fZNear, float fZFar, float *m )
{
float f = 1.0f / tanf(fFovY / 2);
float m0 = f / fAspect;
float m5 = f;
float m10 = (fZFar + fZNear) / (fZNear - fZFar);
float m11 = (fZFar * fZNear) / (fZNear - fZFar);
float m14 = -1.0f;
m[0] = m0; m[1] = 0; m[2] = 0; m[3] = 0;
m[4] = 0; m[5] = m5; m[6] = 0; m[7] = 0;
m[8] = 0; m[9] = 0; m[10] = m10; m[11] = m11;
m[12] = 0; m[13] = 0; m[14] = m14; m[15] = 1;
}
suerte
editado: perdona se me olvidaba, para meterla selecciona el modo de la matrix con glMatrixMode y luego pasale la variable m al glMatrixLoad
Cita de: "Ray"ya nos contarás para que sirve. :D
Umm, no recordais un truco que se usaba en los juegos de coches en 3D que se llamaba
ojo de pez.
Se supone que si dibujabas algunos objectos con un mayor/menor(no lo recuerdo) angulo de visión estos se estiraban. Creo que lo que hacian era dibujar con diferente FOV los objetos que tenias cerca, y que ibas pasando a gran velocidad, para conseguir mayor sensación de velocidad.
(También habia otro truco que era poner postes o cosas asi a los lados de la carretera :D )
Bueno, eso lo leí en algún sitio, pero nunca he hecho un juego de carreras, y menos en 3D. XDDD
Salu2
Ese efecto ya se consigue elevando el propio FOV. En cualquier caso debería de establecerse de una manera proporcional a la distancia que se encuentren los objetos de la cámara para que no se note.
Podría servir como efecto de seta alucinógena.
Cita de: "Ray"Podría servir como efecto de seta alucinógena.
XDDDDDD, mu bueno.
Perdón pero esto se merecia un quote :D
Gracias a todos (ole) ,
voy a mirar de probarlo, cuanto haga un poco de tiempo, ya os diré.
:D