Foros - Stratos

Programadores => Programación gráfica => Mensaje iniciado por: Degiik en 27 de Septiembre de 2005, 10:31:13 AM

Título: Render Con Diferente Fov
Publicado por: Degiik en 27 de Septiembre de 2005, 10:31:13 AM
 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 !!!
Título: Render Con Diferente Fov
Publicado por: BeRSeRKeR en 27 de Septiembre de 2005, 10:44:27 AM
 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.
Título: Render Con Diferente Fov
Publicado por: AK47 en 27 de Septiembre de 2005, 11:58:49 AM
 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?
Título: Render Con Diferente Fov
Publicado por: Ray en 28 de Septiembre de 2005, 05:51:43 PM
 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  
Título: Render Con Diferente Fov
Publicado por: zupervaca en 28 de Septiembre de 2005, 07:40:40 PM
 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
Título: Render Con Diferente Fov
Publicado por: _XUTI_H_ en 28 de Septiembre de 2005, 08:40:50 PM
 
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
Título: Render Con Diferente Fov
Publicado por: Ray en 28 de Septiembre de 2005, 08:59:15 PM
 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.
Título: Render Con Diferente Fov
Publicado por: _XUTI_H_ en 29 de Septiembre de 2005, 09:00:17 AM
 
Cita de: "Ray"Podría servir como efecto de seta alucinógena.
XDDDDDD, mu bueno.
Perdón pero esto se merecia un quote :D
Título: Render Con Diferente Fov
Publicado por: Degiik en 05 de Octubre de 2005, 10:31:51 PM
 Gracias a todos  (ole) ,
voy a mirar de probarlo, cuanto haga un poco de tiempo, ya os diré.

:D