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.

Allá por el 2009 Walt Disney Animation Studios presentó Ptex, y sobre el papel, parecía la mejor solución posible para cualquier pipeline complejo de VFX (y también de feature animation). Muchos de los problemas comunes del texturizado, podrían esfumarse con este nuevo sistema de texturizado por caras. Lo cierto es que más de seis años después, nadie utiliza Ptex.

Bueno, tampoco pretendo ser tan contundente, mejor debería de decir que no conozco a nadie que utilice Ptex, salvo claro, Walt Disney Animation Studios (sus propios creadores por otra parte) y seguro algún estudio o boutique más, probablemente.
He trabajado en, con o para, Dr.D-Animal Logic, MPC, Dneg, Framestore, ILM, Digital Domain, Rythm&Hues y varios middle size y boutiques de VFX alrededor del mundo, y aún no he tenido la oportunidad de trabajar utilizando Ptex.

Y me da rabia. Ptex es una gran solución, estaría encantado de incorporarlo en mi sistema de trabajo diario, pero la realidad es la que es, UDIM sigue siendo el sistema de trabajo estandard cuando hablamos de pipelines de texturizado.

¿Cuáles creo que son los beneficios de utilizar Ptex?

  • El primero y más importante, eliminamos el proceso de UV Mapping. Genial! A priori puede parecer poca cosa, pero realizar el UV Mapping de un asset complejo, y además, hacerlo bien, es una tarea muy complicada, y precisa de un modelador con mucha experiencia y conocimientos específicos. Además, con cada iteración de modelado las UVs pueden verse alteradas, teniendo que modificar las UVs existentes.
  • No hay seams ni overlappings. Con Ptex también eliminamos varios de los problemas más engorrosos del UV Mapping, como por ejemplo seams y overlappings, que pueden causar resultados muy inesperados en el look de nuestros assets, especialmente cuando utilizamos displacement maps (es decir, siempre).
  • No necesitas gestionar ficheros. Bueno en realidad si, pero solo es un fichero por canal. Mientra que cuando trabajamos con UDIMs necesitamos cientos, que digo cientos, miles de ficheros de texturas para assets complejos. Con Ptex nos bastaría con un solo archivo (bastante pesado por cierto) para cada canal de textura.
  • Puedes almacenar todo tipo de datos en los ficheros Ptex. 8 bits, 16  bits, 32 bits, vector displacements, integer o float.
  • Se aprovecha toda la resolución posible, no hay espacios UV vacíos como ocurre con UDIM y tradicional UV Mapping.
  • Se puede variar fácilmente la resolución de las texturas. Cada parte del asset puede tener una resolución diferente en función de las necesidades del plano. De hecho, cada cara del modelo puede tener una resolución diferente.
  • Walt Disney Animation Studios dice que Ptex es más rápido que UDIMs mipmapped. Puedes encontrar varias tablas en internet con los resultados de sus tests.

¿Cuáles creo que son los puntos flacos de Ptex?

  • No user friendly. La mayoría de texture artist les gusta pintar tanto en 3D como en 2D. Con Ptex no puedes pintar en 2D.
  • Limitación de software. No todos los motores de render soportan Ptex. Cierto es que la mayoría si, pero no todos, y entre los que no soportan Ptex, el mejor render del momento.
  • Comunicación inexistente entre software. Ptex es un archivo de texto. Obviamente no se puede abrir en Photoshop (si es que queda algún texture artist utilizando Photoshop) ni en Nuke. Y ese si es un problema grave. Y aquí otro problema grave, tampoco Zbruh soporta Ptex. Si, ya se que Mudbox soporta Ptex, pero si eres texture artist y utilizas Mudbox, seguramente también utlizas Photoshop, así que es bastante probable que estés en un ambiente más bien amateur, no en un VFX facility.
  • UDIM está muy arraigado en todos los VFX facilities del mundo desde hace mas de una década, y funciona muy bien si el UV Mapping es bueno. A los artistas no les gustan los cambios, y menos cuando no se aprecian con la vista. Ptex a priori, solo es buena solución para los artistas porque no necesitaríamos emplear nuestro tiempo en realizar UV Mapping. No vemos mas allá de eso. (por desgracia).
  • Si no hay suficiente geometría (tessellation) es difícil conseguir buena resolución de texturas.
  • Poca información y ejemplos horribles. Apenas existe documentación sobre Ptex y los ejemplos visuales (repito, a los artistas se les convence por los ojos -o la cartera-) son patéticos. En la web oficial de Ptex hay un dinosaurio de juguete, una tetera y un cubo. Y las referencias constantes que Walt Disney hace sobre ejemplos de producción se reducen a la película Bolt. Muy bonita, pero si quieres vender un sistema de texturizado a VFX facilities necesitas mostrar ejemplos más ambiciosos desde el punto de vista de assets development.

Algunos usos alternativos/inteligentes que le he dado a Ptex

  • Para limpiar 3D scans, Lidars o Photogrammetry en Zbrush, hacer retopologías automáticas (para objetos que no necesitan rigging) exportar todo a Mudbox y extraer displacement maps utilizando Ptex sin perder ni un minuto en hacer UV Mapping para assets irrelevantes.
  • Empezar la tarea de texturizado en Mari cuando el modelo ha sido finalizado pero las UVs aún no están listas. Después, cuando el modelador haya terminado el UV Mapping, transferir lo pintado en Ptex a las UVs y continuar desde ahí.

