[Blender] Modding con Blender

modding con Blender
Por isgren

ejercicio. Capturar malla con 3d ripper DX y mapear con Blender.

Sitio de descarga de los programas utilizados:
3d ripper dx: http://www.dep-shadows.com/hax/3dripperdx.htm Blender: http://www.blender.org DirectX SDK: http://www.Microsoft.com/downloads/details.aspx?Familyid=5493f76a-6d37 478d-ba17-28b1ca4865a&displaylang=en.
Con 3d ripper DX podremos realizar una captura en formato Wavefront (.obj) de las mallas 3d que estemos visualizando en pantalla con programas que utilicen DirectX 8 o 9. Si se tratara de software que utiliza OpenGL para renderizar deberíamos utilizar otro programa para realizar la captura como glintercept (http://glintercept, nutty.org/), voy a extraer un modelo que se encuentra en formato DirectX (.x), mostrándolo en pantalla con el visualizador que incorpora la SDK de DirectX. Para ello, abrimos 3d ripper DX y lo configuramos especificando la ruta en la que se encuentra dicho visualizador, también marcamos la opción alos capture todo Wavefront. Obj (es decir, también capturar a Wavefront. Obj), y finalmente pulsamos en botón launch (es decir, lanzar).

En algunas ocasiones el importador de Blender para el formato 3d DirectX (.x) no funciona. En este ejemplo he capturado un modelo 3d que incluye los model pack del frames por segundo creator versión XP. Aunque los archivos se encuentran en formato.x, Blender nos lo puede importar directamente. He utilizado el visualizador que incorpora la SDK de DirectX (necesario en muchos motores de juego) para realizar una captura con 3d ripper DX en formato Wavefront. Obj, que sí puede importar Blender.
imágenes descriptivas del proceso:

En este caso el modelo 3d incluye animaciones, por esta razón debemos pulsar la tecla pausa antes de abrir el archivo, para que se detenga en el primer frame.

Desde Blender, lo primero que hacemos es eliminar el cubo de bienvenida.

A continuación, importamos el archivo (*.obj) recién creado.

Antes de mapear debemos realizar ciertos ajustes. En primer lugar vemos que el centro de la malla se encuentra fuera.

Desde modo objeto y con la malla seleccionada, ejecutamos la orden del menú object->transform->center new,

Situamos la malla en la posición 0,0,0 (pulsar n para abrir el formulario).

Cambiamos a vista front, donde apreciamos que la orientación de la malla esta invertida.

Ejecutamos la orden del menú object->mirror->y local.

Cambiamos los nombres de la malla, del me y del ob (1) y eliminamos los materiales creados durante la captura (2).

Creamos un nuevo material y marcamos la opción Texface para indicar que se trata de una malla mapeada.

Cambiamos a modo edición, y seleccionamos toda la malla pulsando a. Seguidamente, ejecutamos la orden del menú Mesh->vértices->remove doubles.

Esta última sentencia es importante, ya que nos permite estirar la malla y recalcular las normals, si fuera necesario, correctamente.

Seguimos con toda la malla seleccionada. En este caso las proporciones de la malla no son las correctas, vamos a darle más volumen.

Una vez proporcionado el modelo, configuramos una de las ventanas de Blender a UV/Image Editor. Al encontrarse toda la malla seleccionada, vemos que durante la captura el 3d ripper DX también ha guardado el mapeado.

desde la ventana del UV/Image Editor podemos abrir la textura original.

Observando el resultado, vemos que existen caras en la malla que no se visualizan. Debemos recalcular las normals.

Este sería el resultado.

para seguir con el ejercicio vamos a eliminar el mapeado, utilizando la orden reset desde el menú UV calculation (pulsa u).

Para estirar la malla voy a seleccionar las diferentes zonas de cuerpo (cabeza, tórax, piernas), con la siguiente configuración en la barra de la ventana 3d view.

La opción más a la derecha de la barra , es muy importante, ya que nos permite seleccionar sólo las caras que estamos viendo. Si no aplicaramos esta opción, la selección sería prácticamente inaplicable, ya que es fácil seleccionar las caras situadas en la otra parte del modelo. Sólo debemos desactivar esta opción cuando queremos hacer selecciones generalizadas con la orden border select (pulsar b).

Para estirar la malla se suele aplicar la orden marque seam (se vera a continuación) que indica a Blender por dónde debe dividir o separar la malla para ser estirada durante el mapeado, otra consideración a tener en cuenta, es la imagen que se muestra a continuación en la ventana del UV/Image Editor, que nos indicara que existe alguna cara sin mapear en la malla.

Comenzaré a estirar la malla por la cabeza. Aplicaré marque seam seleccionando las aristas situadas en la parte posterior hasta llegar a la frente (debemos seleccionar modo selección de aristas).

A continuación, desde modo selección de caras y pulsando dos veces b (selección circular), selecciono las caras de la malla que formaran parte de la textura de la cabeza, utilizo la orden border select en su forma circular, porque es más precisa que la selección normal rectangular, y porque también permite deseleccionar con el botón central del ratón. Para finalizar la selección con esta herramienta pulsar bdr (botón derecho del ratón). Para desplazarnos utiliza el teclado numérico 4-6, 8-2, una vez seleccionadas las caras, creamos un vertex group para facilitar su selección posteriormente.

Ya podemos estirar la malla utilizando la opción unwrap desde el menú uv calculation (pulsar u).

En la ventana del UV/Image Editor ya podemos escalar y desplazar el mapeado de la zona seleccionada.

Existen zonas de la malla que se repiten, como piernas y brazos, en las cuales voy a compartir la misma textura. Para hacer esto voy a rotar 180 grados uno de cada elemento, brazo o pierna, pulsando dos veces la tecla r y moviendo el ratón hasta alcanzar un valor aproximado en la rotación 0-180.

seguimos moviendo, escalando o rotando hasta hacer coincidir ambos mapeados.

Al finalizar el mapeado, seleccionamos toda la malla desde la ventana 3d view, y apreciamos que ya no aparece el triángulo que abarca toda la ventana del UV/Image Editor, lo cual indica que todas las caras de la malla se encuentran mapeadas.

Ahora crearemos una imagen con el mapeado de la malla, para ser utilizada desde un editor gráfico, aplicando en script save UV face Layout.

marcamos la opción all Faces.

Desde el editor gráfico, en este caso Paint. Net, abrimos la imagen anterior y eliminamos el fondo blanco con el selector de color llamado varita mágica manteniendo pulsada la tecla mayúsculas+bir, y a continuación la tecla suprimir.

creamos una nueva capa. Y la situamos debajo de la capa fondo.

Abrimos la imagen que contiene la captura de película donde seleccionaremos y copiaremos la textura que será utilizada en el mapeado.

seleccionamos en las vistas en miniatura la imagen que contiene el mapeado con el bir.

Antes de seguir recordaré las funciones básicas para manipular la imagen:
bir sobre el centro de la imagen para desplazar.

Control +rueda ratón, para hacer zoom.

Sobre agarraderas:
bir, para dimensionar.

Mayúsculas+bir, para dimensionar proporcionalmente.

Mayúsculas+bdr, para rotar 15 grados.

Control +bdr, para rotar con precisión.

Pegamos la imagen pulsando Control + v, automáticamente queda seleccionado la herramienta mover píxeles seleccionados, y aparecen unas agarraderas alrededor de la imagen copiada para poder ser manipulada con el bir junto alguna tecla.

Una vez conseguida la posición correcta, debemos retocar la imagen para crear su parte simétrica. Para esto voy a eliminar la zona de la imagen que sobrepasa el eje central del mapeado, para que después de copiar y voltear la imagen resultante, estas encajen.

Seleccionamos la imagen retocada y después de copiar y pegar (Control + c y Control + v sucesivamente), manipulamos la agarradera que muestra la imagen desplazándola completamente hacia el lado opuesto, consiguiendo voltear horizontalmente la imagen.

Para seleccionar la textura de la cara utilizaré el modo de selección circular.

La copiaremos en una nueva capa, para facilitar posteriores modificaciones.

Utilizamos la goma de borrar sobre la selección para eliminar las zonas de la textura no necesarias.

Este sería el aspecto de la imagen con todas las texturas. Vemos las diferencias de tonalidades entre los tejidos y la piel. Otra herramienta utilizada durante el proceso ha sido tampón de clonar, que se encuentra señalada en la imagen del menú herramientas, utilizada para repetir zonas de textura sin perder calidad de imagen.

Las herramientas para manipular el brillo y el contraste de las texturas se encuentra en el menú ajustes.

algunas imágenes de las correcciones realizadas.

Antes de guardar la imagen final para el mapeado, eliminamos la capa donde se encuentra estirada la malla.

Este sería el resultado en Blender.

Vamos a modificar manualmente el mapeado de la cabeza. Después de haber modificado la distribución de los vértices del mapeado de la cabeza sin éxito, he aplicado dos nuevas proyecciones utilizando la opción del menú UV calculantion llamada Project from view. Una proyección de la cara, y otra proyección lateral que abarca ambos lados de la cabeza.

también he realizado algunos ajustes más a la imagen utilizada como mapa.

Para realizar esta selección he utilizado la herramienta selección de lazo, manteniendo pulsada la tecla control para realizar selecciones múltiples.

este sería el resultado final.

Por isgren
Aportado en este hilo.

Ver más sobre el tema y los comentarios en el foro