Generalmente utilizo Zbrush, pero Mudbox en ocasiones, puede presentarse como buena alternativa, especialmente por ser gratuito (si eres propietario de Maya) y por estar disponible en Linux, sistema operativo presente en ¿todos? los VFX facilities.
Ya hemos hablado en numerosas ocasiones de como trabajar con UDIMs en diferentes software y para la realización de diferentes tareas (texturing, matte painting, re-projections,etc). Por supuesto, siempre trabajamos con UDIMs, y en algunas ocasiones, es posible que necesites no solo exportar UDIMs si no también, importarlos.

Un ejemplo muy común es crear fine displacement en Mudbox (explicaré como hacerlo en Zbrush otro día). Digamos que pintas un mapa de color con mucha resolución y con 16 bits de profundidad en Mari. No hay razón para no aprovechar esta información como punto de partida en tus displacement maps, y continuar a partir de ahí añadiendo detalle.

Exportar UDIMs desde Zbrush o Mudbox es tan sencillo como apretar un botón, pero importarlos quizás no sea tan evidente.

  • Antes de nada, este es el asset que necesito importar en Mudbox. En Mari tengo varios UDIMs listos para ser exportados.
  • En Mudbox podemos importar el asset como .obj
  • El siguiente paso es crear una capa de "paint" de al menos 16 bits, ya que se trata de un mapa de displacement.
  • Acto seguido voy a exportar este texture channel que acabo de crear, que obviamente esta vació, pero lo que me interesa ver es el naming convention que Mudbox utiliza para nombrar los UDIMs, ya que es distinto a Mari o Zbrush.
  • El siguiente paso, es volver a Mari y exportar las texturas, en caso de que no lo hubieras hecho antes.
  • Necesitamos renombrar las texturas exportadas desde Mari al naming convention de Mudbox. Como hemos exportado previamente las texturas vacías desde Mudbox, ya conocemos el naming convention.
  • Para hacerlo mas rápido, y no cometer errores, vamos a utilizar el script Maprenamer, creado por Jens Kafitz. Hay infinidad de scripts y herramientas que hacen tareas similares, basta con googlear un poco.
  • Descarga el script y colócalo en cualquier directorio. Desde ese directorio escribe "chmod +x maprename" para tener permiso para utilizar el script.
  • Desde el directorio donde has exportado las texturas de Mari escribe el siguiente comando.
  • "perl maprename -s [sourcefolder] [sourceconvention] [targetconvention] -nn [newname] -u -c -p"
  • Para una ayuda más detallada del script visita la pagina del autor.
  • Tras refrescar el listado de archivos, una carpeta se habrá creado llamada Mudbox, que contiene una copia de las texturas con el naming convention necesario para Mudbox.
  • De nuevo en Mudbox, basta con importar una nueva capa y seleccionar el primero de los UDIMs.

Proyectar footage, backplates o cualquier otro tipo de material fotográfico y/o pintado en Nuke, es probablemente una de las tareas mas comunes que podemos realizar en un estudio de efectos visuales. Compositores, texture artists, matte painters o paint artists, son generalmente los encargados de realizar este tipo de tareas. En algunas ocasiones, en lugar de simplemente proyectar los detalles que necesitemos en los renders, es preciso bakear el trabajo realizado en Nuke en las propias texturas de nuestros assets, y así, poder renderizar de nuevo sin necesidad de volver a pasar por Nuke. La mejor forma de realizar este tipo de tareas, es proyectando los detalles directamente en las UVs de los assets.

  • He exportado mi escena de Maya a Nuke. En este sencillo ejemplo tengo la cámara utilizada para el render, y un cubo donde necesito proyectar mi footage.
  • Para importar la geometría utiliza un ReadGeo y para la cámara un nodo Camera.
  • He importado el footage que quiero proyectar, en este caso es un solo frame.
  • Conecta el footage a un nodo Porject 3D.
  • Conecta el input de la camara el nodo Porject 3D.
  • Conecta el img input del nodo ReadGeo al nodo Project 3D.
  • Mira a traves de la camara.
  • Además de estar proyectando el footage en la geometría, también estoy pintando algunos detalles encima de la misma, utilizando un rotopaint.
  • Conecta un nodo UVProject al axis/cam input, y el secondary input al ReadGeo.
  • Deja la opcion Projection como Off.
  • Conecta un ScanlineRender al UVProjector mediante el input obj/scene.
  • El projection mode tiene que estar como UV.
  • Si cambias el visor 3D a 2D verás como el trabajo realizado en Nuke aparece en el espacio UV de tu asset.
  • Utiliza un write node para escribir el trabajo a textura.
  • Ya ya está, listo para ser renderizado en Maya.

