Estos días he mejorado un poquillo la práctica, pero empiezo a no tener ganas de hacer más. Básicamente, en cuanto meta mi nombre en la pantalla tendré (creo) los requisitos mínimos. Le he añadido un par de terrenos más (que no se ven en la captura), y uno de los terrenos es una especie de volcán con humo. También he cambiado la skybox y ahora el mar se difumina con el fondo (usando ecuaciones de niebla, pero utilizando el canal alfa en lugar de darle un color a la niebla).
También he puesto que si te sales de unos límites prefijados se activa una secuencia “no interactiva” en la que la nave da la vuelta y entra en la zona permitida. Al menos me ha servido para aclarar algunos conceptos acerca de la integración de shaders en un motor. Lamentablemente, no hay ninguna fórmula mágica, y aunque se automaticen ciertas cosas (como pasar la matriz WVP o las texturas al shader) no es tan inmediato como utilizar la fixed pipeline.
Por último, aplico un shader para hacer multitextura en los terrenos. Utilizo dos texturas para hacer la capa difusa (que mezclo según la altura del vértice) y otra más para hacer las veces de lightmap. No hay ganas de más
Quizás vuelva a la skybox vieja, porque la verdad es que viendo ahora la captura… la nueva no pega demasiado con el resto de la escena.
- 23 de Noviembre de 2007 a las 6:03 pm
Sickes dice:
Te está quedando muy chula.
Una pregunta, puedes explicar un poco mas en detalle como se hace la animacion o secuencia como tu dices?
Saludos.
Miguel Herrero dice:
Tengo una función que comprueba si la nave está en los límites (forman un cuadrado). Tengo otra variable bool que guarda el resultado de esta operación, para usarla en el frame siguiente.
Si estaba dentro de la zona y en el frame actual estoy fuera, activo la animación. Si estaba fuera y ahora estoy dentro, la desactivo. También activo o desactivo el control del usuario sobre la nave.
Para la animación en sí utilizo un sistema de controladores que tenía ya implementado. Básicamente es una lista de clases que tienen un metodo Update que se llama cada frame. Esto sirve para actualizar el movimiento de las partículas o para realizar otras interpolaciones, como el movimiento suave de la cámara hacia la nave.
En mi caso concreto, la nave simplemente rota en el eje Y hasta que su vector movimiento queda apuntando al (0,0,0) (uso un producto escalar para comprobar eso).




