Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





CAMARA FPS DX9

Iniciado por x-alien, 11 de Enero de 2003, 05:00:40 AM

« anterior - próximo »

x-alien

                                HOLA  no tengo ni pajalera idea de como hacer una camara fps, ni como moverla aunke sea pa lante, patras, y strife...
he estado viendo varios tutos.. uno aleman...(no entendi un pijo),
el de berserker, entendi lo de k la camara nunca se mueve y se mueve el mundo 3d y no la camara =) curioso...
pero no kiero coger su codigo, no me gusta copy and paste y menos usar codigo de la gente...

me gustaria k alguien me ayudara a crear la camara, y explicarme como puedo avanzar la camara, girar, strife etc.

este es el codigo de la camara estatica.



   D3DXVECTOR3 vEyePt( 0.0f, 6.0f,-40.0f );

   D3DXVECTOR3 vLookatPt( 0.0f, 0.0f, 0.0f );

   D3DXVECTOR3 vUpVec( 0.0f, 1.0f, 0.0f );

   D3DXMATRIXA16 matView;

   D3DXMatrixLookAtLH( &matView, &vEyePt, &vLookatPt, &vUpVec );

   m_pd3dDevice->SetTransform( D3DTS_VIEW, &matView );



   FLOAT fAspect = ((FLOAT)m_Width) / ((FLOAT)m_Height);

   D3DXMATRIXA16 matProj;

   D3DXMatrixPerspectiveFovLH( &matProj, D3DX_PI/4, fAspect, 1.0f, 500.0f );

   m_pd3dDevice->SetTransform( D3DTS_PROJECTION, &matProj );


tambien decir k no uso nada de los putos appwizard.. por el motivo de k no me gusta usar codigo no escrito por mi,
actualmente estoy pillao en la camara y el la carga optimizada de modelos x, como bien sabeis usan triangle list... lo k supone... k hay mas vertices de la cuenta...

alguien me podria explicar lo de la camara paso a paso si no os importa.. thx... actualmente estoy aprendiendo dx, sin nada, solo tengo un misero libro de c/c++, lo k se de win32 lo aprendi en internet, pero no hay mucho de d3d en la red, todo es opengl... =(, alguien tiene algun buen libro de dx8 americano en pdf??
necesito libros en pdf, alguien tiene enlaces con pdfs??

salu2

pd. las 5:07 de la mañana y aun sigo r k r machacando...
k duro es aprender como autodidacta, sin libros y sin ser estudiante de informatica, uh uh :)                                
oy Grafista, no Programador, aun así programo mejor que un 'programador'

Lord Trancos

                                No lo he probado, pero igual funciona....

Primero creas una matriz con





D3DXMATRIX* D3DXMatrixRotationYawPitchRoll(

 D3DXMATRIX* pOut,

 FLOAT Yaw,

 FLOAT Pitch,

 FLOAT Roll

);





a partir de las rotaciones de la camara.

Y despues creas otra matriz de translacion con la posicion de tu personaje





D3DXMATRIX* D3DXMatrixTranslation(

 D3DXMATRIX* pOut,

 FLOAT x,

 FLOAT y,

 FLOAT z

);





y finalmente las multiplicas. (D3DXMatrixMultiply) :)

Lo veo facil de entender y no sabria q explicar.... ^_^;

pd1. no lo he probado y soy malo q te cagas con las mates (suspendi la de COU y luego me cambie las asignaturas para no tener que volver a verlas nunca mais)

pd2. aunque ahora que lo pienso, no se si te valdra pq estarias usando codigo de otros... :-/ (M$)                                
i>SaludoteZ de Lord Trancos!
http://www.dxlab.tk - http://dxlab.host.sk - programación de DirectX con Delphi.

ethernet

Hay unos 100k tutoriales de camara en internet mas o menos, de todas formas no hay q ser ingeniero industrial para intuirlo basico, una suma de vectores multiplicado por un factor y un par de angulos. En ogl hay una funcion llamada gluLookAt quizas en DX haya algo similar. Pero como digo no hace falta nada mas q pensar 3 minutos (1,5 minutos para un ingeniero industrial)

saludos

CoLSoN2

                               
Citar
HOLA no tengo ni pajalera idea de como hacer una camara fps, ni como moverla aunke sea pa lante, patras, y strife...  

Pues en caso de alante,atrás y strafe, es bien simple. Tu tienes la dirección de la cámara (el 2º vector(lookAt)), simplemente haces:

pos = pos + dir*step  donde step es la cantidad a avanzar (suponemos que dir está normalizado). Para átrás sería restando.

y para el strafe, haz igual pero en vez de dir, utiliza el vector resultante del producto vectorial (y luego normalizar) entre dir y up.

-- saludos                                
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

