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 »

CoLSoN2

                                Bueno, creo que el subject define bastante claro lo que quiero hacer pero no consigo, hasta ahora el "efecto-cámara" que he conseguido puede verse aquí:

http://www.warcraft3es.com/test.rar 1.2MB | WinRAR | DirectX 8.1                                
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

Haddd

                                Lo siento, pero no me funciona.                                

Grugnorr

                                :(  ERROR! Rendering from index buffer en loadModel.log

Pantalla en negro salvo los fps...

GF4Ti4200.


PD: Parece que el problema anda por aquí:

Secuencia en loadModel.log :
------------------------------------
Vertices copied
VBuffer created
Indices copied
IBuffer created
Loading texture
Texture created
Setting material
ERROR! Rendering from index buffer
------------------------------------------------

PDD: Eso de copiar los vertices antes de crear el VB suena raro, lo mismo con el IB :D                                
hat the hells!

Lord Trancos

                                Coz, a mi se q me rula,... :D (banshee rulez...)

pd. por cierto, ¿cual es exactamente el problema que tienes con la camara?                                
i>SaludoteZ de Lord Trancos!
http://www.dxlab.tk - http://dxlab.host.sk - programación de DirectX con Delphi.

CoLSoN2

                                a los dos que les falla, teneis instalado DX9? lo digo porque este usa 8.1, y según he oído han cambiado el DrawIndexedPrimitive ese, no se si afectará ...

He subido un nuevo test que refleja lo que tengo ahora, para que lo entendais mejor (al final del post). Aunque quizá os apañeis con este par de shots (dedicado a ethernet ;*)

Ahora mismo utilizo, para posicionar la cámara a cada frame el D3DXMatrixLookAtLH, utilizando la posición de la nave como referencia, pero restandole una cantidad en Y y en Z, para que se vea desde atrás. NOTA: si le pongo exactamente la de la nave (se ve desde la cabina) consigo el efecto que quiero, pero necesito que se vea desde atrás.
Como dirección, utilizo la misma que la nave, esto está bien, y como up también la de la nave.

En esta imagen

podemos ver la situación de la nave y la cámara en el momento de inicio del programa, así como al girar la cámara. Nótese que al girar, la cámara deja de estar detrás de la nave.
NOTA: las lineas azules marcan el campo de visión de la cámara

En esta imagen vemos lo que quiero conseguir en los giros. Bueno, en todo momento ;)


Test2: 900 y pico kb's en wrar3 :
http://www.warcraft3es.com/test2.rar

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

Lord Trancos

                                Yo tengo DX9 :)

En cuanto a lo de la camara... solo necesitas saber la rotacion de la nave y un poco de trigonometria :)

s = posicion de la nave
a = angulo de rotacion (eje Y) de la camara
c = posicion de la camara
distancia = distancia de la camara

c.x = s.x + (cos(a) * distancia)
c.z = s.z + (sin(a) * distancia)
c.y = s.y + distancia

debe de ser algo asin... pero q conste q soy muy malo con las mates  :oops:  y suelo fallar cuando hago cosas de memoria (como ahora)   :loco:                                
i>SaludoteZ de Lord Trancos!
http://www.dxlab.tk - http://dxlab.host.sk - programación de DirectX con Delphi.

Mars Attacks

                                Yo creo que todos esos signos que has puesto deberían ser negativos, si no, te saldrá la cámara por delante de la nave.                                

CoLSoN2

                                hm, para los demás ejes de rotación supongo que será igual, no? Lo digo porque puede moverse en cualquier dirección.

y thx ;*                                
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

                                Hmmm me da que es algo más complicado para 3D, a menos que no vayas a cabecear con la cámara.                                

CoLSoN2

                                Eso pensaba, por eso pregunté XD

Cabecear?                                
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

                                Emmm... un avión puede inclinarse a izquierda o derecha, rotar plano o cabecear (para aterrizar o despegar). Las fórmulas de Trancos sirven si sólo te mueves en 2D, en el mismo plano. Pero si quieres inclinarte arriba o abajo, tendrás que tener en cuenta otra rotación más, es decir, otro ángulo más, que será el que tenga la normal de la cámara (tiene un nombre especial, pero ahora mismo no recuerdo cómo se llama).
No me hagas mucho caso, me estoy haciendo la picha un lío... igual el lookAt ya recoge esa otra dirección, y entonces tendrías que multiplicar las distancias por los senos y cosenos de los ángulos del lookat tal y como ha puesto Trancos.
Args, brain failure.                                

Lord Trancos

                                RotX, RotY, RotZ = rotaciones de la nave

pCamRelat = posicion relativa de la camara respecto de la nave

pAt = posicion de la nave

pUp.x = cos(RotZ)
pUp.y = sin(RotX) * sin(RotZ)
pUp.z = cos(RotX)

pEye.x = pAt.x + (pCamRelat.x * cos(RotZ) * cos(RotY))
pEye.y = pAt.y + (pCamRelat.y * sin(RotX) * sin(RotZ))
pEye.z = pAt.z + (pCamRelat.z * cos(RotX) * sin(RotY))

NOTA: :oops:  creo q he escrito alguna barbaridad (insisto, las mates no son lo mio....)                                
i>SaludoteZ de Lord Trancos!
http://www.dxlab.tk - http://dxlab.host.sk - programación de DirectX con Delphi.

Mars Attacks

                                Esto me parece más ajustado, sí. Además incluyes el giro de inclinación, que tampoco habíamos tenido en cuenta antes. Bona nit a tots.                                

Loover

                                Oye Colson, he visto que la malla de la nave la tienes en modo ascii. ¿Qué programa o plugin has usado para crear ese archivo?                                
IndieLib Libreria 2.5d utilizando aceleración por hardware para la programación de juegos 2d.
Indie Rover The monkeys are reading!

CoLSoN2

                                el MilkShape3D. Exportar > MS3D ASCII

por cierto, te va el programa? XD                                
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






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.