¿Entonce Xuan, a ti te gusta Ptex?

Si, me gusta. Pero si me dan las UVs hechas (que es el caso) no veo razones de peso para dejar UDIMs en favor de Ptex.
Supongo que si tuviese que hacer un extreme close up, me forzaría a utilizar Ptex. Supongo que si me mostrasen un montón de ejemplos visuales realizados por importantes texture artists, me forzaría a utilizarlo. Supongo que si pudiese leer un montón de información interesante (de cara a artistas) sobre Ptex me forzaría a utilizarlo. Supongo que si...

Por el momento, utilizaré Ptex única y exclusivamente para proyectos personales y tests donde yo mismo tenga que realizar tareas de UV Mapping que no me apetezca (o no tenga tiempo) realizar.


Reflexiones de aeropuerto :)

Posted
AuthorXuan Prada

¿Qué es Ptex?

Ptex es un sistema de mapeado desarrollado por Walt Disney Studios que está siendo utilizado en producciones de animación y efectos visuales en diferentes estudios alrededor del mundo. Si bien no podemos considerarlo como un estandard dentro de la industria, si que ha tenido una excelente acogida por parte de usuarios y colectivos.

¿Qué tiene de particular?

  • No requiere de UV Mapping tradicional, lo que permite a los modeladores ahorrarse un proceso tedioso, complicado y que puede ser bastante lento en función del asset a texturizar.

  • Ptex crea una textura para cada uno de los polígonos que forman la geometría de un asset.

  • El formato de archivo utilizado por Ptex es capaz de almacenar cientos de texturas en un solo fichero.

  • El filtrado en render es de mejor calidad que en las texturas tradicionales basadas en UV Mapping.

¿Puedo utilizar Ptex en cualquier software?

No, solo algunos motores de render y software de texturizado soportan esta tecnología, aunque bien es cierto que cada día son más. Estos son algunos de los que sí soportan Ptex.

  • Vray
  • Arnold
  • RenderMan Studio
  • MentalRay 3.10
  • 3D Light
  • Houdini
  • Mari
  • Mudbox
  • 3D Coat

Paso a paso como utilizar Ptex en Mari, Maya y VRay.

  • Chequear el asset en Maya, cerciorarse de que no tenga UV Mapping alguno y exportar como .obj

  • Crear un nuevo proyecto en Mari e importar el .obj exportado desde Maya.
  • Seleccionar Force Ptex como Mapping Scheme y seleccionar Create From Face Groups en Selection Sets. Esto forzará a Mari a trabajar con Ptex por si acaso nos hemos olvidado algunos restos de UV Mapping, y nos creará un grupo de selección por cada cara de la geometría.
  • Finalmente elige las opciones de textura que necesites.

En la nueva ventana que aparece, tenemos varias opciones. La primera es para cargar un archivo de Ptex en el caso de que ya hayan sido creadas texturas para el asset. Supongamos que otra persona ha trabajado en las texturas y nos pasa la geometría y el archivo para cargar en Mari.

La siguientes opciones son relativas a crear Ptex desde cero. Nos encontramos dos opciones diferentes.

  • Uniform Face Size: Solemos utilizar esta opción cuando todas las caras de una geometría tienen similar tamaño. Con esta opción tenemos que seleccionar Per Face Texture Size, que es el tamaño en texels de cada textura que se aplica a cada una de las caras. Y finalmente el Format (8bits, 16bits o 32bits) y un Color base.
  • Worldspace Density: Aplica la resolución de textura en texels a cada centímetro de geometría. Con este método las caras pequeñas tendrán menos resolución que las caras grandes. Generalmente yo utilizo este método.

Vemos que Mari se inicia, se carga nuestro asset y se crea un channel y una layer llamados Ptex. Fijaos que no tenemos acceso a la pestaña UV.

  • Si seleccionamos, podremos comprobar que un Selection Set ha sido creado para cada una de las caras de nuestro asset. Ptex siempre funciona bajo polígonos individuales, así que poder seleccionarlos uno a uno es muy importante.
  • Podemos pintar y ver que tal se comporta el trazo.
  • En la barra de herramientas de Ptex podemos cambiar la resolución de las texturas de las caras seleccionadas. De este modo, si vemos que al pintar no tenemos suficiente resolución, simplemente seleccionamos las caras y aumentamos el número de texels. No olvides darle al icono redondo para aplicar los cambios.
  • En este ejemplo he reducido el número de texels, y como podéis ver, el trazo es apenas visible y de muy mala calidad.
  • Huelga decir que se puede utilizar cualquier herramienta de forma normal. Proyecciones, displacements, etc.
  • Una vez terminada tu textura, para exportarla sigue el mismo proceso que con texturas basadas en UV Mapping. Simplemente click derecho encima del channel deseado y Export Current Channel Flattened.
  • Utilizar las siguientes opciones en la ventana de diálogo.
  • La forma mas rápida para comprobar si se ha exportado bien, es crear una capa vacía e importar el archivo.
  • Para renderizar en Maya, simplemente importa el asset como .obj o cualquier otro formato.
  • Crea un VRay Material y un nodo VRay Ptex.
  • Listo, lanza el render y voilá!