etereaetereaaboutnewsworkstrainingsuccesseterealinksmoreetereashop
Home > Training > Técnicas modelado por subdivisión > Pinceles segmentados y Vertex Map Falloffs
Etérea Workshops Banner
Por favor: no hagas un copiar-pegar de este material en tu página, weblog o foro sin mi permiso. En su lugar puedes incluir un link a esta página.
1. Introducción al modelado por subdivisión
2. Cómo crear agujeros circulares
3. Cómo trabajar un texto por subdivisión
4. Pinceles segmentados y Vertex Map Falloffs
  5. Creación de una rueda: llanta y cubierta
6. Las piedras y rocas de Fallingwater
7. Creación de una carretera de montaña (parte 1)
8. Creación de una carretera de montaña (parte 2)

Pinceles segmentados y Vertex Map Falloffs

Los puntos clave del siguiente tutorial son tres:

— Apoyarnos en un trabajo previo dentro de Illustrator —u otras aplicaciones similares— para facilitar el modelado por subdivisión.

— Desplegado de UVs para una estructura del tipo “tubería”, mediante el uso de la herramienta UV Peeler.

— Tansferencia de la información desde ese UV Map hasta un Weight Map para poder controlar deformaciones y otras operaciones a través del uso de Vertex Map Falloffs (esto es quizás lo más característico de Modo, y no estoy seguro de si se puede trasladar a otras aplicaciones. Espero que sí).

Evidentemente el objeto final podría modelarse usando otros métodos: para este caso concreto, el más obvio sería utilizar una herramienta que permita generar tuberías a partir de un perfil central, variando la escala de su sección entre un extremo y otro (de manera que al mismo tiempo se nos generarían unas UVs automáticas).

Pero en cualquier caso creo que las técnicas expuestas aquí pueden ser útiles para muchas situaciones, especialmente si tenemos que crear un complejo e intrincado sistema de perfiles, donde lo más adecuado es crear nuestra base con una aplicación vectorial, como Illustrator, Freehand, CorelDraw o Inkscape.
Figura original con pinceles sólidos
Aquí tenemos una ilustración creada dentro de Illustrator utilizando las técnicas descritas en este otro tutorial. Dejamos en una capa este dibujo original creado con un pincel “sólido”, para tenerlo como referencia. A continuación duplicamos esa capa y por otro lado vamos a crearnos una serie de pinceles especiales, partiendo del pincel original que acabamos de usar.
Creación piceles segmentados
Nos creamos cuatro pinceles diferentes (o tantos como sean necesarios) segmentando la pieza que servía de materia prima para crear el pincel original mediante una serie de líneas rectas espaciadas tal como indica la figura de la izquierda. Usando la herramienta Divide —dentro del conjunto de operaciones booleanas que Illustrator llama Pathfinder— obtenemos el resultado de la derecha. Hacemos que en lugar de ser un conjunto de porciones con relleno y sin contorno pasen a tener un contorno fino y sin relleno. Una vez las tenemos, creamos con cada una de ellas un pincel del tipo Art Brush.

IMPORTANTE: si no acabáis de comprender cómo están creados estos pinceles, por favor repasad el tutorial “Técnicas con Pinceles (I)”
Figura con pinceles segmentados
Y ahora, sobre la capa que previamente hemos duplicado —manteniendo la original, con los pinceles sólidos, por debajo y teñida en un color más clarito para que nos haga de referencia— vamos sustituyendo cada pincel sólido por alguno de los cuatro nuevos pinceles segmentados que hemos creado. Veréis cómo, en función de la longitud de cada trazado, nos convendrá más utilizar uno u otro.

Y aquí es donde podéis observar el por qué de haber distribuido las líneas de segmentación de nuestros pinceles de esa manera (fijaos que no estaban uniformemente espaciados):
Por qué la segmentación no es uniforme
En este caso vemos lo que pasa si las líneas de segmentación hubieran estado uniformemente espaciadas:

— En las zonas de mayor radio de curvatura, donde la figura es más gruesa, tenemos un exceso de porciones para definir el recorrido (no perdáis de vista que esto finalmente van a ser los polígonos que se subdividirán).

— En la zona de menor radio de curvatura, donde la figura se va afinando, contamos con pocas porciones para poder definir correctamente el objeto, una vez que lo convirtamos en polígonos.
  Si hacemos que las líneas de segmentación se vayan compactando hacia la punta de nuestra figura conseguimos optimizarlo: hay menos porciones en las zonas con mayor radio de curvatura y más porciones en el extremo afilado, con menor radio.

