Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Cámara en 3º persona para un juego de naves

Iniciado por CoLSoN2, 25 de Diciembre de 2002, 12:24:30 AM

« anterior - próximo »

Mars Attacks

                                A ver, antes de situar la cámara, elévala un poco y hazla apuntar hacia abajo de la manera en la que quieras que esté siempre después. Una vez la tengas como quieres sobre parado, miras qué rotaciones o desplazamientos has hecho y se lo añades a la formulita que habías puesto tú antes. Con eso debería bastar.                                

CoLSoN2

                                pero si en el vector direccion ya lleva esas rotaciones, osea esa es la dirección de la nave una vez hechas todas las rotaciones.                                
Manuel F. Lara
Descargar juegos indie  - blog sobre juegos indie y casual
El Desarrollo Personal.com  - blog sobre productividad, motivación y espíritu emprendedor

Mars Attacks

                                Sí, pero aparte de las rotaciones de la nave, tú quieres que la cámara sobresalga con un desplazamiento hacia arriba y que mire un poco hacia abajo, ¿no?. Esas dos transformaciones de más son las que deberías añadir.                                

CoLSoN2

                                vale ya lo he conseguido, gracias ;)                                
Manuel F. Lara
Descargar juegos indie  - blog sobre juegos indie y casual
El Desarrollo Personal.com  - blog sobre productividad, motivación y espíritu emprendedor

Mars Attacks

                                Sube el resultado cuando puedas, quiero ver la nave desde otro ángulo  :)                                

Lord Trancos

                                pon tambien el codigo fuente del algoritmo!!! :D                                
i>SaludoteZ de Lord Trancos!
http://www.dxlab.tk - http://dxlab.host.sk - programación de DirectX con Delphi.

CoLSoN2

                                cuando acaben las vacaciones subiré una nueva prueba con algo más que una nave dando vueltas XD
mientras, el "algoritmo" para obtener el resultado ha sido:





  D3DXVECTOR4 temp = D3DXVECTOR4(0,0,1,1);

  D3DXVECTOR3 dir = D3DXVECTOR3(0,0,1);



  D3DXVECTOR3 up = D3DXVECTOR3(0,1,0);

  D3DXVECTOR3 rot = player.GetRot();

  D3DXMatrixRotationYawPitchRoll(&matrix,rot.y,

   rot.x+D3DXToRadian(20),rot.z);

  D3DXVec3Transform(&temp,&dir,&matrix);

  D3DXVec4Normalize(&temp,&temp);

  dir.x = temp.x; dir.y = temp.y; dir.z = temp.z;

  D3DXVECTOR3 pos = player.GetPos();

  D3DXVECTOR3 eye = pos - dir*150;





  D3DXMatrixLookAtLH(&matrix,&eye,

   &player.GetDir(),&up);



aunque como bien decía Mars, al llegar al llegar a "arriba" en las rotaciones, la cámara se da la vuelta y se ve la nave arriba de la pantalla boca abajo, y no entiendo pq oO                                
Manuel F. Lara
Descargar juegos indie  - blog sobre juegos indie y casual
El Desarrollo Personal.com  - blog sobre productividad, motivación y espíritu emprendedor

Lord Trancos

                                a mi el vector Up ese no me acaba de convencer.... :P                                
i>SaludoteZ de Lord Trancos!
http://www.dxlab.tk - http://dxlab.host.sk - programación de DirectX con Delphi.

ethernet

me temo q colson no ha pillado para q vale el vector up :DDDDD

Mars Attacks

                                Yo no tengo ni idea de para qué vale. Si sois tan amables de explicarlo en lugar de tacharlo como fallo únicamente, os lo agradeceré  :I                                

BeRSeRKeR

                                Pues a mi si me convence el vector Up...siempre y cuando el vector look no coincida con el vector Up!. La existencia del vector Up se debe a que con el vector Look y el Up, la función D3DXMatrixLookAtLH, calcula el vector Right a través del producto vectorial entre Look y Up. Una vez que tiene el vector Right, regenera el vector Up haciendo el producto vectorial entre Look y Right y ya tiene los vectores necesarios para crear una matriz "LookAt"  :D

Saludoooooos!                                
¡Si te buscan en nombre de la ley, huye en nombre de la libertad!!

AgeR

                                Estooo yo es que me explico bastante mal, así que a ver si poniendo un ejemplo queda mas decente :

Imagínate que vas caminando por la calle normalmente (por el suelo, vamos). En ese momento tu "vector up" (como se llama a eso en castellano?) sería [0,1,0], usease positivo en el eje Y.
Ahora imagínate que andas cabeza abajo(o_O)... tu "vector up" sería negativo en el eje Y.

Bueno, todo esto es más fácil verlo probando a cambiar los valores del vector y ver lo que pasa.
Hmmm menos mal que no me quiero hacer profesor... XD

Saludos!                                

Mars Attacks

                                Vale, entonces lo único que tienes que hacer es que cuando el vector up sea [0,-1,0] la cámara reciba una rotación ennn el eje de la z, creo, 180º, para que todo continúe "boca arriba".                                

Lord Trancos

                                El vect up tambien puede ser interesante que reciba las rotaciones del eje X,... vamos, creo yo. :)                                
i>SaludoteZ de Lord Trancos!
http://www.dxlab.tk - http://dxlab.host.sk - programación de DirectX con Delphi.

Mars Attacks

                                Te refieres a un efecto de balanceo cuando la nave gira, ¿no? Una cosa que queda bastante bien y que Drakkar ha hecho en el blast es que la cámara gire hasta la mitad del ángulo que se balancea la nave cuando lo ves en primera persona; así da un efecto mucho más realista.
Pero bueno, lo primero es que funcione, y luego ya vendrán las pijaditas ;)                                






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.