Como seguramente sepas, Arnold gestiona la subdivisión de geometría de forma individual. Si tienes una escena con cientos de objetos resulta un tanto incómodo ir uno a uno añadiendo propiedades de subdivisión de Arnold. Esta es la forma más rápida y sencilla que he encontrado para solventar esta situación. No tengo ni pajolera idea de scripting, así que si tienes una solución más rápida y eficaz, por favor, házmelo saber.

  • En este particular ejemplo quiero subdividir en render este personaje compuesto de decenas y decenas de piezas. Quiero seguir manteniéndolas todas de forma individual pero poder subdividirlas al mismo tiempo.

Modelado por SgtHK.

  • Lo primero que necesitas hacer es seleccionar todos los shapes de cada objeto. Para ello selecciona todos tus objetos de geometría en el outliner y pega esta linea de código en el script editor. Esto hará que se seleccionen todos los shapes de los objetos previamente seleccionados.

/* you have to select all the objects you want to subdivide, it doesn’t work with groups or locators.
once the shapes are selected just change aiSubdivType and aiSubdivIterations on the attribute spread sheet.
*/

pickWalk -d down;

string $shapesSelected[] = `ls -sl`;

  • Una vez todos los shapes han sido seleccionados, abre el attribute spread sheet.
  • Filtra por ai subdiv.
  • Elige tu método de subdivisión e iteracciones.
  • Y ya está, personaje subdividido.
Posted
AuthorXuan Prada
TagsArnold
3 CommentsPost a comment

Ya hemos hablado en ocasiones anteriores sobre Isotropix Clarisse, si buscas por el tag "Clarisse", podrás ver todas las entradas al respecto.
En esta ocasión vamos a hablar de una tarea muy común cuando trabajamos con este software, que consiste en renderizar sistemas de partículas simuladas en otro software, en este caso Maya.

Como sabéis, Clarisse es un raytracer moderno que funciona de forma muy particular, una especia de scene assembler donde importamos todo el contenido realizado en un software 3D, y una vez en Clarisse nos beneficiamos de su tecnología para renderizar todos nuestros componentes 3D. Clarisse está siendo bastamente utilizado por estudios de efectos visuales digitales de la talla de Double Negative, ILM, Tippett Studio, etc. Iremos posteando más tutoriales, artículos y cursos en un futuro cercano.

En esta ocasión, vamos a ver como importar un sistema de partículas simulado en Maya para poder renderizarlo de forma muy rápida en Clarisse. Es un ejemplo extremadamente sencillo, pero espero ilustre la metodología de trabajo entre estos dos software.

  • Una vez tenemos el sistema de partículas terminado en Maya, basta con exportarlo via Alembic, el formato estándard para intercambio de archivos 3D en VFX.
  • Antes de continuar, es buena idea crear algún tipo de iluminación para poder ir viendo el restultado de nuestra escena 3D. En esta ocasión he creado un simple rig Image Baseg Lighting. En un post anterior explico como hacerlo de forma muy sencilla.
  • En la versión 2.0 de Clarisse existe una herramienta en el self lighting que permite crear un rig IBL con un solo click.
  • Para importar el archivo Alembic tenemos que ir a File -> Import -> Scene y seleccionar el archivo exportado previamente desde Maya.
  • Este archivo debería importarnos dos sistemas de partículas, un plano que sirve como suelo y la cámara para renderizar la escena.
  • Es buena idea crear diferentes context para mantener la escena organizada a medida que gana en complejidad.
  • En el context geo, he importado dos ficheros .obj uno llamado toy_man y otro toy_truck. Estas son las geometrías que voy a utilizar en mis dos sistemas de partículas.
  • También he movido el suelo a este context para tenerlo todo bien organizado.
  • Del mismo modo he movido los sistemas de partículas y la cámara a sus correspondientes context.
  • En el context materials, he creado dos standard shaders y dos file textures. Uno para cada geometría.
  • En el context particles, he creado un nuevo sistema scatterer y lo he renombrado a scatterer_typeA.
  • En el apartado geometry support del scatterer he añadido el sistema de particulas particles_typeA. Y en la sección geometry he añadido toy_man.obj
  • También estoy añadiendo algo de variación en la rotación de las partículas.
  • Si movemos el timeline podremos ver la animación de las partículas.
  • No olvides asignar los materiales creados anteriormente.
  • Para el segundo sistema de partículas, vamos a crear otro scatterer. Al igual que con el primer scatterer necesitamos indicar el geometry support y el geometry a utilizar, en este caso en toy_truck.obj
  • También estoy introduciendo variación en la rotación y posición.
  • Ya que estos modelos son bastante más grandes que los muñequitos, voy a introducir un offset en el sistema de partículas para que tengan menor presencia en pantalla.
  • Finalmente, vamos a añadir motion blur a la escena para lanzar el render final.
  • Vete a raytracer -> Motion Blur -> 3D Motion Blur.
  • En esta ocasión estoy renderizando sólamente 40 millones de polígonos y como podrás comprobar, los tiempos de render son fantásticos.

