viernes, 17 de octubre de 2014

Túnel wormhole: Hipervelocidad

Me quedaba de hablar del tercer efecto de túnel, el que estaba basado en el salto al hiperespacio en La guerra de las galaxias. No me gusta el resultado, es más, no lo usaré en la versión definitiva del juego. El tiempo que tenía para hacer este efecto fue muy pequeño, ya tenía que acabar de hacer la memoria y el video demostrativo, así que probé varias cosas que tenía en mente y dejé lo más parecido a lo deseado.



Hipervelocidad Star Wars


La primera idea era conseguir hacerlo de forma completamente procedural con shaders. Tomando como ejemplo este shader de toyshader: https://www.shadertoy.com/view/Msl3WH Os funcionará si tenéis un navegador que soporte webgl. Algo como lo de ese shader, pero para conseguir un efecto más cercano a Star Wars.




Una de las soluciones que intenté fue pasar las coordenadas de pantalla (o coordenadas del mundo, usando xy, zy, he probado varias cosas) a polares. De esta forma mi idea es que cada ángulo de un círulo de pantalla tuviera las mismas coordenadas y pudiera caer en el mismo punto de una textura y si ese punto era blanco, crear una línea de fuga desde el centro de la pantalla hacia fuera. No conseguí este efecto, sino que la textura fuera proyectada de cierta manera, que no me servía directamente para lo que quería, pero si es un paso que combinados con otros lo ha hecho.



Y no conseguí hacerlo en el tiempo que tenía de forma procedural por carencias matemáticas. No soy capaz de enfrentarme a este problema y sacarme de la chistera la forma de hacerlo, con investigación si podría haberlo hecho, con tiempo. Y es un problema de que me fallan las matemáticas. Me voy a salir un poco de la temática del blog para hablar de educación, si no os interesa podéis pasar dos párrafos, pero a lo mejor estos son más útiles. Seguramente mis conocimientos matemáticos estén por encima de la media. He hecho el bachillerato por la rama de matemáticas difíciles, una ingeniería donde he tenido 4 asignaturas que directamente se llamaban “matemáticas algo” y otras 5 o 6 donde el contenido matemático era primordial. Y después en el máster he entrado en profundidad en las matemáticas más relacionadas con los gráficos y las simulaciones físicas. Y aún así me siento inseguro al enfrentarme a problemas que conlleven soluciones matemáticas. Personalmente he tenido una relación de amor-odio con este campo, y seguramente no ver la utilidad lleva a que no se te fijen tanto los conocimientos, y es un hándicap que acepto y me estoy esforzando por superar.



Pero si creo que es importante para quien lea esto con interés por los videojuegos y esté a tiempo que se de cuenta de la aplicación de las matemáticas al campo. No digo que os pongáis a estudiar matemáticas a lo loco, sino que sepáis cada cosa que aprendáis donde se aplica, para qué te va a servir a ti en concreto. Comenzando por cosas sencillas, sumar sirve para mover, mover personajes u objetos. Multiplicar y dividir para cambiar el tamaño a las cosas. Los senos y cosenos para hacer giros. Las matrices para poder aunar todo lo anterior sin volverte loco. La interpolación me parece muy útil para hacer caminos como ya he contado en alguna entrada. Y así con la mayoría de cosas que aprendemos desde parbulitos. El problema es que te obligan a aprender herramientas en un entorno abstracto. Resuelves ecuaciones de varias variables porque si. Llegas a un examen y te ponen “resuelva usted la siguiente ecuación: “ y una ristra de letras y números. ¿Y eso que mierdas es? ¿para qué me sirve eso? Estoy harto de aprenderme de memoria formulas y técnicas. Si eso está al alcance de la mano literalmente, buscando con el móvil en menos de 1 minuto encuentras cualquier fórmula o un ejemplo de como aplicar cualquier técnica. A mi me gustarían que me enseñasen ante un problema real, cómo saber por donde meterle mano, por donde tirar. Una vez que sabes eso, la fórmula es buscarla y aplicar un sistema es práctica. Justo a los pocos días de presentar esta práctica y encontrarme con ese problema de enfrentarme al reto y no saber qué armas usar de entre todos esos años de aprendizaje matemático, asistí a una conferencia de mi profesor Miguel Ángel Otaduy donde explicaba de una forma mucho más sencilla que como lo hago yo esta idea de que las matemáticas se estaban explicando mal, muy mecanizadas y sin saber para qué. Eso me ayudó mucho a asentar estas ideas, así que aunque todo esto lo digo por convencimiento propio, en parte mis ideas vienen inculcadas por él.



Volviendo al efecto, descartada la forma directa procedural recurrí a los efectos de post-proceso. Conseguir que puntos se transformen en líneas por la velocidad es bastante sencillo gracias al motion blur. La idea es tener una textura de un campo de estrellas en el túnel, y que en cada frame no se borre y se dibujen en la nueva posición, con lo que veríamos como se mueven las estrellas, sino que se vaya pintando encima, así lo que vemos es la línea que compone la trayectoria de cada estrella. Y así es, lo malo es que al ser un fondo completamente negro, los puntos blancos pierden color enseguida y quedaban unas líneas grises que tenía miedo ni se vieran con el proyector en la presentación que debía hacer.



Así que también he añadido un efecto para controlar el contraste y poder corregir de nuevo esos grises a blancos. Aún así no se podían ajustar bien los dos filtros para conseguir líneas del todo. Si hay efecto de velocidad, pero no llegan a ser líneas puras.



Pero la mayor gracia del efecto de salto al hiperespacio es precisamente el salto, el momento en que las estrellas dejan de ser puntos y pasan a ser líneas. Y si tenía estos efectos constantemente no se vería. Por eso pongo y quito el motion blur al azar con una animación rápida para poder tener un efecto similar al buscado.



Ya para acabar con el túnel, vuelvo a poner el vídeo de la presentación, donde podéis ver lo regulero de este efecto y lo decente de los dos anteriores. 



No hay comentarios :

Publicar un comentario