From BlenderWiki

Jump to: navigation, search

Blender 2.67: FreeStyle, motor de procesamiento de líneas

Freestyle es un nuevo motor de procesamiento no fotorrealista (PNF) integrado en Blender. Originalmente desarrollado como un programa independiente como parte de un proyecto de investigación académica, Freestyle le brinda al artista un nuevo conjunto de herramientas para generar dibujos de líneas 2D en base a una escena 3D preparada en Blender. Puede orotgarse un estilo a las líneas generadas a través de una serie de opciones de estilización que permiten la variacion del color, la transparencia alfa, el grosor y la geometría de las mismas. El arte lineal resultante puede ser combinado con otros componentes del procesamiento (como las pasadas de procesamiento de los motores Interno y Cycles) a través de las capas de procesamiento y el uso del Compositor. Como ejemplos de casos de uso de Freestyle se podrían mencionar el procesamiento con estilo dibujo animado, visualización arquitectónica, dibujo técnico, planos y esquemas generados por computador. Freestyle expande las capacidades de procesamiento de Blender para la resolver tareas de visualización orientadas a un resultado final de estilo 2D.

De mato.sus304. CC BY-SA
De Rylan Wright (RONIN). CC BY (File:TheFamily.zip)
De Rylan Wright (RONIN). CC BY

Generación de arte lineal basado en geometría

Freestyle genera un dibujo de líneas 2D a partir de un conjunto de objetos poligonales. Los vértices, bordes y caras de una malla son utilizados para identificar los rasgos característicos que resulten de interés para el artista. Los rasgos detectados son luego transformados en líneas estilizadas a través de una serie de opciones de estilización. Al contrario que la antigua opción Borde (de estilo dibujo animado) de Blender que solo genera una imagen, los rasgos de Freestyle pueden ser manipulados a través de información geométrica, por ejemplo usando la longitud de la línea, el ángulo formado por dos líneas adyacentes o la distancia desde la cámara. Además, las líneas de rasgos identificadas pueden ser estilizadas de varias formas, variando su color, transparencia alfa o grosor. Los segmentos de línea rectos también pueden ser transformados en curvas de fantasía agregándoles, por ejemplo, desplazamientos aleatorios o haciendo que se ajusten a curvas Bézier suaves.

El diagrama de bloques de abajo muestra los componentes clave de procesamiento de Freestyle. La información proviene de una escena 3D poblada con objetos poligonales. La escena proporcionada es transformada en líneas 2D estilizadas de la siguiente forma:

  1. Se aplica un algoritmo de detección de rasgos a la escena 3D para extraer los contornos de interés, como las líneas silueta, bordes y pliegues. Al conjunto de bordes identificados se le llama Mapa de la vista. Se calcula un mapa de vista por cada capa de procesamiento de la escena. Las capas de procesamiento contienen nuevas opciones de Freestyle para controlar la construcción del mapa de la vista.
  2. Los rasgos son manipulados a través de operaciones definidas por el usuario para crear cadenas de rasgos que serán la geometría base de las líneas estilizadas finales. Al conjunto de rasgos que está siendo manipulado, se lo denomina Conjunto de líneas, y sobre él se define una serie de opciones para la selección de rasgos, encadenamiento (de los bordes), división y ordenamiento. Es posible definir varios Conjuntos de líneas con respecto a un Mapa de vista (para cada capa de procesamiento). Por ejemplo, es posible definir dos conjuntos de líneas para dibujar, respectivamente, las líneas visibles y ocultas.
  3. Las cadenas de rasgos son transformadas en líneas estilizadas (trazos) mediante la aplicación de las opciones de estilizado definidas por el usuario. Al conjunto de opciones de estilización se lo denomina Estilo de línea. Los estilos de línea son nuevos bloques de datos en Blender, lo que significa que los Estilos de línea pueden ser compartidos por varios Conjuntos de líneas, posiblemente de una escena diferente, así como desde archivos .blend externos, haciendo sencilla la aplicación de la misma estilización a diferentes conjuntos de líneas.
  4. Los trazos estilizados son finalmente procesados y el dibujo de líneas 2D resultante es compuesto en la pasada Combinada del motor Interno de Blender.
Los componentes clave de procesamiento de Freestyle

Debe notarse que Freestyle solo genera el dibujo lineal de los contornos. El relleno de las caras con patrones o el sombreado de las mismas, así como las sombras, caen fuera de los objetivos de Freestyle por el momento. Sin embargo, Freestyle ha sido completamente integrado con el sistema de capas de procesamiento y el Compositor, de manera que las líneas de contorno producidas por Freestyle pueden ser fácilmente combinadas con otros componentes de procesamiento (ver más abajo).

Control por parte del usuario de la detección de rasgos