Para obtener originalmente ese espaciado no uniforme de los segmentos he empleado la herramienta Escala con copia, aplicandola sólo en el eje horizontal y usando como punto de ancla un punto desplazado hacia un lado respecto al segmento que vamos a duplicar. Es una técnica muy usada también para simular fugas por el efecto de la perspectiva, sin salir de Illustrator.
Expandimos los pinceles
Una vez que estamos satisfechos con el resultado, duplicamos la capa —por si quisiéramos hacer futuros ajustes— y convertimos los trazados con pincel a trazados bèzier estándar, mediante el uso del comando Expand Appearance (no olvidéis eliminar el eje central, que no desaparece por sí solo).
Rectificamos todos los trazados
Y por último eliminamos la curvatura de todos los trazados usando la función Object > Path > Simplify, indicándole que lo convierta todo en “Straight Lines” —líneas rectas—. Si véis que todavía queda algún punto extra, sobrante, lo elimináis a mano.

A continuación exportáis en el formato que acepte vuestro programa de modelado 3D favorito. En mi caso, para llevarme cualquier cosa a Modo utilizo la versión 8 de Illustrator.
Importamos los trazados en Modo y Convertimos a polígonos   Eliminamos puntos sobrantes
Aquí tenemos los trazados en nuestra aplicación 3D, en perspectiva. En el caso de Modo los perfiles se siguen mostrando como trazados bèzier, que habrá que convertir a polígonos usando la función Geometry > Freeze, activando la opción Freeze Curves as Faces.   Si activamos la visibilidad de los vértices veremos que Modo introduce una alta segmentación al convertir desde bèziers, y como resultado nos aparecen un montón de puntos inservibles. Para solucionar esto utilizo el script Mesh Cleanup de Seneca Menard.
Mergeamos los vértices   Lo tenemos listo para seguir trabajando
Y aún nos queda una cosa: los polígonos no están unidos unos con otros. Para solucionarlo aplicaremos la función Merge a todos los vértices. Se trata de conseguir que todos aquellos vértices coincidentes —o casi coincidentes— se suelden unos con otros.   Ahora ya tenemos nuestra estructura limpia y lista para seguir trabajando. Merece la pena que le echemos un vistazo en detalle, no ya a ser que todavía haya algunos vértices “parásitos” o cualquier otra cosa rara que nos pueda perjudicar.
Lo siguiente que vamos a hacer es crear un mapa de UVs de nuestro modelo, pero no para texturizarlo, sino para aprovecharnos de esas UVs en los siguientes pasos del modelado, transfiriendo la información a unos “mapas de peso” —Weight Maps—. Enseguida veréis cómo.
Creamos UVs con el UV Peeler
Para extraer las UVs de una estructura tubular, en Modo existe una herramienta llamada UV Peeler. No se si éste será el nombre común en otras aplicaciones 3D, pero imagino que la mayoría tendrán una utilidad similar, aunque se llame de otra forma. Para nuestro caso, donde lo que tenemos no es un verdadero tubo, sino una cinta plana, bastará con que seleccionemos un solo edge, el que está resaltado en naranja. Con él seleccionado y la herramienta activada, al clickar sobre el viewport automáticamente se desplegarán unas UVs como las que véis a la izquierda.

Ahora sólo nos queda “rectificar” esas UVs para que todos los edges tengan una direccionalidad ortogonal, dentro del espacio UV.
Rectificamos las UVs
Os explico cómo conseguir eso de una forma fácil y rápida, en el caso de Modo, y es que no tenemos que ir edge a edge para alinearlos:

— Seleccionamos uno de los edges verticales en el espacio UV
— Mediante el comando ALT+L extenderemos la selección a todo el ring de edges (mostrado en naranja)
— Invocamos la herramienta de Escalado
— En el menú Action Center activamos Center > Local y Axis > Origin
— Y ahora ya podemos escalar en el eje “U” desde 100% hasta 0%

Fijaos que lo que ha ocurrido es que cada uno de los edges en naranja —dentro del espacio UV— se ha escalado en la horizontal (U) pasando de estar inclinados a estar perfectamente rectos (paralelos a V) y lo más importante: lo han hecho sin perder su posición relativa.
Chequeamos las UVs con una textura gradiente
Podemos aplicar una sencilla imagen para testear cómo se comporta nuestro mapeado UV, tanto al ver la pieza sin subdividir como subdividida. Para este caso un degrado es más que suficiente, aunque en el proceso de desarrollo de complejos mapeados UV lo más conveniente es utilizar checkgrids: una cuadrídula de ajedrez es perfecta, así podemos apreciar si hay distorsiones indeseadas en ciertas zonas, así como comprobar que el tamaño de los cuadritos es homogéneo por todas las superficies.
Tenemos listo un rizo   Hacemos igual con todos
Lo que le hemos hecho a la primera pieza se lo tenemos que aplicar a todas las demás, pero no es necesario que cada una tenga sus propias UVs, pueden compartir el mismo espacio UV.   Y ya lo tenemos aplicado en todas las partes. Gracias al degradado puedo comprobar que la orientación es la correcta: todos los extremos puntiagudos son amarillos.
Ahora vamos a ver para qué vamos a utilizar realmente estos mapas UV (porque ya he adelantado que no era para aplicar texturas). Desconozco si los siguientes pasos tienen sus equivalentes dentro de otras aplicaciones 3D, punto por punto, pero imagino que si no es así al menos habrá caminos parecidos.

