Novedades del Blog

miércoles, 30 de julio de 2008

Primer video

En este primer vídeo solo se ve el movimiento de la cámara, tanto en vista con perspectiva, como en vista isometrica, en este vídeo se puede apreciar el back-face culling cuando la cámara gira hacia un lado que tiene pared y esta desaparece cuando da la espalda a la cámara, así una pared nunca estorbará la visión de la habitación.

video

martes, 29 de julio de 2008

Vista Isometrica

Mas cositas nuevas, ya tengo habilitada la vista Isometrica y el mostrar mensajes de Debug por pantalla, este sistema es un poco simple pero para mis necesidades, de momento, me sirve perfectamente.
Para conseguir esta vista Isometrica u Ortogonal he hecho una llamada a esta función, ademas de algunos cositas mas, pero basicamente esto es lo mas importante. Esta funcion lo que hace es crear la Matriz de Projeccion adecuada para generar este tipo de vista Ortogonal:

m_matProj = Matrix.OrthoLH(fWidth, fHeight, fNear, fFar);


lunes, 28 de julio de 2008

Implementación de Fuentes


Despues de unos pequeños problemas en el rendimiento, provocados por un pequeño fallo en la logica de la clase FontD3D ;P ya he conseguido mostrar el texto que yo quiera en pantalla. En este remake no se usa apenas texto, con lo que he hecho unas clases muy basicas para su manejo y lo utilizare sobre todo para Debug y poder mostrar en pantalla y en tiempo real el framerate y cualquier otro valor que considere necesario.
Como podeis ver en la imagen y como no podia ser de otra forma, el correspondiente 'Hola Mundo' jejeje

lunes, 21 de julio de 2008

... ¡¡Arreglado!! (soy un novatoooo :))

Pues si, ya he conseguido dejar las lineas de las coordenadas quietas, el problema era el que parecia, y es como si se pintaran los ejes en el origen de la entidad, en vez de la del mundo y efectivamente era eso, no pasba las coordenas de los ejes por la matriz de mundo, es decir , poner estas líneas de codigo antes de pintar las lineas 3D:

Matrix matWorld = new Matrix(); //Matriz de mundo
matWorld = Matrix.Identity; //creo la matriz identidad

//Aplico la transformacion a las coordenadas del mundo
m_pD3DDevice.SetTransform(TransformType.World, matWorld);
m_pD3DDevice.SetTexture(0, null); //No aplico ninguna textura


Atascadisimo ...

Estoy teniendo un pequeño problema con la cámara y la posición donde se pintan las entidades. Explico la situación, Coloco la cámara en la posición (50,100,-500) y apunto a la posicion(0,0,0), entonces pinto los ejes de coordenadas y la entidad, me aparece perfectamente, y cuando muevo la camara por el eje z se ve perfectamente como se va acercando al pto(50,100,0) perfectamente como se muestra en la imagen.


El problema aparece cuando intento pintar la entidad en otra posicion que no sea la (0,0,0), el caso es que la entidad baja, pero los ejes de coordenadas tambien y no los he cambiado, solo cambio la posicion de pintado de la entidad de (0,0,0) a (0,400,0) y aparece asi.


El caso es que no se si es la cámara la que se mueve hacia arriba y la entidad no hace caso a ese cambio de coordenadas, o son los ejes de coordenadas los que se estan moviendo con la entidad.
Si a alguien se le ocurre una prueba o metodo de como puedo ver que esta pasando, poner un comentario aqui o mandar un correo a batman3d@data6.com.
Muchas Gracias.

martes, 15 de julio de 2008

El pintado de primitivas... tambien solucionado

Al intentar ubicarme en el mundo 3D intentaba pintar unas lineas desde el punto (0,0,0) de coordenadas, pero era incapaz de que se pintaran, pero como siempre investigando he encontrado como hacerlo en C#, estas lineas estan pintadas en la imagen de color verde, rojo y azul.
Tambien he podido arreglar el pintado de lineas 2D (de color gris debajo del rectangulo azul) y rectangulos en 2D (rectangulo azul) como se puede apreciar en la imagen, si lo quieres ver mas claro, pincha en la imagen y se vera mas grande.

Lo proximo que quiero implementar es una clase que pinte texto en pantalla.

domingo, 13 de julio de 2008

Problemas en la carga de Texturas ... Solucionado

Después de conseguir pintar las baldosas del suelo, empezaron a aparecer los problemas:
1. La forma de la habitación no era como debería ser.
2. La carga de las texturas era lentísima.

Después de solucionar el tema de pintar bien el suelo de la habitación que era debido a un pequeño fallo en el bucle que pinta cada una de las baldosas del suelo, apareció otro fallo que me hizo temblar las piernas, la función que carga las texturas de los modelos tardaban 2 segundos y pico por textura usando este método:

Esta llamada tardaba 2 segundos y pico
m_pTexture = new Texture(pD3DDevice, pBitmap, Usage.Dynamic, Pool.Default);


La solución me la dio el Sr Google y la Sra MSDN, me mostraron un objeto de DirectX que me ha hecho ver la luz, TextureLoader.
m_pTexture = TextureLoader.FromFile(pD3DDevice, sPath);

miércoles, 9 de julio de 2008

Primeras imágenes



Por fin he conseguido mostrar algo en pantalla, de momento estoy usando los modelos que tenia de la anterior versión, parece que la migración del código esta cada vez mas cerca, estos dias seguire trabajando con el motor pero ahora si que puedo ver los resultados ;)
No se ve muy bien porque la camara esta descolocada y un poco lejos pero es un comienzo.

martes, 1 de julio de 2008

Ver para creer...

Ya tengo acabado el motor mas o menos, solo faltaba probarlo, y sorpresa, cuando ejecuto el codigo solo se ve la ventana con la pantalla negra, entonces empiezan los sudores frios y el pensamiento de que he estado perdiendo el tiempo... Y de repente..., ¿como se va a ver nada sino he creado ninguna camara para que apunte a la escena?. Error de novato, asi que ayer me puse a implementar la Camara con su correspondiente Interface para controlar todo lo que se va a mostrar.

A ver si entre hoy y mañana puedo mostrar alguna captura del juego con los modelos antiguos.