Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Render Con Diferente Fov

Iniciado por Degiik, 27 de Septiembre de 2005, 10:31:13 AM

« anterior - próximo »

Degiik

 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 !!!
egiik: h-O-5 hoja/ingestión 100mo Vida suspendida ( 1 día )

BeRSeRKeR

 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.
¡Si te buscan en nombre de la ley, huye en nombre de la libertad!!

AK47

 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?

Ray

 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  

zupervaca

 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

_XUTI_H_

 
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
UTI

Ray

 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.

_XUTI_H_

 
Cita de: "Ray"Podría servir como efecto de seta alucinógena.
XDDDDDD, mu bueno.
Perdón pero esto se merecia un quote :D
UTI

Degiik

 Gracias a todos  (ole) ,
voy a mirar de probarlo, cuanto haga un poco de tiempo, ya os diré.

:D  
egiik: h-O-5 hoja/ingestión 100mo Vida suspendida ( 1 día )






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.