jueves, 19 de enero de 2012

Scripting en 3ds max

Ya soy un experto en 3d max, por qué debería aprender programación?


En realidad no todos los artistas llegan a necesitar hacer scripts, pero es una valiosa herramienta que os puede volver más productivo. Supongamos que necesitamos sacar renders de todos los personajes de un juego para una presentación,  la forma más fácil es crear o bajar un script que permita sacar renders en las cuatro vistas estándar de todos los modelos en una carpeta. Otros casos en los que puede ser de utilidad:

  • Automatizar animaciones sencillas que puedan mejorar la apariencia de un proyecto, como por ejemplo: una pared de ladrillos que se vaya construyendo así misma.
  • Realizar riggings complicados de manera automática.
  • Cambiar todos los materiales de una escena de v-ray a mental-ray o viceversa.
  • Mover los pivotes de muchos objetos a la vez.
  • Automatizar tareas repetitivas en animación, modelado, físicas, etc.
  • Crear GUIs y herramientas personalizadas.

Basta de parloteo,  en donde escribo los comandos?


Bueno, para crear un script se pueden usar varias ventanas dentro de 3D Max, la forma más sencilla es escribir un comando en la esquina inferior izquierda de la interfaz por defecto:


En la parte rosa se escribe un comando y se ve el resultado de este en el área blanca, por cierto, se puede usar como una calculadora improvisada. También se puede escribir un comando más útil como por ejemplo:

Box width:5 length:5 height:5

Esto creará una caja con los parámetros especificados en las coordenadas (0,0,0)

Hay alguna forma más fácil de averiguar cuales son los comandos?

El editor Listener Window permite la grabación de Macros, es decir que las acciones que se realicen mediante la interfaz gráfica se transcribirán como código en esta ventana.



Para activar la grabación de macros hay que abrir la Listener Window e ir al menú Macrorecorder  y activar la opción EnableAl activarlo se generaran comandos maxscript cuando se ejecuten acciones en la GUI, por ejemplo al crear varias primitivas se verá algo como esto:



La ventana tiene dos secciones, en el área rosa se ingresan los comandos y los resultados aparecen en el área blanca, si aparecen mensajes en rojo quiere decir que hubo un error en los comandos ingresados.


Un pequeño ejemplo: crear una caja y moverla


Si se va crear un script con varias líneas es recomendable usar el Editor Window en vez del Listener Window, se puede acceder a este haciendo clic derecho, sobre la zona de código y seleccionando Editor Window, una vez abierta esta ventana escribir los siguientes comandos:



La explicación del script anterior va a continuación:

  • Las líneas que comienzan con los caracteres "--" son llamados comentarios y no hacen nada, simplemente sirven para documentar el código.
  • Cuando se crea la caja se guarda una referencia a esta en una variable llamada b. Las variables son como cajones que guardan información hasta cuando uno la necesite.
  • La línea siguiente cambia la posición de la caja, para especificar la posición hay que especificar las coordenadas entre paréntesis cuadrados así [1, 2, 3], en donde las posiciones hacen referencia a las coordenadas x, y, z.
  • Algo parecido sucede con la escala, la cual también se especifica usando paréntesis cuadrados.
Pero eso lo puedo hacer sin scripting

El ejemplo anterior puede ser replicado fácilmente usando otras herramientas, pero que pasaría si no fuera una sola pirámide, sino cientos, y además tuvieran que ser animadas una después de otra, es un ejemplo un poco extremo, pero ilustra el punto.
Algún ejemplo más útil que me pueda convencer de que esto sirve para algo?

Supongamos que tenemos que crear una pirámide azteca algo abstracta, se puede usar el script siguiente para cumplir el propósito:

La explicación del código va así, el comando  for sirve para repetir los comandos que se ingresen entre los paréntesis, en este caso va a repetir la creación de una caja 10 veces, la variable i (o cualquiera que se especifique ) sirve para saber dentro del código en que paso va la repetición, en este caso sirve para variar el ancho de cada piso de la pirámide. 
Me gusto, ahora en donde donde continuo
Existen algunos conceptos fundamentales en programación como son las variables, las estructuras de control (if-else, while, for), con esos conceptos básicos se pueden crear herramientas interesantes.
Aunque para aprovechar el poder de los scripts no es necesario crearlos uno mismo, existen muchos desarrolladores que los crean y los obsequian a la comunidad sin esperar nada a cambio, uno de los sitios en donde se encuentra gran cantidad de scripts es:
  • ScriptSpot : es un gran repositorio de scripts para 3ds max, se encuentra de todo.
  • Cg Tuts (en inglés): en este se encuentran algunos tutoriales interesantes de maxscript, MEL (Maya embedded language) y Python

sábado, 18 de octubre de 2008

Mini-Reel 2008

Mi mini-reel a youtube.



Visitad mi canal de youtube en http://www.youtube.com/venomneko

La magia de los videojuegos: proceso de transferencia de detalle del modelo en alta al modelo en baja

En los videojuegos modernos, como desde la época de Half-Life 2 se ha usado una técnica llamada normal mapping, para que un modelo de bajo número de polígonos alrededor de miles parezca tener bastante detalle como si tuviera millones de polígonos. La idea es construir un modelo superdetallado en Mudbox, ZBrush o Sculptris el cual puede tener más de quince millones de polígonos, esta información se transfiere mediante una textura especial llamada Normal Map al modelo de bajos polígonos. En el caso del Armadillo 3D con la ayuda del normal map queda así:






Armadillo 3D: Comparación Lowpoly vs Highpoly

En verde: versión Low antes de Mudbox, en gris, después de Mudbox

Detallado del Armadillo 3D

Cuando ya se le ha dado la forma básica en Max, se pasa a hacer detalles como arrugas, músculos, y ropa en Mudbox (o Zbrush), en el cual mediante una tableta con lápiz digital se dibujan estos detalles de una forma similar a como lo haría un escultor. Luego del proceso el personaje queda así.





Armadillo 3D: creación de un modelo base para videojuego



Paso 0: Antes de comenzar a modelar siempre es bueno bosquejar un poco como va a quedar la apariencia final






















Paso 1:

Con un spline se trata de crear un bosquejo inicial para tener las proporciones de como quedara el modelo, este se ve algo así
















Paso 2: a partir de una caja se definen los los grandes volumenes usando extrusiones,  subdivisiones y la función connect de 3ds max.












Paso 3:
luego se agregan más detalles como los dedos de las manos, los pies, la caparazón, se detalla más la cabeza, ...















































Ya comienza a tener más forma:

Animación el Chibchabot

Luego de semanas de no trabajarle al Chibchabot, decidí retomarlo y finalizarlo. No echarle tanta cabeza al proceso de transformación, sino usar los recursos del cine (agrandar cosas, desaparecer cosas, solo hacer lo que sale en cámara). El producto final quedo así:
Video en Youtube.com



Será queda para un juego el concepto?