viernes, 27 de febrero de 2015

Introducción a Mecanim

Estoy empezando a usar Mecanim como sistema de animación de movimiento. Y hoy voy a contar alguna de sus bondades principales. Aunque habrá que empezar por explicar un poco ¿qué es mecanim?





Hay algo de confusión sobre esto, y muchos hemos pensado que era lo que no era. Mecanim es la respuesta de Unity ante la baja calidad de las animaciones de los juegos hecho con Unity 3. Entonces, ¿se tienen mejores animaciones con Mecanim? No, las animaciones serán las mismas pero se usarán mejor y será más sencillo hacer cosas más complejas. Mecanim no es un sistema para crear animaciones, sino para usarlas. Tendrás que darle las animaciones hechas de forma externa exactamente igual que hasta ahora. La novedad es que para usarlas en lugar de hacer todo por código harás mucho con un editor visual y con muchas más opciones y potencia.




miércoles, 25 de febrero de 2015

Crítica a mi nivel de Portal 2

Hace unas semanas me pegué con el editor de cámaras de Portal 2 y publiqué una. No pude realizar todas las ideas que tenía por limitaciones del editor, conseguí transformar algunas en algo parecido y otras se cayeron, al final publiqué y quedé medio satisfecho con el resultado. Ahora un compañero de máster la ha jugado y colgado su gameplay comentado en youtube. Eso me ha servido, además de como divertimento, para ver ciertas cosas de la cámara desde otro punto de vista, cosas que hice mal y otras que si están funcionando bien. En este artículo voy a analizar lo bueno y lo malo desde el punto de vista del diseño de niveles. Me interesa mucho esa materia, y una de las mejores formas de aprender es ser crítico con lo que vas haciendo.



Si antes de ver mis comentarios lo quieres comprobar por ti mismo, esta es la cámara: http://steamcommunity.com/sharedfiles/filedetails/?id=386619576


lunes, 23 de febrero de 2015

Problemas al exportar de 3DS max a Unity3D

En entradas recientes he hablado sobre cómo poner la espada al héroe mediante una restricción, y en cómo hice cambios tardíos en el modelo con bastante suerte. Una vez más el demonio está en los detalles y he tenido problemas con todo esto cuando he tenido que pasar a las siguiente etapas.



Modelo importado en Unity3d


No había conseguido que me funcionase mi modelo con animaciones ya hechas de las que hay en el Asset Store de Unity, así que comencé a hacer mi propia animación de correr en el 3DS max, poniendo al lado otro modelo corriendo del Asset Store y copíandole un poco las poses, adaptado a mi personaje.



Al tener al personaje corriendo, giré la cámara alrededor buscando que todo fuera bien, y algunas veces veía alguna cosa rara. Pero era muy sutil, si lo miraba frame a frame durante solo un frame salía un triángulo raro por algún lado, que se veía solo desde cierto ángulo. Y todo venía por esas partes interiores duplicadas que puse para evitar que el faldón y las mangas fueran transparentes por dentro. Y claro, si un trozo de estos se sale de donde debe, como está mirando hacia el lado inverso, se va a ver transparente, salvo en algún ángulo extraño, y justo eso es lo que estaba viendo. La solución es pegar (weld) los vértices internos y externos en el borde. Algo que de todas maneras debería haber hecho en su momento al crear esos nuevos telares.




viernes, 20 de febrero de 2015

Escenario del Parque Güell

Galeria inspirada en Gaudi
Llevaba desde verano queriendo hacer escenarios con inspirados en Gaudí. Al tener los exteriores como terreno, me tenía que esperar a hacer interiores. Pero tras la decisión de hacer los exteriores modelados, he podido comenzar ya. Y para muestra un botón.

Quería usar una parte del Parque Güell. Tiene una galería donde la pared está inclinada, enfrentada a una columnas con el mismo ángulo. Visto a lo largo de la galería tiene un poco forma de oreja. Así que aprovechando la práctica creando formas con NURBS (realmente comencé a usar esas formas para poder hacer cosas así) usé la misma técnica que expliqué en el anterior artículo.

Parque Güell


miércoles, 18 de febrero de 2015

Multimaterial con mapeados UVW separados

Me interesa poder crear los escenarios como una o varias piezas que pueda escalar y colocar en Unity. Y cada una de esas piezas puede estar formada por varios objetos. En el caso que vimos de la primera parte de la primera pantalla, el suelo, los obstáculos y las paredes. Y poder elegir libremente el material de cada uno de estos elementos por separado. Incluso el mapeado de texturas. Y de eso va este artículo.