Grugnorr

                                Busca por google, yo veo muchos tutoriales para DX. Además de la SDK. Y la teoría 3d es igual en OGL y en DX.

El equivalente a gluLookAt() es D3DXMatrixLookAtLH (si usas un sistema coordenadas basado en la regla de la mano izda, RH si dzcha)

Así de cabeza te pongo unos cuantos tutoriales:

http://www.andypike.com/tutorials/directx8/

http://www.drunkenhyena.com/

Los de Berserker ya los tienes ;)

Aparte de Flipcode y Gamedev, SDK y demás obvios

DrunkenHyena ha hecho los tutoriales en NeHe en DX(supongo que son los que has encontrado en OGL ;) ), acaba de sacar justo el de moverse por un mundo 3d, así que ya sabes...

PD: Intenta comprender algo de la teoría...                                
hat the hells!

x-alien

                                gracias a tos por intentar ayudarme.

me kedo con la explicacion de lord trancos.
tutoriales hay muchos pero casi ninguno esta explicado. me mirare algunos tutos, solo kiero entenderlos para poder hacer la camara a mi estilo. y si hay alguno explicado, explica k hace pero no la teoria matematica k es lo k yo kiero... yo habria usado cos, sen, u otras formas para girar la camara...
drunkenhyena y webs similares no explica nada, te da el codigo para bajar, y yo no kiero usar el codigo, sino aprender, no usar sin entender...

he visto k algunos usan quaternions en la camara... intentare hacerme una camara... ciertamente opengl me fue mucho mas facil k directx... a mi parecer.

yo con matrices soy un negao, tengo suspendido algebra en la carrera, evito las asignaturas k tienen matrices por ahora solo me centro en las ecuaciones diferenciales de calculo... claro k no puedo llevar grafismo , programacion y estudios todo a la vez... en algun lao patino jejeje

salu2                                
oy Grafista, no Programador, aun así programo mejor que un 'programador'