La detección de los rasgos a partir de la escena 3D proporcionada puede ser controlada a diferentes niveles.

Opciones de Freestyle en las capas de procesamiento

En primer lugar, cada capa de procesamiento contiene un conjunto independiente de opciones de Freestyle para personalizar la detección de rasgos de acuerdo a los requerimientos solicitados (ver la captura de pantalla de la derecha). Las opciones de detección de rasgos incluyen: (a) ángulo de plegado, para controlar la cantidad de líneas de pliegues (cuanto más grande sea el ángulo de plegado, más líneas de pliegues se obtendrán); (b) descarte, para excluir aquellos bordes de la escena 3D que estén fuera de los límites de la imagen 2D (mayormente para una ganancia de rendimiento, pero también es posible que aparezcan algunas diferencias visuales dependiendo de las opciones de estilizado de líneas); (c) suavizado de caras, para tomar en cuenta el suavizado de las caras de las mallas (resultando por lo general en líneas de silueta más suaves, con el costo de un tiempo adicional de procesamiento); y (d) límites de materiales, para hallar caras adyacentes con materiales distintos y tomar los bordes entre ellas como rasgos.

En segundo lugar, se ha hecho una extensión de los bloques de datos de malla para permitir que los usuarios marquen directamente en ellos bordes y caras para asistir en la detección de rasgos. Los bordes de las mallas contienenn ahora un nuevo atributo llamado Marca de borde de Freestyle para especificar bordes de la malla que sean de interés durante el dibujado de líneas de Freestyle. Estas marcas de los bordes pueden ser usadas para: (a) forzar la detección de bordes específicos como rasgos; y (b) para excluir bordes específicos de los dibujos de Freestyle. De forma similar, las caras de las mallas pueden contener Marcas de cara de Freestyle para especificar regiones de interés durante el procesamiento de Freestyle. Las caras marcadas pueden ser usadas tanto para forzar la detección de bordes dentro de las mismas, como para excluir sus bordes del procesamiento de Freestyle.

Marcado de bordes de Freestyle en el modo Edición.
Imagen procesada sin marcas de bordes.
Imagen procesada con las marcas de bordes habilitadas.

Opciones de estilización de líneas

Freestyle para Blender ofrece dos modos complementarios de estilización de líneas: Editor de parámetros y Scripts Python. Cada capa de procesamiento deberá funcionar en uno de estos modos al aplicar las operaciones de estilizado de líneas a su Mapa de vista asociado.

Modo de Edición de parámetros

El modo de Edición de parámetros permite a los usuarios manipular interactivamente una amplia variedad de opciones de estilización de líneas. Las opciones que el usuario puede controlar se dividen en dos grupos, opciones de Conjunto de líneas y opciones de Estilo de línea.

Opciones de Conjunto de líneas.

Las opciones de Conjunto de líneas son utilizadas para escoger un subconjunto de rasgos del mapa de la vista y proporcionárselos al estilizador de líneas. La selección de bordes puede estar condicionada por: (a) visibilidad de la línea (solo visibles, solo invisibles o aquellas dentro de un rango de invisibilidad cuantitativa); (b) los tipos de bordes (de silueta, de pliegues y marcas de bordes); (c) marcas de caras (para incluir o excluir los bordes de las caras marcadas); (d) grupos de objetos (para enfocarse en los bordes de un grupo de objetos); y (e) límite de la imagen (para excluir completamente los rasgos que estén fuera de los límites de la imagen). El criterio de selección puede ser combinado por medio de operaciones lógicas de conjunción (Y), disyunción (O) y de negación.

Opciones de Estilo de línea (sección Geometría).

Las opciones de Estilo de línea son utilizadas para crear estilos de línea definidos por el usuario. Los rasgos seleccionados se unirán en cadenas contínuas que formarán la geometría base (o trazos) de las líneas estilizadas. Las opciones de encadenamiento disponibles son: Simple, para el encadenamiento simple de bordes entre sí, y Boceto, para emular una apariencia manual más artística mediante múltiples pasadas de trazos. Las cadenas pueden ser refinadas mediante la División (en puntos donde el ángulo entre dos bordes adyacentes se encuentre dentro del rango especificado) y la Selección (para remover cadenas de menor longitud que la especificada). La apariencia de los trazos es definida por un color base, una transparencia alfa y un grosor de línea, así como mediante una serie de modificadores que es posible aplicar a estos parámetros de estilización. La geometría base del trazo también puede ser alterada mediante modificadores de geometría. También se soporta la terminación de líneas con formas redondeadas o planas, así como el dibujo con líneas discontínuas.

Modo de Scripts Python