Dando ids de material

Lo primero es dividir el objeto dando identificadores de material a cada zona que queramos. Para ello tenemos que tener todo como un solo objeto y en editable poly. Una vez que elegimos un polígono (o varios) o un subelemento podemos darle un id de material. Yo he dividido el objeto en 6. El primero la parte no visible del cubo que hace de suelo (lados y parte de abajo) para ponerla en negro. Después el plano que hace de suelo. Estos con selección por polígonos. Ya mediante selección por elementos doy identificadores al NURBS de las paredes y a los 3 obstáculos. Podría haber dado el mismo id a los 3 obstáculos, ya que seguramente lleven el mismo material, pero he preferido separarlos para poder elegir la proyección de la textura de cada uno por separado.

Mapeado cilíndrico

lunes, 16 de febrero de 2015

Uso de NURBS para el modelado 3D

Primera parte del nivel usando superficie NURBS

Finalmente me he lanzado a crear los escenarios modelados, en lugar de usar terrenos. Una de las ventajas de esto es que puedo hacer formas más complejas, doble nivel de suelo, paredes verticales, zonas con techo, y curvas, muchas curvas que en terrenos es complicado de conseguir.

Necesito esas curvas porque quiero usar formas inspiradas en Gaudí. Lo primero que he intentado es tener unas paredes curvas en la primera parte de la primera pantalla, y eso me ha permitido aprender a usar NURBS para el modelado 3D.

En la primera parte las paredes tienen una doble curvatura, una en su borde superior, que se hará más bajo o más algo dependiendo de la zona y con curva suave. Y la segunda sobre el plano, ya que esta habitación tiene silueta de balón de rugby o de barca, más ancha el medio y acabando en punta. Al tener dos curvaturas es algo más complicado que solo crear un plano NURBS a medida.

Curva NURBS CV

viernes, 13 de febrero de 2015

Música de Temet Nosce I

Un parte muy importante en un juego, para que transmita emociones y de una mayor sensación de inmersión es el sonido, en particular la música.



Los que estamos empezando en esto, haciendo pruebas más que otra cosa, aprendiendo, solemos cometer la torpeza de dar poca importancia al sonido y la música. Al final nos encargamos de la jugabilidad, los gráficos, etc y algunas veces llegan cosas sin sonido, o con sonidos tirados a última hora de mala manera. Desde luego no podemos permitirnos contratar un músico y dar una banda sonora hecha a medida. Así que solemos recurrir a bancos de música libre, sacar sonidos de donde podemos o cosas peores.



Caigo en ese mal en cuanto a los sonidos. Pero sí he dedicado algo de tiempo y técnica a crear buena ambientación con la música. No recuerdo como fue el orden de ideas, si primero tuve la canción y luego la técnica a usar, o al revés. El caso es que tenía esa idea de que la música se adaptase al estado de vida del protagonista. Igual que las distorsiones en la pantalla se hacen mayores cuanto más jodido de vida estás, que la música también se hiciera más profunda, distorsionada, como de sueño.




lunes, 9 de febrero de 2015

Cambios tardíos en el modelo

He sufrido pequeñas pesadillas con final feliz. En varias ocasiones me ha pasado que me he dado cuenta de un fallo de modelado con el modelo en una fase muy posterior, el rigging hecho, incluso con animaciones funcionando. Según lo aprendido tradicionalmente esto es muerte y destrucción, seguramente te toque volver a repetir todos los procesos posteriores al modelado, incluyendo los mapas uv, texturizado, rigging y animación. He conseguido alterar varias cosas sin tener que volver a pasar por todo eso, voy a mostrar dos ejemplos.

Backface Cull

El primero ha ocurrido cuando he empezado a probar el personaje en Unity, y entonces me doy cuenta de que el faldón visto desde dentro no se dibuja, o si miras dentro de la manga, es transparente. En 3DS max no me ocurría, y es que tenía activado que dibujase los polígonos por los dos lados. Existe la posibilidad de activar esto en Unity, pero si lo haces es para toda la escena. El impacto en rendimiento es brutal. No solo eso sino que la iluminación comienza a fallar, y se ven efectos raros. No parece buena solución.


viernes, 6 de febrero de 2015

Poner la espada al personaje

Esta entrada va a ser más concisa que la media del blog. Trata sobre cómo poner una espada a un personaje y se podría aplicar a cualquier objeto que se agarre o su movimiento dependa de otro.