x-alien

                                bueno, he resuelto mi duda solo, =(, la solucion...
lo mio... dibujar, he dibujado la camara en el espacio LH de dx, sus vectores y aplicar simple matematica algebraica y de vectores, ahora solo me keda saber como implementarlo en dx... me mirare las opciones k tiene para las matrices, a ver k me sale.
buske paginas de mates, y vi lo k yo keria y preguntaba... mates, ya vi  cuales eran las matrices de traslacion, rotaciones y escala... eso no lo he dado yo en algebra... ley en este foro k dabais en clases este tipo de matrices..., ojala hubiera dao eso yo, no habria estao indefenso ante la injenuidad...

lo k ley en el tuto de berserker.... de k la camara nunca se mueve eso es verdad o es una trola??, es la unika web k he visto k pone eso...
algo curioso... no se pork entonces en algunos programas pone la posicion de la camara con coordenadas x, y ,z, incluso en el max... la camara como objeto con sus coordenadas y separada del eje de coordenadas el 0,0,0... algo rarito de creer jeje

salu2

thx por intentar ayudarme

pd. muchos tutoriales y todos de lo mismo, texturizar, triangulito, cubito, y nada de lo k busco y bien explicado... colisiones(con todos sus tipos), frustum culling, octrees, raycasting, raytrace, metaballs, phisics etc... nada de lo k busco, eso esta en los libros caros de importacion... como gems...

pdd alguien k tenga el gems.. lo escanee y lo ponga pa bajar xd                                
oy Grafista, no Programador, aun así programo mejor que un 'programador'

Mars Attacks

                                La cámara puede moverse perfectamente. Lo de las matrices de transformación se suele dar en informática gráfica. Si quieres, en www4.uji.es/~ribelles está la información (apuntes de teoría y de práctica -aunque se programa en opengl-) sobre lo que damos en la UJI.                                

ethernet

Citar
pd. muchos tutoriales y todos de lo mismo, texturizar, triangulito, cubito, y nada de lo k busco y bien explicado... colisiones(con todos sus tipos), frustum culling, octrees, raycasting, raytrace, metaballs, phisics etc... nada de lo k busco, eso esta en los libros caros de importacion... como gems...

colisiones: gamedev.net flipcode.com gamasutra.com hay unos 10 por cada pagina por lo menos, con codigo de ejemplo y tutorial con imagenes.

frustrum culling: hay muchisimo, Lord trancos por ejemplo tiene codigo en su web,

octrees: gametutorials.com cone3d.gamedev.net

raycasting y raytracing: no sabia q te diera por ese tipo de render ahora :D, de todas maneras hay tutoriales basicos por ahi y no tan basicos (web de facultades americanas)-> http://www.cs.virginia.edu/~gfx/Courses/20...nthesis/papers/.  

Metaballs: angelcode.com hay un tutorial para DX, de todas maneras busca info acerce de marching cubes. Es la manera de implementarlos. En español con codigo: http://www.telecable.es/personales/ffelagu.../metaballs.html
fisica: en gamedev hay una seccion entera.

para las cosas matematicas simplement pillate cualquier libro de mates de cualquier ingeniero industrial y tienes toda el algebra q necesitas y mucha mas.
De todas maneras como digo la camara no es algo q creo q pueda causar muchos problemas a nadie, como digo son  2 vectores y 2 angulso, incluso colson lo sabe ( ;PPPPPP) .

saludos

ethernet

[qoute]
yo con matrices soy un negao, tengo suspendido algebra en la carrera, evito las asignaturas k tienen matrices por ahora solo me centro en las ecuaciones diferenciales de calculo... claro k no puedo llevar grafismo , programacion y estudios todo a la vez... en algun lao patino jejeje
[/quote]

De mis tiempos de estudiantes recuerdo q para resolver ecuaciones diferenciasles habia una tecnica q usaba los autovalores de la matriz de las ecuaciones :DD

saludos

ethernet

Perdon, el codigo q tiene lord trancos en su web se refiere al octree aunque porsupuesto usa frustrum culling :DD

puto BBcode xDD
saludos

BeRSeRKeR

                                Pues como ser humano que soy puedo equivocarme, pero no es el caso. Lo de que la cámara no se mueve no es una trola. La matriz de vista (que es "la matriz de la cámara"), lo que hace es transformar los vértices a coordenadas de vista por lo que, lo que estás moviendo/rotando no es la cámara sino la geometría...y es que cuando tú trasladas la cámara x unidades en el eje Z, lo que estás haciendo realmente es crear una matriz de traslación que traslada la geometría -x unidades en el eje Z...

Saludos

PD: la cámara como tal no existe (como te la pintan los programas como MAX)...en realidad es una transformación más...no es un objeto que tú muevas como puedas hacer en el MAX. De todas formas en MAX, cuando pones en un viewport la cámara activa, lo que realmente se está haciendo ahí es exactamente lo que he dicho...negar la traslación y la rotación de la cámara para transformar la geometría correctamente y posicionarla de forma que se vea a través de nuestra cámara tal como si hubiésemos movido la cámara.                                
¡Si te buscan en nombre de la ley, huye en nombre de la libertad!!

Mars Attacks

                               
Citar[qoute]
De mis tiempos de estudiantes recuerdo q para resolver ecuaciones diferenciasles habia una tecnica q usaba los autovalores de la matriz de las ecuaciones :DD

Concretamente se usa para resolver sistemas de ecuaciones diferenciales del tipo X(t)'=AX(t)+f(t)
Se sacan los autovalores lambda y los autovectores v y tienes soluciones de la forma Xgi=e^lambdai*t  *vi
etc etc, hay variantes dependiendo de si los valores de lambda son iguales, imaginarios etc. Entonces la solución cambia, pero a fin de cuentas la matriz final acaba siendo Xh=[x0 x1 ... xi]*[C0 C1 ... Ci]'

Y tal y cual. Sólo quería fardar un poco, en realidad llevo unas cuantas cosillas más como esa para Ampliación de Matemáticas  :llorando:  A ver si la apruebo ya de una furcia vez. De hecho, en este tipo de preguntas siempre clavo la respuesta, pero luego pone una función de calor bidimensional extraña que se la saca de la manga y nos jode vivos  :(                                

Mars Attacks

                               
CitarCosas chungas

Tío, vale, pero no te pongas filosófico XD Supongo que lo que x-alien preguntaba era que si para "moverse" por el mundo tenía que aplicar una transformación al mundo o a la cámara. Lo que tú explicas será la representación interna que esa cámara hace del mundo. Pero no me lo líes que acabará moviendo lo que no toca ;)

Esto me recuerda a una anécdota de un tal Einstein, que una maravillosa tarde de abril trataba de explicar a dos señoras que estaban de visita en su casa su nueva teoría de la Relatividad. Tras varios e infructuosos intentos para hacerse entender, al final les preguntó:
-¿No han tenido ustedes alguna vez esa sensación estando dentro de un tren, de que es el mundo el que se mueve en lugar de ustedes?
-Sí, sí -afirmaron alegremente las señoras, contentas por comenzar a entenderlo.
-Pues eso no tiene absolutamente nada que ver con la teoría de la Relatividad.

Aunque más que de Einstein, parece de Grouxo XD En fin... no disparen, yo sólo soy el pianista.                                

Mars Attacks

                                http://www4.uji.es/~ribelles/Practica5/practica5.htm

En esa web tienes la "teoría" orientada a la práctica del tema de los ángulos y la cámara.                                






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.