El modo de Scripts Python ofrece la posibilidad de una programación completa de la estilización de líneas. En este modo de control todas las operaciones de estilizado son descriptas como scripts escritos en Python, denominados módulos de estilo en la terminología de Freestyle. La información con la cual trabajan los módulos de estilo es el mapa de la vista (un conjunto de rasgos detectados) y el producto final es un conjunto de trazos estilizados.

Un módulo de estilo está compuesto por sucesivas llamadas a cinco operadores básicos: selección, encadenamiento, división, ordenamiento y creación del trazo. El operador de selección identifica un subconjunto de rasgos de entrada basándose en una o más condiciones de selección (predicados). Los bordes seleccionados son procesados con los operadores de encadenamiento, división y ordenamiento para construir cadenas de rasgos. Estos operadores también son controlados por predicados y funciones proporcionados por el usuario para determinar cómo transformar los rasgos en cadenas. Finalmente, las cadenas son transformadas en trazos estilizados por el operador de creación de trazos, que utiliza una lista de sombreadores de trazos proporcionada por el usuario.

Los módulos de estilo escritos en Python son almacenados dentro de los archivos .blend, en forma de bloques de datos de texto. Los archivos externos de módulos de estilo primero deben ser cargados en la ventana del Editor de texto. Luego pueden ser seleccionados desde la lista desplegable en el módulo de estilo, donde aparecerán todos los módulos de estilo previamente cargados.

Un módulo de estilo (cartoon.py) cargado en la ventana del Editor de texto, y la lista desplegable para selección de módulos en la pestaña Freestyle de las opciones de la Capa de procesamiento.

Freestyle para Blender viene con una serie de módulos de estilo Python que pueden servir como punto de partida para escribir módulos de estilo propios. Ver también la sección del API Python de Freestyle en el manual de referencia del API Python de Blender para obtener un detalle completo de la forma de construir módulos de estilo.

Pos procesamiento con el Compositor

Los dibujos lineales de Freestyle son una parte integral de la pasada Combinada, conjuntamente con otros elementos convencionales como Sólido o el Cielo. El procesamiento de Freestyle es superpuesto sobre los otros elementos combinados (excepto los Halos). Es posible obtener una "pasada" exclusiva de Freestyle usando las opciones Incluir de la capa: Habilitando Freestyle y desactivando los otros componentes de la pasada Combinada, como se muestra en la captura de pantalla de abajo.

Configuración de la opción Incluir: de la capa de procesamiento para crear una "pasada" exclusiva de Freestyle.

Freestyle es completamente compatible con el compositor, permitiendo una pos producción libre de los dibujos lineales resultantes. El suavizado de bordes con Muestreo completo también es funcional cuando se utiliza Freestyle.

Un ejemplo simple de composición de un dibujo lineal.

Muestra de arte con Freestyle

Animación del logo de FreeStyle de Lee Posey (jikz). CC BY-SA
The Light At The End de Cris Burton. CC BY-SA
Una escena tipo dibujo animado de Oha-Studios (el archivo .blend). © Mechanimotion Entertainment.
Plano de un Martin M-130 de 1935 de LightBWK. CC0. ADVERTENCIA: ARCHIVO PESADO! DISEÑADO COMO PRUEBA DE TENSIÓN DE LOS LÍMITES DE BLENDER, PUEDE COLGAR BLENDER. (File:M-130Blueprint.zip)
Pre vizualización de HVAC de Lee Posey. CC0 (File:HVACPreViz.zip)
ABC de AKARI de Vicente Carro. © AnigoAnimation
Cocina de Vicente Carro. © AnigoAnimation
Jefe con sobrepeso de Mclelun Lee. CC BY-SA
Niño jugando en la nieve de Mclelun Lee. CC BY-SA
Kaede y las montañas de Barkóczi Gergely. CC BY-SA
Kaede contra gigante de Barkóczi Gergely. CC BY-SA
Animación pasando páginas de T.K., usando el modo de Scripts Python. CC0 (File:Turning Pages.zip)
Sawshark de Charblaze. CC0 (File:SawShark Sketch.zip)
Moto-rueda de Pro Creaciones. CC BY
Demostración lineal de Ronan Ducluzeau usando capas de procesamiento (con animación dinámica) (File:Line Demo Render Layers.zip) y usando grupos de Vicente Carro (File:Line Demo Groups.zip). CC0
Vehículo ATV de Rylan Wright (RONIN). CC BY (File:AtvBuggy.zip)
Poster de guitarra con cita de LightBWK. CC0 (File:GuitarQuote.zip)
Xilografía de templo de Charblaze. CC-BY
de mato.sus304. CC BY-SA (File:Mato sus304 cut02.zip)

Enlaces

Documentación de Freestyle

Enlaces de Freestyle

Historia de la integración de Freestyle en Blender