En su momento me planteé poner huesos a la espada, es un concepto un poco raro, pero he visto poner huesos a la capa de un héroe para animar su movimiento al caer, por ejemplo. Pero en este caso no funcionaría. Los huesos son más para deformar algo, darle movimiento interno, y la espada no se va a deformar, no tiene movimiento externo, siempre se mueve como una pieza completa.

Y realmente lo que quiero es no tener que animar el movimiento de la espada, en mi juego el protagonista va a tener siempre la espada cogida de la mano, así que con que la espada se mueva con la mano me sirve. Y eso es lo que quiero, animar el brazo del protagonista y que la espada se mueva como si de verdad estuviera agarrada. Para ello solo hay que poner una restricción de tipo enlace (Link constraint). Así enlazamos el movimiento de la espada al del hueso de la palma de la mano. ¡Y ya está! En el vídeo muestro como ahora al mover un hueso del brazo la espada se mueve junto a la mano y siempre queda bien agarrada.



¿os habéis fijado que mi personaje es zurdo?

martes, 3 de febrero de 2015

Simulación de telas

En las últimas semanas parecía que todo me salía bien, que todo eran alegrías. Pues hoy toca aceptar una derrota, algo que no he conseguido hacer funcionar y que tendré que hacer de otra manera.

Piernas atraviesan faldón

Un compañero de máster me comentó de pasada que podía simular el abrigo del personaje en 3ds max y así no tendría que animarlo a mano. Pero estaba ya casi decidido a quitar el abrigo. El problema vino cuando ya le puse los huesos al modelo, y probé una animación de andar. Muchas cosas no funcionaban bien, como me esperaba, porque hay que ajustar el weighting de los huesos. Pero me llamó mucho la atención el movimiento de la ¿camisa larga?, ¿faldón?, ¿vestido? (la cosa morada) del protagonista. Las piernas lo atravesaban a veces al andar, eso tenía pinta de que no se arreglaba con el pesado de huesos, sino que iba a necesitar retocar las animaciones de esa parte de ropa casi frame a frame.

Y ahí se me encendió la bombilla de intentar usar simulación. Llegué a tutoriales por youtube y parecía sencillo, vi alguno donde se creaba un modelo con 4 cilindros, creaba cierta ropa con un plano y ponía a simular y el resultado era muy bueno, cómo mola, resultado muy bueno con poco trabajo, la parte del tutorial de la simulación física de telas apenas duraba 2 minutos.


lunes, 2 de febrero de 2015

Cambio de gravedad con SuperCharacterController

En la entrada anterior presentaba el SuperCharacterController, y los cambios que había hecho, y en esta me reservo el cambio principal, el control de gravedad, vuelvo a poner el vídeo para que se vea de qué hablo.



Siempre tenía la duda de en el caso de tener una cámara libre se aplicase el cambio de gravedad hacia donde cambiaría. Es decir, si damos al botón de cambiar la gravedad hacia la izquierda, hacia donde debería cambiar la gravedad, ¿según el vector left del personaje?, ¿el vector left de la cámara?. Si se hiciera con el del personaje sería un lío, por ejemplo si el personaje está mirando hacia la pantalla (le vemos la cara) y cambiamos la gravedad a su izquierda, en realidad la cambiamos a nuestra derecha. ¿queríamos hacer eso? Seguramente no. Así que para facilidad del usuario, me parece lógico que se cambie siempre según su punto de vista. Ahora bien, al tener una cámara libre, podríamos estar mirando en cualquier dirección, eso significaría poder poner la gravedad en cualquier dirección, completa libertad, y cosas un poco raras. ¿Gravedad mirando hacia una esquina?

Encontré una solución haciendo que la gravedad se ajuste al eje más próximo. Es decir, imaginemos que el personaje está moviéndose en diagonal, pero lo más cercano es el eje +z, entonces al girar la gravedad a la izquierda, la gravedad pasará de -y a -x. Es un sistema que funciona bastante bien en un escenario como el de la demo, donde las paredes son rectas y alineadas con los ejes. Al tener una cámara sobre raíles siempre puedo hacerlo respecto a la cámara, pero si sigo haciéndolo ajustado a los ejes y hago que los escenarios también sean ajustados a los ejes intentando que no se note mucho que todo es muy cuadradote. La ventaja es que así puedo realizar puzles y retos de forma sencilla y fácil de probar y evito muchos posibles bugs y tampoco vuelvo loco al jugador.