Experimento Blender: Como diseñar personajes "rápidamente"

Hoy quiero actualizar con un "tutorial/experimento" que espero editar y completar con imágenes más adelante a medida que lo pruebe. Se trata de la creación de personajes 3D (humanos)  en blender para un videojuego.

El proceso de creación de un personaje es bastante largo y tedioso y se compone de varios pasos desde modelar o hacer la malla o forma básica del personaje hasta pintarlo, añadirle esqueleto y animarlo. Todo este proceso puede llevarte bastante tiempo, sobre todo si no eres un profesional y lo haces como hobby.

WARNING: Este proceso, en principio no está descrito en detalle ni esta orientado como un tutorial si no te sabes manejar con blender. En cualquier caso si ya tienes alguna noción sobre blender, puede que te sea de ayuda.

Empezemos, la idea es obtener una malla de relativamente pocos polígonos con la mayor definición posible. 

Paso 1: Malla high-poly

Necesitaremos una malla high-poly con mucho detalle para extraer el mapa de normales (luego explicaré qué es esto) y otra malla low-poly con menos detalle que será la que usaremos ingame.

En este caso empezaremos usando el programa MakeHuman. Este programa es un software para diseñar personajes 3D a partir de ciertos datos tales como la edad sexo facciones etc. Es un programa muy simple de usar y con el que crearemos un personaje con mucho detalle jugando con los parámetros que nos dan.

Una vez obtenido el diseño básico que queremos exportamos desde MakeHuman a blender nuestro modelo.

Paso 2: Modificando el diseño

Debido a que MakeHuman no dispone de un sistema para poner ningún tipo de ropa a los personajes, estos estarán completamente desnudos, y a menos que quieras que corran por el juego como vinieron a este mundo... habrá que modelar las partes de ropa que queramos hacer. De nuevo 2 opciones:
a) Modelar la ropa que queramos por encima de la malla o en la propia malla.
b) Usar el modo para esculpir que ofrece blender para diseñar con ello la ropa.

Paso 3: Malla low-poly

Ahora que tenemos nuestro diseño exportado a blender y con ropa, vamos a necesitar una malla básica low-poly para nuestro personaje, la cual podemos conseguir:
a) Modelando una malla por encima del personaje high-poly (no hace falta entrar en detalles, algo que no lleve  mas de 5~10 min.
b) Obteniendo un modelo de malla básica desde Internet y hacerle algunas modificaciones simples para se adapte por fuera de la malla high-poly, como si de un "traje de aire" se tratase.

Y aquí es donde está la magia, usamos el modificador shrink wrap para hacer que la malla low-poly se adapte al modelo creado en MakeHuman, con lo que conseguiremos una malla de bajo detalle, pero con la forma que queremos.

Nota: Es probable que tengamos que hacer varios retoques para que esta malla quede bien.

Paso 4: Añadiendo detalle

En vista de que la malla a usar en ingame es low-poly, no tendrá demasiados detalles definidos, así que tendremos que pintarla si no queremos que parezca una estatua.
1) Creamos un desplegado UV de nuestra malla low-poly, necesario para poder aplicarle las texturas que necesitemos.
2) Después debemos crear una textura para el color, podemos elegir o bien utilizando el modo de pintor en blender normal y corriente, o utilizando la pintura por proyección.

Una vez el diseño tiene una textura básica, necesitamos añadirle detalle. Esto se consigue mediante los mapas de normales, mediante los cuales podemos dar la sensación de que una cara plana tiene relieve. Para conseguir esto, necesitamos de nuevo nuestro modelo high-poly.
1) Creamos una imagen nueva desde blender para "imprimir" en ella este map.
2) Seleccionamos el modelo high-poly, shift + right click, modelo low-poly. Vamos a opciones de renderizado y en lugar de renderizar un frame normal, vamos a la opción Bake
3) En este menú elegimos Normals y el espacio Tangent.

Al darle botón bake veremos como el mapa de normales se despliega en la imagen que hemos creado. Ahora solo tememos que aplicar este mapa de normales en el menú de materiales a nuestro modelo low-poly.