Sverchok: diseño paramétrico
Desde hace unos pocos años en el mundo
de la arquitectura el diseño parámetrico ha ido tomando
importancia. Cada vez aparecen más proyectos, sobretodo en los
grandes despachos a nivel internacional, pero también en los más
pequeños e innovadores, que integran el diseño parámetrico en sus
procesos creativos.
Para entendernos por si hay alguien
desubicado, el diseño paramétrico frente al diseño tradicional
tiene la ventaja de que todos los elementos que dibujamos pueden
tener relación entre ellos, de modo que una modificación sobre un
elemento X puede tener repercusión sobre otro elemento Y cualquiera,
sin la necesidad adicional de modificar tal elemento a posteriori.
A día de hoy, cuando hablamos de
diseño paramétricco hay un software que es el claro destacado:
Grasshopper. Más aún, me atrevería a decir que prácticamente
tiene el monopolio, al menos cuando nos referímos a un diseño
paramétrico formal. Existen otros softwares de diseño paramétrico,
como Revit o Ecotec, sin embargo estos últimos no están enfocados a
paramétrizar el diseño formal del edificio, sino otros aspectos
relacionados con la economía o con la eficiencia energética.
Grasshopper no es un programa en si,
sino que es un plugin que trabaja sobre Rhinoceros, programa de
modelado basado en nurbs, es decir, formas basadas en modelos
matemáticos. El principal problema de Grasshopper desde nuestro
punto de vista es que es software privativo, que aunque gratuito,
requiere de Rhino para trabajar, con el importante coste que supone
la licencia del mismo, además de poder usarse sólo en Windows
(existe una versión para OS X en desarrollo).
Hace unos tres
meses Nikita
Gorodetskiy junto
a Alexander Nedovzin presentaron en el foro BlenderArtists una nueva
herramienta en la que habían empezado a trabajar, Sverchok, que
busca hacer posible un
diseño paramétrico similar al que podría hacerse con Grasshopper,
pero trabajando sobre Blender, software
multiplataforma
y de código abierto, programado en Python.
Gracias
a esta filosofía y a que siempre nos ha interesado este tipo de
herramientas, hace cosa de un mes nos pusimos a intentar desarrollar
algunos nodos adicionales para Sverchok, tratando de facilitar
ciertas acciones que en ese momento requerían una cantidad casi
desproporcionada de nodos, como es por ejemplo hacer una línea o un
plano seleccionando la cantidad de subdivisiones.
Desde
ese momento y tras entablar contacto con Nikita, nos vimos envueltos
en el proyecto y poco a poco hemos ido desarrollando nuevos nodos,
principalmente de primitivas (linea, plano, círculo, esfera o
cilindro), pero también otros que pueden resultar de gran utilidad,
como el de hallar el área de cualquier polígono o el de evaluar el
recorrido a lo largo de una línea.
Para entender cómo funciona y cómo
trabajar con Sverchok será importante entender cómo funciona a
nivel interno. La diferencia con Grasshopper radica principalmente en
el software madre, aquel sobre el que crearemos la geometría. Es
decir, Blender y Rhinoceros tratan de forma ligeramente distinta la
geometría que generan.
En Sverchok tendremos principalmente
tres categorías de datos: vértices, lados/polígonos y matrices.
- Lo primero es aclarar que un vértice
o vector serán definidos de la misma manera, por sus coordenadas, de
este modo: (0, 0, 0). Un conjunto de vértices se representaría de
la siguiente manera, siendo siempre todos los valores números
decimales:
Vertices = [(0.0 , 0.0 ,
0.0), (1.0 , 0.0 , 0.0), (1.0 , 1.0 , 0.0), (0.0 , 1.0 , 0.0)]
- Los lados o aristas, al igual que
los polígonos, simplemente son grupos de números enteros que hacen
referencia al orden que los vértices poseen dentro de la lista de
vértices. Es decir, como es lógico, no puede existir una línea o
un polígono sin los vértices que los componen. Una arista siempre
estará definida por parejas de números enteros: [0, 1]. En este
caso estaríamos uniendo los vértices 0 y 1 de la lista anterior (0
siempre es la primera posición de la lista)
Lados = [ [0, 1], [1, 2],
[2, 3], [3, 0] ]
- Un polígono se compondrá por
grupos de números enteros a partir de 3, que es el mínimo para
formar un polígono (triángulo): [0, 1, 2, 3]. Este polígono
estaría definido al unir los vértices 0, 1, 2 y 3, en ese orden
concreto, de la lista de vértices anterior.
Polígonos = [ [0, 1, 2,
3] ]
- Por último las matrices, que es quizá el elemento más complicado de entender. En Blender toda geometría tiene siempre asociadas unas propiedades adicionales a lo anterior. Son las siguientes: localización, escala y rotación.
- - Localización: las coordenadas de los vértices anteriores siempre son coordenadas locales, es decir, referidas a un centro (0, 0, 0) que puede no ser el centro global de la escena. Este centro global viene definido dentro de esta matriz. Si un vértice tiene coordenadas locales (1, 1, 0), pero su localización dentro de la matriz indica la posición (4, -1, 0), la posición global de este vértice será (5, 0, 0) .
- - Escala: esto determinará la escala de la malla en las tres direcciones del espacio, de una forma similar a lo anterior: (1, 1, 1).
- - Rotación: por último también definiremos la rotación de nuestra malla respecto a los 3 ejes de la misma forma, indicando la rotación en grados: (0, 0, 0)
En las siguientes imágenes iremos mostrando los nodos de los que se dispone a día de hoy:
Básicos: el nodo “Objects_in”
nos sirve para capturar gemoetría que hayamos modelado previamente en Blender para trabajar a partir de ella. Los otros dos son nodos de
visualización; el primero de visualización de geometría 3D, es
decir, para obtener la vista de la geometría que estemos generando; además también podremos "bakear" o generar dicha geometría dentro de Blender..
El último nodo sirve para visualizar en forma de datos esta misma
geometría, pudiendo acceder a las coordenadas de cada vértice, los
lados o los polígonos que generemos.
Números: estos nodos son
generadores matemáticos. Con ellos podemos generar cualquier tipo de
número, entero o decimal, así como series de números, números
aleatorios o conversión de decimales en enteros. Con los dos útlimos
nodos podremos hacer cualquier tipo de operación matemática sobre
los números generados. El nodo “Formula 2” nos permita también
efectuar operaciones sobre vectores (recordar que en Sverchok los
vectores y los vertices tienen las mismas características).
Listas: al trabajar con
información y modelado paramétrico, las listas suelen ser un
elemento muy importante. Por eso existen tantos nodos dedicados a
trabajar con ellas. Con estos nodos se puede trabajar con cualquier
tipo de elemento de entrada, por ejemplo un listado de vértices, y
hacer operaciones sobre ellos, como ordenarlos en un orden u otro,
hallar la cantidad de elementos, sumar todos ellos, elegir una
cantidad concreta, etc. etc. También podremos unir diferentes listas
o dividirlas según parámetros concretos.
Generadores: estas pilas
están pensadas para ahorrar trabajo, consiguiendo hacer figuras que
de otro modo resultarían muy complicadas. Además para cada una de
ellas se ha pensado en ofrecer la mayor cantidad posible de opciones
de configuración, permitiendo así por ejemplo el nodo círculo no
sólo hacer círculos, sino también cualquier polígono regular
seleccionando la cantidad de vértices.
Vectores: esta
serie de nodos nos permite hacer operaciones sobre los vectores y las
matrices. Desde los más básicos que
nos permitirán
componer o descomponer vectores/vértices en sus componentes
cartesianas, hallar vectores perpendiculares o desplazarlos, hasta
otros con los que podremos
definir las matrices de las que hablabámos al principio, definiendo
posiciones, escalas y rotaciones.
Modificadores:
este
es quizá el nombre menos adecuado de todas las categorías, pero,
cómo hemos dicho, la herramienta está en pleno desarrollo. Aquí
encontraremos un variado de utilidades.
Por ejemplo tenemos nodos para hallar áreas, distancias y centros de
polígonos. También podremos evaluar líneas a lo largo de su
recorrido o unir múltiples vértices según ciertas condiciones.
Por último los nodos “Adaptative Polygons” y “Cross Section”
nos permitirán hacer operaciones algo más complejas; con el primero
podremos adaptar y propagar una
geometría
dada sobre otra que será la receptora, mientras que con el segundo
podremos seccionar cualquier tipo de geometría mediante cualquier
cantidad de planos de matrices dados.
Indudablemente hay mucho trabajo por delante para llegar a conseguir
lo que puede hacerse con Grasshopper. Sin embargo la cantidad de
nodos que tenemos empieza a ser importante y su uso puede derivar en
asombrosos resultados imposibles de pensar hace muy poco tiempo.
Como
arquitectos nos resulta realmente interesante tener la posibilidad de
crear herramientas propias. Tanto Blender como Python son muy
abiertos y existe una gran cantidad de documentación sobre ellos,
por lo que integrar dentro de Sverchok tus propios nodos para
conseguir acelerar y optimizar tu proceso creativo, está realmente
al alcance de tu mano.
Si queréis algo más de información aquí os dejamos la web de Nikita (en ruso) y el enlace a la web del addon en Blender:
Si queréis algo más de información aquí os dejamos la web de Nikita (en ruso) y el enlace a la web del addon en Blender:
- http://nikitron.cc.ua/blend_scripts.html
- http://wiki.blender.org/index.php/Extensions:2.6/Py/Scripts/Nodes/Sverchok
En un futuro probablemente crearemos más post para mostrar cómo va evolucionando la herramienta o incluso para enseñar proyectos en los que empecemos a usarla.
Великолепно, продолжай.
ResponderEliminarPerfetto!
ResponderEliminarGracias por documentar en español me gusta mucho este proyecto espero poder apoyar en algo saludos d desde Mexico
ResponderEliminarPero como se empieza a usar... tengo documentación completa, pero no sé como se abre sverchok, y se empieza a usar.
ResponderEliminar@Xavi, lo más sencillo es descargarte el addon de la página de Github del proyecto:
ResponderEliminarhttps://github.com/nortikin/sverchok/
A la derecha abajo donde pone "Download ZIP". Abres Blender y lo instalas como cualquier addon en un zip: User Preferences/Add-ons/Install from file, y una vez instalado lo activas.
Una vez activado, en la ventana de nodos verás que te ha aparecido un nuevo botoncito junto al de composición/texturas/material, lo pulsas, después le das al botón "new" y listo, en el panel de la izquierda tendrás todos los nodos para empezar a usarlos.
http://www.pasteall.org/pic/show.php?id=91914
Si tienes alguna otro problema, no dudes en preguntar!!
Saludos.
Ningun problema con la instalación.
EliminarIncluso en el panel de la izquierda de Default aparece una pestaña que pone SV y tiene 4 botones Scan for props, Update all, hard clean y Clean layouts... que por cierto no sé aun para que van a servir.
Respecto a lo que dices... es puro problema mio de orientación... Entiendo que cuando dices "la ventana de nodos" te refieres al Compositing ¿Cierto? Creo que ya localicé un icono que parece una molecula de ADN aprieto y aparece a mi derecha una ventana que pone grease pencil y tres pestañas: SV Groups Beta, SV Import/export y SV 0.5.5.5... Supongo que con eso ya puedo empezar... voy a ver al rato. ¿Voy por buen camino?
Perfecto - ya puedo empezar... y no, estaba equivocado, los nodos son parte de Compositing, pero son eso, el editor de nodos en la pestaña de abajo de la ventana... de nuevo gracias.
EliminarPerfecto Xavier! Mucho ánimo con ello!!
EliminarAlguno sabe como puedo renderizar algo como esto http://1.bp.blogspot.com/-9oaKw-58A8A/UsjOTifiu_I/AAAAAAABEA4/NjlmouMWNmg/s1600/sverchok_038.png lo hice en sverchok pero como solo esta hecho con una linea de alguna forma no sale en el renderizado, no tiene material y aun si le aplico uno tampoco ¿es por lo delgado de la linea?
ResponderEliminarHola, tendrás que convertirlo en un objeto de Blender para poder renderizarlo. Tendrás que "bakearlo" y aun así, si es sólo una línea, te costará renderizarlo. Lo mejor es que le des un grosor, conviertas a objeto de Blender y después renderices.
ResponderEliminar