Si trabajas a menudo con 3D scans, Lidars, photogrammetry u otros tipos de geometrías complejas, seguramente utilizas Meshlab. Como sabes, es un software genial, que permite gestionar geometría de mas de 75 millones de polígonos. Los usuarios de Photoscan estamos muy acostumbrados a utilizar la herramienta de alienado al suelo. En Meshlab no he podido encontrar esta herramienta, por favor, si la encuentras avísame.

Como alternativa, he encontrado una simple operación que nos permite alinear nuestros Lidar al suelo, para ello necesitamos hacer lo siguiente.

  • Importa la geometría Lidar, photogrammetry o lo que necesites. También importa un plano exportado desde Maya colocado donde te interese. Este va a ser tu suelo.
  • Este ejemplo es muy sencillo, ojalá me tocase trabajar con lidars tan sencillos de vez en cuando :) La meta es alinear la zapatilla de deporte con el suelo.
  • Haz click en la herramienta de align.
  • En la ventana align tool, selecciona el objeto que va a hacer de suelo, y haz click en glue mesh here.
  • Una vez seleccionado fíjate que aparece un asterisco delante del nombre del objeto.
  • Selecciona el lidar, y haz click en point based glueing.
  • En la ventana que aparece puedes ver los dos objetos. Puedes moverte como si se tratase de un viewport.
  • Selecciona un punto de la base de la zapatilla, es decir, de la suela. Para seleccionar el punto tienes que hacer doble click encima de él. Después selecciona un punto del objeto que hace de suelo.
  • Repite este proceso varias veces. Necesitas al menos 4 puntos.
  • Y ya deberías de poder alinear tu Lidar al objeto suelo. Obviamente cuanto más limpio esté el Lidar mejor.

Render utilizando Ptex.

¿Qué ocurre si estás trabajando con Ptex pero necesitas hacer algún tipo de detalle de desplazamiento en Zbrush? ¿Cómo se puede renderizar eso?

Como seguramente sepas, en este momento Zbrush no soporta Ptex. Como ya comentaba en el post anterior, no soy un gran fan de Ptex, pero eso va a cambiar en el futuro, probablemente. La mayor ventaja (para mi) de utilizar Ptex, es como comentaba, la posibilidad de no tener que realizar UV mapping. Pero entonces, si Zbrush no soporta Ptex, y no tengo tiempo/ganas de realizar UV mapping, ¿cómo puedo esculpir en Zbrush y exportar mis mapas de desplazamiento para ser renderizados en Ptex?

Render sin displacemet.

  • En la imagen de abajo, tengo un scan 3D el cual he procesado en Meshlab para reducir la cantidad de poligonos a un numero aceptable para poder trabajar en otros software.
  • El siguiente paso, es importar el modelo en Zbrush. 500.000 polígonos son suficientes para poder trabajar de forma fluida y mantener los detalles que me interesan en este particular modelo.
  • Voy a utilizar Zbrush para generar una retopología rápida, automática. Puedes por supuesto utilizar Maya o Modo para generara un modelo consistente de quads, listo para producción. Para el propósito de esta demo, una retopología automática es suficiente.
  • Utilizando la herramienta Zremesher podemos crear una topología más que digna para este propósito en diez segundos.
  • El siguiente paso consiste en exportar tanto el modelo original de alta resolución, como el modelo de baja resolución. Puedes utilizar el formato .obj
  • Vamos a importar los dos en Mudbox para extraer el mapa de desplazamiento utilizando Ptex. Mudbox si soporta Ptex.
  • Una vez importados los dos modelos, mantén los dos visibles.
  • Exporta los displacement maps de forma normal.
  • Lo más importante de las opciones que has de tocar está señalado en la imagen de abajo.
  • Y ya está, todo debería de renderizarse correctamente.