17 años en Internet

12 febrero 2021

[Blender] [WIP] Ankha, sesiones 8, 9 y 10

 

    En los últimos días le he dedicado a Ankha otras sesiones de unas dos horas. No obstante, me he limitado a aplicarle optimizaciones y a pulirle las animaciones. No sé si alguna vez habéis hecho optimizaciones en Blender, pero es un trabajo arduo y muy ingrato. Básicamente requiere de muchas pruebas de ensayo y error hasta que consigues un resultado satisfactorio.

    ¿Y era necesario hacer un trabajo tan pesado y poco gratificante? Pues yo creo que sí. Los que hayáis visto la animación de la séptima sesión (enlace), habréis notado seguramente que corría a menos de un frame por segundo… Y sin siquiera aplicarle las partículas de los pelos. Y claro, una cosa es modelar algo y que quede precioso, pero resulta poco práctico si tienes pensado reutilizar el modelo para hacer un videojuego: Tampoco es cuestión de que únicamente dicho modelo requiera de una RTX 2080 y además era muy consciente de que podía aplicar muchísimas optimizaciones.

    Por poneros un ejemplo, una vez aplicados los modificadores sólo el vestido de Ankha ocupaba más de 11.800 polígonos. Lo cual es una barbaridad para un videojuego a día de hoy. Quién sabe si para dentro de 10 años será algo normal, pero a día de hoy no es viable.



    Por suerte Blender tiene varias herramientas que te permiten reducir el número de polígonos, siendo los más útiles “Mesh > Clean up > Decimate geometry” y “Mesh > Clean Up > Merge by distance”. El primero es un simple “reductor” de vértices que hace lo que promete (simplificar el objeto) y está bastante bien, puesto que te deja decidir una ratio y forzar la simetría; Mientras que el segundo fusiona vértices por cercanía. Cuando usamos prendas hay que tener cuidado con este último, porque si pones un rango muy alto puedes acabar fusionando ambos lados de la prenda (frontal con interior) y determinados motores dan problemas con el “backface culling” (si la normal de un polígono no apunta a la cámara, algunos engines ni lo dibujan).

    En mi caso opté por usar una mezcla de ambos, siendo especialmente agresivo en las caras del interior del vestido (las que la cámara justamente no puede ver). Aún así hay que intentar no pasarse de rosca con las caras interiores, porque si acabas con polígonos “deformes”, a Blender le costará más procesar el “cloth simulator” cuando relances el “Bake”. Y bueno, tampoco hay una norma escrita sobre cuantos polígonos debe de tener una prenda, pero básicamente mi consejo es que vayas haciendo muchas pruebas hasta que des con una cantidad de polígonos que haga que el modelo se parezca mínimamente al original y que no te penalice en el rendimiento.





Después de modificar un objeto que tenga un "cloth simulator", recuerda rehacerle un "Bake". 



    Otro eje de mejora estaba en el colgante. Cada minúscula campanita ocupaba unos 256 polígonos por si sola. Al haber 5, estamos hablando que sin contar el colgante, estaba usando más de 1280 polígonos sólo en las campanitas… Que encima son unos objetos de tamaño minúsculo en los que nadie se acabará fijando.




    Y bueno, siguiendo con este tipo de cambios conseguí hacer que la animación de “caminar” de Ankha pasara a unos 20-24 frames por segundo (sin aplicarle aún el sistema de partículas del pelo).

    Para la novena sesión me concentré en tres cosas:

  • Cambiarle el tamaño al personaje (que según blender medía unos 4 metros y lo re escalé à 1,76m)

  • Revisar el esqueleto de Ankha, suprimiéndole los huesos inútiles que me causaban problemas en la animación, revisando la posición de los existentes y añadiéndole “spring bones” en la cola.

  • Y jugué mucho con los “Weight Paint”, forzando posiciones para corregir deformaciones.

 





    Y en la décima sesión decidí ponerle "spring bones" en las orejas, para darles cierto efecto "rebote" en las animaciones y rehice por completo la animación de "caminar del personaje.




No hay comentarios:

Publicar un comentario

Si te ha gustado la entrada o consideras que algún dato es erróneo o símplemente deseas dar algún consejo, no dudes en dejar un comentario. Todo feedback es bienvenido siempre que sea respetuoso. También puedes contactarme vía Twitter @Hamster_ruso si lo consideras necesario.