Lo primero que vamos a hacer es transferir la información del mapa UV a un nuevo mapa, un Weight Map, para luego usarlo en combinación con los Vertex Map Falloff de modo que controlemos cualquier modificador que necesitemos de un modo localizado.

Veamos el paso a paso:
Usamos la herramienta Math Tool
El mapa UV que habíamos creado se llama uvRizos. Lo primero que haremos, como vemos en el cuadro de arriba a la izquierda, es crear un nuevo Weigh Map vacío al que llamaremos, por ejemplo, wmRizos.

Algo importante para poder percibir lo que va a ocurrir: en el viewport 3D seleccionamos el modo de visualización Vertex Map (ahora veremos todos nuestros modelos en ese todo verdoso grisáceo).

Y ahora transferimos la información del mapa UV al Weight Map. Para ello utilizaremos la utilidad Math Tool, dentro del menú Vertex Map. En las propiedades de esta herramienta definimos todos los parámetros:

— En Dest. (el destinatario) indicamos nuestro recien creado, y todavía vacío, Weight Map wmRizos
— En Amount introducimos 100%
— En Operation dejamos Add
— En Source A (la fuente) indicamos que use el mapa uvRizos
— En Scale introducimos 100%
— En Mode seleccionamos Direct

El resto lo dejamos sin tocar y ya podemos pinchar sobre Apply. En ese momento veremos cómo aparece un perfecto degradado desde el tono verdoso hacia un color rojo. Eso nos indica que ya tenemos nuestro Weight Map disponible. ¿Y para qué sirve ese Weight Map? Pues para muchas (MUCHAS) cosas. Nosotros lo vamos a usar en combinación con los Falloffs para afectar a otras operaciones.

IMPORTANTE: aunque en estas capturas nos estemos centrando en uno solo de los rizos, el mapa UV que hemos creado los engloba realmente a todos, al igual que ocurre con el Weigt Map.
Movemos la geometría activando Vertex Map Falloff
Con el Weight Map “wmRizos” seleccionado en su panel List, vamos al menú Falloff y escogemos Vertex Map. A continuación invocamos la herramienta Move y trasladamos nuestra geometría: observaréis como nuestro rizo se deforma. En realidad se está desplazando más en las zonas rojas y menos en las zonas verdosas. De hecho, donde tenemos un 100% de rojo se aplica el movimiento (o cualquier operación que usemos) al máximo de intensidad y donde hay un 0% de rojo la geometría no se ve afectada en absoluto.
Extrusionamos la geometría activando Vertex Map Falloff
Una vez deformado el objeto tras aplicar el desplazamiento, cambiamos de herramienta (sin dejar de tener seleccionado el Falloff Vertex Map) y escogemos una nueva: Extrude. Y veremos que al aplicarla, la extrusión afecta más en unas zonas que en otras, modulada por el VM Falloff. Si detectamos que está funcionando justo al contrario de como nos gustaría, no tenemos más que ir al menú Falloff y seleccionar Invert para invertir su comportamiento.

Estas operaciones las podemos hacer visualizando nuestra geometría en modo Vertex Map, o podemos cambiar a una visualización estándar, Wireframe, Solid, Shaded, etc.

Y ya hemos visto el proceso completo. Jugando con los desplazamientos y la extrusión, controlados por el VM Falloff, vamos generando toda la geometría, trabajando de igual modo en cada uno de los rizos hasta completar el modelo.
Le aplicamos un gradiente al conjunto para ver el resultado
Para terminar aplicamos una nueva textura, esta vez un gradiente con el espectro completo de colores, y comprobamos que la geometría está correcta. Únicamente comentar que para rematar un verdadero modelado fino, aún nos quedaría unir todos los rizos entre sí (ahora están símplemente incrustados uno dentro de otro) pero esa ya no es materia para este tutorial, y llevaría su trabajo, sin duda :-)

Etérea Workshops Banner
Por favor: no hagas un copiar-pegar de este material en tu página, weblog o foro sin mi permiso. En su lugar puedes incluir un link a esta página.
All images copyright Cristóbal Vila