formacion grasshopper nologos

53
INSTITUTO ARNAIZ DISEÑO PARAMÉTRICO EXPLÍCITO CON GRASSHOPPER PROFESOR ADOLFO NADAL SERRANO MÓDULO DE DISEÑO PARAMÉTRICO EXPLÍCITO

Upload: worm-stein

Post on 25-Dec-2015

67 views

Category:

Documents


12 download

DESCRIPTION

Formacion Grasshopper

TRANSCRIPT

Page 1: Formacion Grasshopper NoLogos

INSTITUTO ARNAIZDISEÑO PARAMÉTRICO EXPLÍCITO CON GRASSHOPPER

PROFESOR ADOLFO NADAL SERRANOMÓDULO DE DISEÑO PARAMÉTRICO EXPLÍCITO

Page 2: Formacion Grasshopper NoLogos

INSTITUTO ARNAIZDISEÑO PARAMÉTRICO EXPLÍCITO CON GRASSHOPPERADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI [O] LOGICS

[ 2 ]

Los problemas de diseño no pueden ser resueltos sin la ayuda de un computador, siendo la maquina un complemento y no un substituto del talento creativo, la computadora mientras no pue-da inventar, puede explorar relaciones muy rápida y sistemáticamente de acuerdo a reglas preesta-blecidas. El computador funciona como una extensión natural de la habilidad analítica del hombre. Chermayeff, Community and Privacy (1963:166)

1. OBJETIVOS DEL CURSO Los objetivos del curso son, por un lado, conseguir la familiaridad del alumno con sistemas y software de modelado tridimensional, y, por otro, la introducción de metodologías innovadoras de diseño por medio de plataformas integradas diseño paramétrico explícito.

El CAD no es una tecnología estática, y que, una vez aplicada, proporciona todas sus posibilidades a los equipos de diseño de forma definitiva. Sus capacidades van evolucionando con el tiempo, al mismo ritmo que los equipos se hacen más potentes y se abaratan, permitiendo que los desarrolladores de aplicaciones incorporen nuevas características y funcionalida-des a sus productos.

De este modo, estos continuos avances permiten conceptualizar mejor los diseños, estimular y predecir el comporta-miento de nuevas soluciones, realizar estimaciones de costes y compartir diseños con clientes y empresas del sector. Además, es posible hacer numerosas simulaciones virtuales de instancias de diseño desde fases muy iniciales de proyecto. En definitiva, hemos de responder de manera efectiva y eficiente a las tendencias del sector mediante un pensamiento creativo: - A través de la simplificación de las tareas no críticas, tales como las tradicionales de diseño y dibujo (muros, ventanas, pilares, escaleras,...). - El diseño en tres dimensiones debe ser una obviedad. Esto implica obtener grandes mejoras de productividad y cali-dad a través del diseño espacial. - La automatización de procesos generativos de forma. - La posibilidad de testar numerosas instancias formales respondiendo automáticamente a parámetros cambiantes.

2. PLANIFICACIÓN Y MÓDULOS 2.1. Módulo básico El módulo básico trata de conseguir el dominio básico de la herramienta en dibujo 3D, diseño tridimensional, y la creación de listados de propiedades de objetos y elementos constructivos, así como creacición de listados.

El módulo constará de 18 horas lectivas distribuidas durante 6 semanas de la siguiente manera: a. Bloque 1: Introducción a la interfaz y diseño 2D

- Día 1 (20 de junio, 1.5 horas): Introducción a la interfaz y navegación. - Día 2 (21 de junio, 1.5 horas): Introducción a modelado y vistas. Trabajo y modificación de un modelo existente (I), cotas, muros. Paleta de propiedades y “Edit Type”.- Día 3 (27 de junio, 1.5 horas): Introducción a modelado y vistas. Trabajo y modificación de un modelo existente (II), grupos, herramientas copiar, mover, rotar, alinear, matriz. [Mobiliario y grupos si procede]- Día 4 (28 de junio, 1.5 horas): Introducción al diseño esquemático de masas. Importación de archivos de croquis, uso de planos de referencia. Introducción a listados.- Día 5 (4 de julio, 1.5 horas): Diseño esquemático de masas (II). Modificación de geometría en 3D, asignaciones de nive-les, plantas de masa y plantas reales. Ajuste interactivo de volumetrías y presentación básica de listados.

b. Bloque 2: introducción a modelado tridimensional y visualización

- Días 6-8 (5, 11 y 12 de julio, 4.5 horas): Muros: tipos. Muros básicos y muros cortina. Delimitación asociativa de espa-cios y habiitaciones. Edifición de huecos, edición de perfiles y muros curvos. Trabajo con muros cortina: perfiles, pane-les y jerarquía. Comienzo de trabajo de proyecto personal. - Día 9 (18 de julio, 1.5 horas): Suelos, techos, cubiertas (I)- Día 10 (19 de julio, 1.5 horas): Suelos, techos, cubiertas (II). Aplicación de cubiertas y suelos al modelado de una vi-vienda como proyecto personal.

Page 3: Formacion Grasshopper NoLogos

DISEÑO PARAMÉTRICO EXPLÍCITO CON GRASSHOPPERADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI [O] LOGICS

INSTITUTO ARNAIZ

[ 3 ]

- Día 11 (25 de julio, 1.5 horas): Elementos de circulación: escaleras, rampas (I)- Día 12 (26 de julio, 1.5 horas): Elementos de circulación: escaleras, rampas (II)

- Extra: · edición de familias 2D y 3D [3 horas] · preparación de documentación gráfica [1.5 horas] · renderizado y animaciones [1.5 horas]

Page 4: Formacion Grasshopper NoLogos

[ 4 ]

INSTITUTO ARNAIZDISEÑO PARAMÉTRICO EXPLÍCITO CON GRASSHOPPERADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI [O] LOGICS

INTERFAZ DE GRASSHOPPER

Page 5: Formacion Grasshopper NoLogos

[ 5 ]

Page 6: Formacion Grasshopper NoLogos

INSTITUTO ARNAIZDISEÑO PARAMÉTRICO EXPLÍCITO CON GRASSHOPPERADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI [O] LOGICS

[ 6 ]

I. INTERFAZ DE GRASSHOPPER 1. La pantalla de Grasshopper Grasshopper divide la pantalla en áreas que proporcionan información o solicitan la introducción de datos, contando con numerosas ventanas interactivas y contextuales que cambian en función del elemento seleccionado o el comando en ejecución. · Barra de menú: Permite acceder a los comandos, las opciones y la ayuda. · Contenedores y widgets: en función del tipo seleccionado (Params, Maths, Sets, Vector, Curve, Surface, Mesh, Inter-sect, Transform, PanelingTools), muestra las opciones de contenedores (“comandos”) displonibles agrupadas por subtipos. · Área gráfica: Muestra la definición actual de Grasshopper asociada al modelo, así como otras ayudas al mismo (brúju-la). Asimismo se muetra el tipo genérico de previsualización de objetos (ninguno, wireframe, shaded) · Barra de estado: Muestra el autoguardado y la versión de Grasshopper.

2. Barras de menús Las barras se clasifican según tipos, que agrupan funciones (contenedores) de uso semejante. Dichos contenedores, a su vez, están clasificados según subcategorías, lo que ayuda a su localización de manera más sencilla. Esta barra muestra los diferentes comandos agrupados en pestañas de la siguiente manera: - Params, que contiene los siguientes subgrupos, de izquierda a derecha:

· Geometry: contenedores para asociar o referenciar puntos, vectores, y otra geometría sencilla desde el mo-delo.· Primitive: booleanas, números, strings y otro tipo de datos primitivos· Input: sliders, panels (informativos)· Util: utilidades extra como gráficas y otras.

Contenedores y widgets

Menú generalguardado/vista

Pestañas tipo decontendores

Brújula

Markov widget

Pestañas de menú

Versión

Título de de�nición

Modo de previsualización

[Fig 1. Interfaz de Grasshopper]

Page 7: Formacion Grasshopper NoLogos

DISEÑO PARAMÉTRICO EXPLÍCITO CON GRASSHOPPERADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI [O] LOGICS

INSTITUTO ARNAIZ

[ 7 ]

- Maths: incluye herramientas de análisis matemático, fundamentales en diseño generativo y paramétrico. · Domain: operaciones con dominios· Matrix: matrices· Operators: operadores lógicos y sencillos· Polynomials: funciones matemáticas básicas· Script: muy importante, contiene herrramientas para definir funciones, expresiones, y scripts en varios len-guajes de programación.· Trig: trigonometría, incluye seno, coseno y otras conocidas funciones y relaciones trigonométricas· Util: utilidades

- Sets: referente a elementos de información y estructuras de datos. · List: gestión de listas de información, fundamental

· Sequence: especialmente importantes las referentes a eliminación de datos (Cull)· Sets· Strings· Tree

- Vector: · Color · Field · Grid · Plane: importante para la definición de figuras en planos de trabajo diferentes al z=0 · Point: operaciones con puntos · Vector: operaciones con vectores - Curve: · Analysis · Division

· Primitive: creación de todo tipo de curvas primitivas, desdelíneas hasta círculos y arcos · Spline · Util: equivalente a las herramientas de edición de curvas en rhino

[Fig 2. Subgrupo Geometry dentro del tipo Params mos-trando todas las posibles funciones (contenedores)]

Page 8: Formacion Grasshopper NoLogos

INSTITUTO ARNAIZDISEÑO PARAMÉTRICO EXPLÍCITO CON GRASSHOPPERADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI [O] LOGICS

[ 8 ]

- Surface: · Analysis: área, volumen, curvatura... · Freeform: creación de superficies de forma libre · Primitive: cilindros, conos, y otros · Util: - Mesh: · Analysis · Primitive · Triangulation · Util. - Intersect: · Mathematical · Physical · Region (BREPs, Boundary Representations) · Shape - Transform · Afine · Euclidean · Morph · Util - Pestañas agragadas por plugins o extensiones: Paneling Tools y otros. En el caso de Paneling Tools podrás encontrar los siguientes grupos: · Curve · Grid · Grid Attractors · Grid utility · Panel 2D · Panel 3D · Panel Utility · Utility

II. NAVEGANDO Y WORKFLOW DE TRABAJO DE GRASSHOPPER El workflow de Grasshopper está inevitablemente unido a Rhinoceros, y a los objetos de éste. De esta manera, una definición de Grasshopper siempre estará asociada a un objeto o grupo de objetos de rhino, sin los cuales no tendría senti-do. En la mayoría de los casos, querrás comenzar modelando algo muy sencillo en rhinoceros para posteriormente explorar posibilidades de diseño por medio de Grasshopper.

Esto permite explorar en poco tiempo numerosas variaciones de diseño a partir de unas condiciones iniciales deter-minadas. Por esta razón, cada una de las herramientas tiene una serie de opciones que Grasshopper muestra de manera contextual, es decir, dependiente del tipo de objeto o componente que pretendas usar.

Así pues, los pasos a seguir son: - Crear geometría base en rhinoceros - Utilizar dicha geometría mediante referenciación en Grasshopper - Modificar o ampliar la geometría en la definición (previsualización) - Convertir la geometría previsualizada en pobjetos reales mediante el comando “Bake”

1. Navegación en Grasshopper La navegación en Grasshopper es muy sencilla e intuitiva. Puedes hacer zoom/pan con el botón central del ratón y el botón derecho, respectivamente. - Barra espaciadora: muestra menú contextual - Botón izquierdo: selección

Page 9: Formacion Grasshopper NoLogos

DISEÑO PARAMÉTRICO EXPLÍCITO CON GRASSHOPPERADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI [O] LOGICS

INSTITUTO ARNAIZ

[ 9 ]

- Alt+Ctrl + Botón Izq: muestra la localización de un contenedor dentro de las barras de menús - Doble click: menú contextual de búsqueda de contenedores

2. Workflow De manera genérica, abriremos las definiciones de Grasshopper mediante el comando _grasshopper en rhinoceros. Asegúrate de tener la última versión del plugin instalada en tu ordenador. Crearemos entonces una serie de objetos en rhinoceros que asociaremos explícitamente en grasshopper para su definición y modificación. A partir de dichos objetos podremos modificar su geometría, o crear geometría nueva de manera completamente interactiva. III. INICIACIÓN AL WORKFLOW DE GRASSHOPPER: COMPONENTES Y ASOCIACIÓN DE GEOMETRÍA Abre el archivo del tutorial en Rhino (si estás usando Grasshopper, es razonable pensar que eres un usuario avanzado de Rhino, por lo que no se explicará aquí en ningún caso ninguna metodología referente a Rhino). Encontrarás tres líneas. Es-tas líneas son rectángulos redondeados en sus esquinas de diferentes tamaños y a diferentes alturas. La razón de los mismos es crear un contexto a partir del cual modelar un estadio de fútbol absolutamente paramétrico.

Abre ahora Grasshopper (es muy recomendable disponer de dos monitores simultáneamente para poder visualizar las modificaciones en el modelo provocadas en Grasshopper) y el archivo del tutorial.

1. Abrir y preparar el archivo Abre el archivo en menú File>Open Document o directamente en el icono situado en la esquina superior izquierda del Canvas. Una vez que lo hayas abierto, deberías ver una serie de “pilas” o contenedores interconectados por líneas. Los conte-nedores son funciones y las conexiones muestran las relaciones entre ellos.

2. Tipos y estructura de componentes En principio, hay varios tipos básicos de contenedores en Grasshopper - Componentes asociados a geometría básica del modelo (geometry o primitive) - Componentes tipo función, con input/s) y output(s) que no necesariamente han de coincidir en número (de alguno de los tipos y subtipos mencionados anteriormente). - Panels: Notas o displays de información - Sliders: controlan dinámicamente valores numéricos

Área de grupoSlider

Nombre de grupoContenedor asociado a geometría

Contenedor tipofunción

Conexión 1

Conexión 2

[Fig 3. Interfaz de Grasshopper mostrando componentes]

Page 10: Formacion Grasshopper NoLogos

INSTITUTO ARNAIZDISEÑO PARAMÉTRICO EXPLÍCITO CON GRASSHOPPERADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI [O] LOGICS

[ 10 ]

Por la simplicidad de los componentes, nos centraremos básicamente en los comportamientos básicos de los mismos:

a. Display de información Los componentes albergan información de diferentes tipos, bien geométrica, numérica, alfabética o de otra índole. En el caso de contener geometría, ésta se previsualiza de diferentes modos en la ventana de rhino, en función de si es geometría propia de Rhino o creada dentro del entorno de Grasshopper. Así, los puntos se representan como cruces para diferenciarlos de los puntos de Rhino. · La geometría en rojo es geometría creada en Grasshopper pero no activa (es decir, que el componente que la ha crea-do no está seleccionado en ese momento) · La geometría en color verde es geometría seleccionada · La geometría que se muestra en azul es aquélla que está siendo seleccionada actualmente por el usuario.

b. Edición Todos los componentes muestran un menú de edición contextual si pulsas sobre ellos con el botón derecho. · Sobre los sliders, ésto te permitirá editar el tipo de número que contiene, así como sus valores máximos y mínimos. · Sobre los paneles, te permitirá controlar qué y cómo se muestra la información, así como el color de los mismos · Sobre las funciones, además de los genéricos ya explicados, podrás controlar los distintos inputs y outputs de manera directa. Para conectar componentes, sencillamente arrastra el ratón desde el punto blanco del output de uno al input corres-pondiente del siguiente. Por favor, sé consciente de la consistencia de información (es decir, no unas una curva a un lugar donde se supone que debe haber un texto). · Sobre los componentes de asociación de geometría, podrás seleccionar directamente si quieres relacionar el compo-nente a uno o varios elementos del modelo. En función del estado de los componentes, podrás encontrar alguna de las siguientes situaciones:

· Color negro: parámetro con contenido (es decir, con referencia activa a geometría de modelo). Marcado con la letra A en la figura 5. · Color naranja: parámetro correcto que precisa de una referencia de geometría o de datos. Letras B y E. Es posible que dicho color implique la presencia de Avisos o Warnings. Éstos indican posibles problemas con el componente o los datos, pero funcionan a pesar de ello. Esto es, los avisos no tienen que ser corregidos necesariamente. · Color verde: un componente seleccionado o activo (la geometría en la ventana de rhino también se mostrará verde). Letra C. · Color gris: componente normal y en funcionamiento. Letra D. · Color rojo: un componente con errores (posiblemente input inconsistente). Letra F. · Conexión entre componentes. Letra G. Las conexiones pueden tener varios tipos de displays en función del tipo de datos que contengan. Así, serán dobles para listas de datos.

Geometría inicial Rhino

Geometría �nalGrasshopper

Puntos CurvasPuntos seleccionados

[Fig 4. Comparación de geometría en rhino y grasshopper]

Page 11: Formacion Grasshopper NoLogos

DISEÑO PARAMÉTRICO EXPLÍCITO CON GRASSHOPPERADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI [O] LOGICS

INSTITUTO ARNAIZ

[ 11 ]

c. Gestión de input y output La conexión de componentes se realiza mediante “dragging” o arrastre del puntero del ratón entre los diferentes com-ponentes. Para ello, sitúa el cursor sobre el semicírculo blanco correspondiente a la salida de un componente y arrastralo has-ta la entrada correspondiente del siguiente componente. Verás que se crea una previsualización con una flecha que indica qué inputs/outputs has relacionado. Puedes añadir múltiples entradas manteniendo pulsado el botón shift. Para eliminar una conexión, sencillamente pulsa el botón control y selecciona qué conexión quieres eliminar. También puedes pulsar sobre dicha conexión con el botón derecho y seleccionar la opción correspondiente.

d. Edición avanzada mediante zoom-in Algunos componentes muestran controles avanzados. Para acceder a ellos, haz zoom hasta que aparezcan. Algunos de ellos pueden incluir: · Modificación del número de inputs y outputs. · Alineación de texto y otras configuraciones de visualización

NombreInput

Procesamiento de datos Nueva conexión

Output

Conexión in

Conexión in

Conexión in

Conexión out

Conexión out

Conexión out

[Fig 6. Divide: ejemplo de un componente función con todos sus elementos]

[Fig 5. Casos de componentes en función de su estado. Fuente: Grasshopper Premier 2nd edition, LIFT Architects]

Page 12: Formacion Grasshopper NoLogos

INSTITUTO ARNAIZDISEÑO PARAMÉTRICO EXPLÍCITO CON GRASSHOPPERADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI [O] LOGICS

[ 12 ]

3. Receptores inalámbricos Hasta Grasshopper 0.0.6. se tenía también la capacidad de transmitir información inalámbrica mediante el uso de re-ceptores, que podían encontrarse en la subcategoría especial dentro de la categoría/etiqueta de Parámetros. De este modo, se realizaba la conexión normalmente para después ver cómo desaparecía automáticamente. Esto ocurría porque los re-ceptores mostraban la conexión únicamente cuando estaban seleccionados, si bien dicha configuración por defecto podía cambiarse a “always” o “never”. Como cualquier otro componenete, se podía conectar el receptor a tantos otros inputs como necesites.

En versiones más recientes de Grasshopper, los receptores han desaparecido para ser adaptados (absorbidos, realmen-te) en el modo de visualizacion de las conexiones. De esta manera, en vez de usar un emisor, puedes configurar la visualiza-ción de la conexión de un determinado input para que no muestre un cable, sino unas ondas que representan la conexión inalámbrica a distancia. Pulsa el botón derecho sobre el componente y selecciona el tipo de visualización “Wire Display”, tal y como puedes ver en la figura 8.

[Fig 7. Menú contextual habitual. Fuente: Grasshopper Premier 2nd edition, LIFT Architects]

[Fig 8. Configuración de la conexión para visualización inalámbrica]

Page 13: Formacion Grasshopper NoLogos

DISEÑO PARAMÉTRICO EXPLÍCITO CON GRASSHOPPERADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI [O] LOGICS

INSTITUTO ARNAIZ

[ 13 ]

Page 14: Formacion Grasshopper NoLogos

[ 14 ]

INSTITUTO ARNAIZDISEÑO PARAMÉTRICO EXPLÍCITO CON GRASSHOPPERADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI [O] LOGICS

MODELADO PARAMÉTRICO DE UN EDIFICIO: VECTORES, CURVAS Y SUPERFICIES

Page 15: Formacion Grasshopper NoLogos

[ 15 ]

Page 16: Formacion Grasshopper NoLogos

INSTITUTO ARNAIZDISEÑO PARAMÉTRICO EXPLÍCITO CON GRASSHOPPERADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI [O] LOGICS

[ 16 ]

I. DESCRIPCIÓN DEL PROYECTO 1. Objetivo El objetivo del proyecto es mostrar de manera sencilla y eficaz el modo de trabajo con grasshopper mediante un ejem-plo que crece en complejidad y trata con geometría preexistente para posteriormente modificarla y añadir componentes de manera progresiva. - Se tratan los siguientes tipos de geometría: · Puntos y vectores · Curvas · Superficies simples

- El resultado final será el modelo paramétrico de un estadio en el cual podrán controlarse: · Altura de graderíos · Forma y disposición de la cubierta · Cantidad de componentes en cubierta · Triangulación y huecos

2. Punto de partida: curvas base en rhinoceros Dibuja tres rectángulos con “vértices redondeados” en Rhino. Dichos rectángulos serán la base de nuestro edificio y se corresponden vagamente con los perímetros interiores del graderío de un estadio. Asimismo, la curva inferior se usará más adelante para definir el tamaño del campo y la superior para la geometría de la cubierta. Aunque en la figura 1 se han incluido las dimensiones, éstas son relativamente irrelevantes, dado el carácter paramétrico que el modelo irá adquiriendo.

Abre ahora Grasshopper desde la ventana de Rhino mediante el commando “_Grasshopper”. Verás que aparece el plug-in con la ventana vacía. Ya que lo primero que vamos a hacer es asociar geometría existente en el modelo a la definición de Grasshopper, necesitamos unos contenedores (en forma de componentes) que puedan albergar dicha información. Ve a Params>Geometry y selecciona “Crv”. Haz click sobre cualquier punto del lienzo para situar el componente vacío o arrastra el icono. Una vez hayas esto tendrás el componente en el lienzo, y deberás asociar geometría al mismo. Para hacer esto, pulsa con el botón derecho sobre el componente y selecciona la opción “Set One Curve”. A continuación selecciona la primera de las curvas. Nombra los componentes de manera clara y concisa para entender perfectamente el contenido de las mismas. Puedes usar, por ejemplo, “CrvDown”, “CrvMid” y “CrvUp” para definir las curvas inferior, media y superior, respectivamente. Estas curvas van a servir para crear los graderíos y la cubierta.

[Fig 9. Configuración de la conexión para visualización inalámbrica]

Curva inferior: CrvDownCurva media: CrvMedCurva superior: CrvUp

Page 17: Formacion Grasshopper NoLogos

DISEÑO PARAMÉTRICO EXPLÍCITO CON GRASSHOPPERADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI [O] LOGICS

INSTITUTO ARNAIZ

[ 17 ]

3. Crear la superficie del campo a partir de la curva inferior Para crear la superficie del campo de juego vamos a utilizar la herramienta “offset”, que crea curvas desplazadas desde la original a una distancia determinada. Tomaremos como base la curva inferior CrvDown y haremos un offset hacia dentro (con distancia negativa, al tener como partida una curva cerrada). Cuando tengamos la nueva curva, podremos crear las superficies correspondientes al anillo exterior y al campo, de dos maneras diferentes, que se describen en los apartados b. y c. a. Crear las curvas por desplazamiento:

Ve a la pestaña de curvas, selecciona utilidades y dentro de ellas, offset: curves>util>offset. Como hemos dicho, para definir un desplazamiento de curva “offset”, se necesitan los siguientes inputs:

- Curva base para desplazar (“Base Curve”, C): en este caso CrvDown - Distancia de desplazamiento (“Offset Distance”, D): una distancia que puede ser variable, en función de nues-tros intereses. En este sentido podemos parametrizar ya la curva desplazada. - Plano base de desplazamiento (“Base Plane”, P): el plano sobre el cual se realiza el desplazamiento, por defec-to el World XYZ - Tipo de esquina (“Corner Type”, C): con diferentes opciones, (0) none, (1) sharp, (2) round, (3) smooth, (4) cha-mfer.

Para nuestro caso, puedes crear dos sliders, en Params>Input>Slider, y cambiar, mediante la edición de propiedades, su nombre y tipo hasta que concuerden con lo que necesitamos. Ajusta el Slider Offset Dist hasta que pueda contener números negativos menores que 1 y Offset Type a otro que contenga números naturales de 0 a 4. Conecta los sliders correspondientes al componente y la curva a su input. Deberías tener un esquema parecido al de la figura 11.

Base Curve

Result Curve

Base PlaneSlider PanelO�set distance

Corner type

[Fig 10. Offset en Curves>Utils]

[Fig 11. Offset inputs]

Page 18: Formacion Grasshopper NoLogos

INSTITUTO ARNAIZDISEÑO PARAMÉTRICO EXPLÍCITO CON GRASSHOPPERADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI [O] LOGICS

[ 18 ]

b. Superficies mediante curvas planas Una vez hayas obtenido la curva desplazada, procedemos a crear una superficie mediante curvas planas. La idea es crear una superficie entre ambas, de manera que sirva como base a una eventual pista de atletismo perimetral o semejante. Para crear una superficie a partir de curvas planas ve a Surface>Freeform>Planar Srf (Fig. 12). Para crear una superficie plana necesitarás los siguientes inputs: - Set o conjunto de curvas de borde. Sí, eso es todo. Así que conecta las dos curvas (CrvDown y su desplazamiento) al componente para obtener la super-ficie resultante del anillo. Es posible que, si las dos curvas no están en el mismo plano exactamente, el programa cree dos superficies. Si es el caso, lee el siguiente apartado.

c. Superficies mediante booleana o intersección de BREPs En el caso que hayas obtenido dos superficies independientes, puedes sustraer la interior de la exterior para obtener la superficie del anillo, mediante una operación muy semejante a una diferencia booleana. Para ello, siempre que hayas obte-nido dos superficies del componente planar, has de separar los resultados e intersectarlos, para después elegir la superficie intersección de las dos.

Base Curves

Result Surface(s)Timeliner

[Fig 12. Menu Planar Srf y el componente con sus inputs/outputs]

[Fig 13. Sets>Tree>Flatten Tree]

Page 19: Formacion Grasshopper NoLogos

DISEÑO PARAMÉTRICO EXPLÍCITO CON GRASSHOPPERADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI [O] LOGICS

INSTITUTO ARNAIZ

[ 19 ]

Crea en el lienzo una definición parecida a la que se muestra en la figura 14. En este caso lo que vamos a hacer es crear unas superficies planas, recogerlas en la lista del output y “aplanar” esta lista (más información sobre listas en el apartado de-dicado al respecto), para luego separar los elementos de la misma en dos elementos, los cuales van a sustraerse para obtener la intersección.

- Crea las superficies planas - Ve a Sets>Tree>Flatten Tree (o haz doble click sobre el lienzo y busca el componente en el menú emergente) - Asocia el output del componente de las superficies planas al input del componente flatten, de manera que la lista, con entradas del tipo {0}-0 y {0;0}-0 pase a {0}-0,1. Para aclarar cómo funcionan las listas dedicaremos posteriormente un capítulo al respecto. La gestión de datos de Grasshopper es una de las características más importantes del uso del mismo, por lo que es precisa una aclaración básica al respecto. - Una vez hayas “aplanado” la lista que contiene las superficies, podemos separar sus elementos en sendos componentes. Para ello, seleccionaremos cada uno de ellos independientemente, gracias al componente “Item”, que selecciona un elemento de la lista a partir de su índice (es decir, a partir del identificador del mis-mo). Crea, para este caso concreto, dos componentes iguales, a los que vamos a “alimentar” con índices dife-rentes; en función de estos índices obtendremos elementos diferentes (en este caso una u otra superficie). - Una vez separados los componentes, podemos crear la diferencia entre ellos. Sitúa el componente de dife-rencia de Breps, en Intersect>Shape>Solid Difference. Asocia ambas superficies en el componente (uno en cada input) para obtener el resultado deseado.

4. Creación básica de los graderíos y loft de superficies Ya hemos creado las superficies del campo. A continuación crearemos los graderíos del estadio, para lo cual usaremos la curva media “CrvMed” y la superior “CrvUp”. Por un lado, crearemos una serie de divisiones en dichas curvas, y líneas que nos permitar previsualizar la posición de los asientos en el gradería, de modo muy esquemático. Asimismo, podremos contar el número de asientos, que irá variando según creemos más o menos subdivisiones en las curvas. Por otro lado, podemos crear las superficies de los graderíos, para obtener una visión tridimensional más clara del conjunto. El comando Loft toma como inputs un conjunto de curvas y una serie de opciones (que se conectan, como un componente aislado, al componente principal del Loft).

List

List Index

Sliders

Crv Down

Flatten (list)

Index (list item)

Cull (list item)

O�set Planar Srf

List item (select)

Di�erence (Surfaces)

List item (select)

CREATE SURFACE DIFERENCE

CREATE PLANAR SURFACES

[Fig 14. Definición]

Page 20: Formacion Grasshopper NoLogos

INSTITUTO ARNAIZDISEÑO PARAMÉTRICO EXPLÍCITO CON GRASSHOPPERADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI [O] LOGICS

[ 20 ]

a. Creando las subdivisiones de los asientos en el graderío En primer lugar, divide las curvas base. Para ello selecciona el comando Curve>Division>Divide Curve. El componente necesita los siguientes inputs:

- Curva a dividir - Número de segmentos - Dividir en los “kinks” o esquinas.

En este caso, asocia las curvas inferior y media a componentes de división independientes, de manera que resulten en listas independientes de puntos. Crea un slider con números naturales que puedes conectar a ambos inputs de los compo-nentes de división, de manera que nos aseguraremos dividir las curvas en el mismo número de segmentos. Una vez hayamos dividido las curvas, podremos crear líneas entre los puntos resultantes de cada una de ellas, que podríamos asemejar a las “columnas” donde se situarían los asientos en el graderío. Ve a Curve>Primitive>Line, y conecta la salida del primer componente de división como primer input de la línea y la salida del segundo componente de la división como segundo input. Verás cómo se crean las líneas que albergarían, en un caso supuesto, cada uno de los asientos del graderío. Puedes ver la definición en la figura 15.

Podrás apreciar la subdivisión de los asientos entre las dos curvas inferior y superior, tal como ves en la figura 16. La idea es poder controlar tanto la subdivisión en altura como a lo largo de las columnas, es decir, tratamos con una división en forma de rejilla. De esta forma es posible no únicamente controlar la geometría de los graderíos como también conocer la capaci-dad del etadio de manera dinámica. Siguiendo esta lógica sería posible controlar la forma y tamaño del estadio siguiendo una lógica inversa, es decir, a partir de la capacidad deseada del mismo: - Introducir el número de asientos deseados - Introducir la proporción de asientos en vertical (es decir, el número de filas) - Introducir la proporción de asientos en horizontal u ocupación por asiento (es decir, el número de columnas o la dis-tancia entre asientos) La figura 16 muestra, en esta fase del proyecto, tanto las divisiones que hemos creado para las curvas inferior y media como las líneas que las unen, donde teóricamente irían situados los asientos de los graderíos. Por el momento, crearemos unos widgets a modo de indicaciones de su situación; posteriormente podremos sustituirlos por cualquier forma o bloque deseado (esto no se incluye en el presente manual). Dichos widgets serán, simplemente, unas esferas que situaremos en el centro de los asientos.

X axis

Base PlaneInput Surface

NormalDistance

Y axis Z axis

CurveParams

Contours

LineDivide

Divide by lengthSphere

Expression (radius)

Base plan

CREATE SEAT DIVISIONS

CREATE SEAT SURFACES CREATE SEAT “WIDGETS”

[Fig 15. Definición para crear subdivisiones de asientos]

Page 21: Formacion Grasshopper NoLogos

DISEÑO PARAMÉTRICO EXPLÍCITO CON GRASSHOPPERADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI [O] LOGICS

INSTITUTO ARNAIZ

[ 21 ]

b. Superficies base de los graderíos (versión simplificada) Parte de la definición de la figura 15 incluye la creación de superficies para la definición más detallada de la geometría del estadio (superficies inclinadas) y su posterior aplicación para crear los graderíos reales (escalonados). Para crear los graderíos usaremos una vez más el comando (componente) loft, con las propiedades por defecto. Como ya sabes, el comando loft toma una serie de curvas como input, en este caso las parejas inferior-media y media-superior. El resultado de aplicar el comando será, como es evidente, dos superficies donde localizar los graderíos inferior y superior, res-pectivamente. Como es de suponer, es posible que se precise de una zona intermedia de tránsito entre ambos graderíos, por lo que se puede pensar en independizar algo más estas dos superficies. Para hacer el modelo más realista, podemos “duplicar” la curva intermedia mediante un offset y crear la superficie correspondiente al graderío superior con dicha curva, que podemos llamar, a partir de ahora, CrvMed2. Puedes crear la superficie de tránsito, una vez más, usando el comando Loft o PlanarSrf a partir de las dos curvas intermedias. De este modo obtendríamos un modelo más apropiado y ligeramente más completo y complejo. Puedes ver un ejemplo de cómo realizarlo en la definición de la figura 15, si bien trataremos este caso con más detalle en el siguiente capítulo.

Curve Division 1 Curve Division 2 Stand Lines Closeup of stand subdivisions

Upper surface Lower surface CrvDownCrvMed

CrvMed2 (o�set)CrvUp

[Fig 16. Subdivisiones del graderío en sus sucesivas etapas]

[Fig 17. Superficies del graderío diferenciadas por una zona intermedia (resolución de previsualización baja)]

Page 22: Formacion Grasshopper NoLogos

INSTITUTO ARNAIZDISEÑO PARAMÉTRICO EXPLÍCITO CON GRASSHOPPERADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI [O] LOGICS

[ 22 ]

XY

Z

Inpu

t geo

met

ryTr

ansf

orm

atio

n ve

ctor

Inpu

t geo

met

ry

Are

a

Curv

e

Cent

er

Scal

eFac

tor

Scal

eFac

tors

Base

Pla

ne

Cent

roid

Vect

orC

rv m

idC

rv u

pM

ove

Fit P

lane

Non

-USc

ale

Are

aSc

ale

Uni

form

Crv

mid

2C

rv u

p2C

rv in

CRE

ATE

BASE

LIN

ES

OBT

AIN

N

EW L

INES

CRE

ATE

SKYL

IGH

TC

URV

E

MO

DIF

Y SK

YLIG

HT

CU

RVE

CRE

ATE

SURF

AC

E

[Fig

18.

Defi

nici

ón p

ara

la c

reac

ión

de la

sup

erfic

ie b

ase

de la

cub

iert

a co

n lo

s gr

upos

nec

e-sa

rios]

Page 23: Formacion Grasshopper NoLogos

DISEÑO PARAMÉTRICO EXPLÍCITO CON GRASSHOPPERADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI [O] LOGICS

INSTITUTO ARNAIZ

[ 23 ]

5. Cubierta: modificación de curvas y loft A continuación, el estadio precisa una cubierta que enfatice su valor geométrico y arquitectónico. El primer paso a seguir es la definición de las líneas de base que van a conformar, a la postre, la forma de la superficie final de la cubierta. Observa con detenimiento la definición de la figura 18. En ella encontrarás los siguientes pasos: - Obtención de nuevas líneas de definición de la cubierta a partir de las existentes (la cubierta se entiende separada de los graderíos, por lo que se realiza un offset hacia afuera para controlar dichas líneas. Como resultado se obtienen las curvas llamadas Crv mid2 y Crv up 2 - Creación de la curva del hueco de la cubierta mediante sucesivas transformaciones. Para la creación de dicha línea se realiza, una vez más, un offset de la recién obtenida CrvUp2. - Modificación de la curva del hueco de cubierta (CrvIn), tal como sigue:

· Desplazamiento mediante el comando Move, lo que permite controlar su posición sobre el estadio · Escalado uniforme o no uniforme de la misma, para controlar la forma definitiva y apertura del hueco de cubierta. A continuación se describirán las dos formas de escalar.

- Creación de la superficie a partir de las curvas Crv Mid 2, CrvUp2 y CrvIn.

a. Utilización de escalado uniforme El escalado uniforme escala, como su nombre indica, un objeto geométrico con el mismo factor de escala en las tres di-mensiones del espacio. Puedes encontrar el componente en Transform>Affine>Scale/ScaleNU o tecleando scale en el menú emergente cuando haces doble click. Para utilizar el componente, debes “alimentarlo” con la siguiente información: - Geometría a escalar (independientemente del tipo)

[Fig 19. Menú de Scale y ScaleNU]

[Fig 20. Surface>Analysis>Area]

Page 24: Formacion Grasshopper NoLogos

INSTITUTO ARNAIZDISEÑO PARAMÉTRICO EXPLÍCITO CON GRASSHOPPERADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI [O] LOGICS

[ 24 ]

- Centro de escalado: preferiblemente, el centro de la curva. Para obtener el centro de la curva usa Surface>Analysis>Area, un comando que funciona con superficies, curvas, y BREPs (Boundary REPresentations) en general y del que podrás obtener tanto el área del objeto como su centroide. Este componente precisa únicamente de un input geométrico válido. - Factor de escala: en nuestro caso siempre menor que 1 y mayor que 0.1, para evitar problemas con geometría impo-sible.

Conecta la curva interior CrvIn al componente de escalado en G (geometry input). Para hallar el centroide de la curva, que usaremos como punto base para escalar, emplea el comando Area descrito anteriormente. Conecta de nuevo CrvIn como input, y usa el output C (centroide) como input para el escalado. Finalmente crea un slider que contenga valores ente 0.1 y 1 para controlar el factor de escala, que es igual para X, Y, Z, de manera automática. Prueba a modificar los valores de los sliders para ver cómo la curva va cambiando simultáneamente si escala y su colocación.

b. Escalado no uniforme Una vez familiarizados con el escalado uniforme, podemos probar el No Uniforme. La principal diferencia estriba en que el no uniforme precisa 3 inputs que definan cada uno de los factores de escala para las respectivas transformaciones en X, Y, y Z. Asimismo, y de manera un tanto extraña, el escalado no uniforme toma, en lugar de un punto base, un plano de transformación, del que extrae, automáticamente, un punto base a posteriori. Esto va a hacer que tengamos que diseñar un método específico para poder crear un plano donde queremos, lo que nos servirá de investigación a nivel ilustrativo. - Crea un plano base:

En este caso, necesitamos que el plano base de escalado se sitúe, una vez más, en el centro de área (centroide) de la curva en cuestión. Como queremos escalar la curva CrvIn, buscaremos crear un plano cuyo centro esté en el centro de la misma. Podemos hacer esto de diferentes maneras. Una manera relativamente eficiente es hallar por un lado el centroide, y usarlo como base para definir un base por tres puntos. Otra manera más sencilla sería, sencillamente, dividir la curva en un numero suficiente de segmentos (mínimo 3) y tratar de averiguar un plano que pase por todos ellos. Exactamente esto se consigue usando el componente PlFit. Encuentra el componente en Vector>Plane>Plane Fit o introduciendo una búsqueda en el menú contextual que aparece al hazer doble click en el lienzo.

[Fig 22. Opciones de superficie en función de los distintos parámetros de offset, movimiento, y factores de escala]

[Fig 21. Escalado uniforme y escalado no uniforme]

Page 25: Formacion Grasshopper NoLogos

DISEÑO PARAMÉTRICO EXPLÍCITO CON GRASSHOPPERADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI [O] LOGICS

INSTITUTO ARNAIZ

[ 25 ]

- Modifica el plano base: Verás que el plano base se ha creado basado en (0,0,0) pero con la orientación correcta. Todo lo que necesitas hacer es desplazar o trasladar el plano base a su posición correcta, que es el centroide de la curva base. Para ello, halla el cen-troide de la curva con el componente Surface>Analysis>Area, que ya hemos usado anteriormente, y utiliza su output C (centro) como input T (vector de desplazamiento) del componente Move. Puedes ver un close-up en la figura 24.

- Finaliza el comando Scale NU: Ya se puede concluir el escalado no uniforme de la curva. Alimenta el componente Scale NU con la curva, el plano base modificado, y tres valores de X, Y, Z, para comprobar cómo varía la forma de la misma. Obtendrás algo parecido a la figura 22 sin ver la superficie, ya que aún no se ha creado.

Base PlaneScale Factors

X Y ZCurve

Crv centroid

Plane on(0,0,0)

Translate Plane toCurve Centroid

Non-uniformlyscale Curve

NON UNIFORM SCALE

[Fig 23. PlaneFit en Vector>Plane>PlaneFit]

[Fig 24. Non Uniform Scale]

Page 26: Formacion Grasshopper NoLogos

INSTITUTO ARNAIZDISEÑO PARAMÉTRICO EXPLÍCITO CON GRASSHOPPERADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI [O] LOGICS

[ 26 ]

c. Loft Finalmente, une CrvMid2, CrvUp2, y CrvIn en un componente Flatten para posteriormente usar el componente Loft. Esto creará las geometría que falta, y obtendrás como resultado la cubierta. A este nivel, deberíamos tener un estadio para-métrico simple (realmente, una muy simple volumetría) semejante al de la figura 25. Hasta ahora, hemos creado de forma sencilla e intuitiva las superficies más importantes de que consta el estadio, inclu-yendo: - Campo - Graderío - Cubierta A partir de ahora, completaremos el edificio con más detalles de graderío y con una serie de huecos en la cubierta y su estructura, lo que permite conocer más a fondo cómo describe Grasshopper las superficies (si eres usuario de RhinoScript o avanzado de Rhino, ya sabrás los conceptos básicos) y algunos elementos interesantes para modificar los conjuntos numéri-cos.

[Fig 25. Parametric Stadium - nivel básico]

Page 27: Formacion Grasshopper NoLogos

DISEÑO PARAMÉTRICO EXPLÍCITO CON GRASSHOPPERADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI [O] LOGICS

INSTITUTO ARNAIZ

[ 27 ]

Page 28: Formacion Grasshopper NoLogos

[ 28 ]

INSTITUTO ARNAIZDISEÑO PARAMÉTRICO EXPLÍCITO CON GRASSHOPPERADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI [O] LOGICS

MODELADO PARAMÉTRICO AVANZADO: SUPERFICIES Y MODIFICADORES

Page 29: Formacion Grasshopper NoLogos

[ 29 ]

Page 30: Formacion Grasshopper NoLogos

INSTITUTO ARNAIZDISEÑO PARAMÉTRICO EXPLÍCITO CON GRASSHOPPERADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI [O] LOGICS

[ 30 ]

I. DESCRIPCIÓN DE SUPERFICIES EN GRASSHOPPER 1. Topología Básicamente, las superficies se tratan en Grasshopper como entes bidimensionales, por tanto susceptibles de ser des-critas en función de dos términos, que podemos denominar U y V. Imagina que estás en un campo de fútbol y te mueves por él. Conociendo las coordenadas de una de las esquinas del campo, podrías localizarte en función de tu posición con respecto a la banda (ancho) y la línea de portería (largo), siempre dentro de los límites (dominios) del campo. De la misma manera describimos la posición de cualquier punto en una superficie en Rhino y Grasshopper, a partir de los llamados dominios en U y V (que corresponderían al ancho y largo del campo dentro de unos valores máximos determinados).

Ahora, si quisiéramos subdividir el campo en pequeñas superficies, valdría con dividir tanto el ancho como el largo en una serie de segmentos y trazar los correspondientes rectángulos. El número de rectángulos sería el resultado de multiplicar el número de segmentos de uno por el número de segmentos del otro, por lo que incrementamos el número de piezas del terreno de manera muy rápida. De nuevo, el comportamiento de Grasshopper en cuanto a subdivisiones es exactamente el mismo; cada una de las parcelas se denomina Subsuperficie. Para lograr tener subsuperficies tenemos que subdividir cada uno de los dominios por un número de segmentos y aplicar dicha división a la superficie original. Cada una de las parcelas o subsuperficies se comporta en sí misma como una superficie, por lo que podríamos, teóricamente, realizar el mismo proceso de manera recursiva para cada una de las parcelas, si esta fuera nuestra intención.

Sin embargo, el uso de algoritmos recursivos no es el fuerte de Grasshopper (para esto es mejor que programes) y sería precisar entrar en componentes de scripting para poder hacerlo. Además, excede ampliamente el foco de nuestro manual por el momento.

2. El componente SubSrf Encuentra el componente SubSurface en Surface>Util>Isotrim. Por favor, fíjate que el nombre del comando no es SubSrf, a pesar del nombre del componente. Esto se debe a que las subsuperficies se obtienen haciendo recortes (“trims”) a partir de isolíneas (“iso”) de la superficie.

El componente IsoTrim precisa de los siguientes inputs:- Una superficie base, a dividir- Un dominio bidimensional que sirva para realizar la división. Es importante recalcar que el dominio debe ser bidimen-sional, dado el carácter asimismo bidimensional del objeto base de la geometría. Crearemos dicho dominio modifican-do el original de la superficie mediante el componente dominio, que veremos a continuación.

[Fig 26. Isotrim Menu]

Page 31: Formacion Grasshopper NoLogos

DISEÑO PARAMÉTRICO EXPLÍCITO CON GRASSHOPPERADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI [O] LOGICS

INSTITUTO ARNAIZ

[ 31 ]

3. El componente Domain Puedes encontrar los componentes de dominio en Mats>Domain>Domain2 Components. Verás que hay dos com-ponentes que se llaman igual (como ves en la figura 27), realizan la misma operación devolviendo resultados ligeramente diferentes. En el primer caso, el componente devuelve un set de 4 números, correspondiente a los siguientes valores: - U0: valor mínimo del dominio en la dirección U (base para el dominio, en otras palabras). Por defecto, 0. - U1: valor máximo del dominio en la dirección U (final del dominio en esta dirección). - V0: valor mínimo del dominio en la dirección V (base para el otro dominio). Por defecto, 0. - V1: valor máximo del dominio en la dirección V (final del dominio en la otra dirección). En el segundo caso, el componente devuelve únicamente 2 conjuntos de valores: - U: dominio en la dirección U. - V: dominio en la dirección V. La ventaja que ofrece obtener los cuatro valores es que somos más libres de “jugar” con ellos, para luego poder “recrear” otro dominio modificado a partir de los valores que queramos de U y V. Esto es, dado un máximo y un mínimo, podemos crear tantos valores intermedios como queramos y siguiendo el patrón deseado, sin que necesariamente haya de ser un patrón homogéneo con distancias iguales, por ejemplo.

II. UNA CUBIERTA COMPLEJA 1. La base de la cubierta: superficie y subsuperficies La idea de la cubierta es sencilla: ser el repositorio de la representatividad del edificio. Lo que vamos a hacer es subdi-vidir la superficie original que hemos creado en el capítulo anterior en un número determinado de subdivisiones (que podrá controlarse paramétricamente) para luego modificar cada una de esas subsuperficies a nuestro antojo, creando patrones más o menos definidos o más o menos complejos.

V1 (max V)V0 (min V)

V domainU domain

U1 (max U)U0 (min U)

Input domain(surface)

Input geometry(surface)

Input domain(modi�ed)

SubSrf(Isotrim)

Domain to 2 subdomains

Domain to 4 numbers

[Fig 27. Componentes SubSurface (IsoTrim) y Domain]

Page 32: Formacion Grasshopper NoLogos

INSTITUTO ARNAIZDISEÑO PARAMÉTRICO EXPLÍCITO CON GRASSHOPPERADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI [O] LOGICS

[ 32 ]

El proceso será el siguiente: - Usar la superficie generada como base - Modificar el dominio de la misma - Obtener subsuperficies a partir de la superficie base y el dominio modificado

a. Usar la superficie generada como base Si bien puedes enganchar directamente la superficie resultante del loft al componente de subdivisión, es posible que quieras hacer esto de manera más explícita usando un parámetro superficie que esté conectado inalámbricamente a dicha superficie, para ganar claridad en la definición.

b. Modificar el dominio de la superficie base y crear las subsuperficies Esta es realmente la parte más interesante de nuestra actuación por el momento. La figura 29 explica perfectamente los pasos a seguir, que se describen a continuación: - Obtención del dominio original con los valores máximo y mínimo para la creación de un rango entre ellos.

· Ve a Math>Domain>Domain2 Components (el último de la lista) y añade el componente al lienzo de la defi-nición.

- Asignación de un rango de divisiones independientes para los dominios U y V mediante gráficas · Crea dos sliders con números naturales. Éstos servirán para definir cuántas divisiones tendrán los rangos que asignaremos a U y V.· A continuación crea dos componentes Range (Rango), que encontrarás en Sets>Sequence>Range. Estos componentes crean un conjunto de valores entre dos dados con un número de pasos (por ejemplo, crea un conjunto de valores ente 0 y 1 con 10 pasos intermedios: 0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0). Como habrás imaginado, conecta los sliders que has creado a dichos componentes y verás que el rango resulta en n+1 valores a partir de un slider de n valores.

· Finalmente crea unas gráficas en Params>Input>Graph Mapper y conecta el output del rango a cada una de ellas de manera independiente (es decir, duplica el resultado para U y V).

- Ajuste de las gráficas en función de los criterios de diseño deseados. · Con el botón derecho puedes seleccionar el tipo de gráfico que quieras (edita el componente), prueba varios tipos y observa el resultado. - Creación del dominios bidimensional a partir de los valores U0 y V0 iniciales y los obtenidos de los rangos para U y V. Para superficies nos interesa tener un rango de valores combinado para las dos direcciones principales de la misma, que hemos denominado U y V. Para ello, hemos de combinar los dominios lineales que vamos a crear independientemente en

Context menu(15 values for input = 14)

Domain(by default from 0.0 to 1.0)

Number of stepsfor V domain division

Range Graph[Fig 28. Componentes Domain, Range y Graph]

Page 33: Formacion Grasshopper NoLogos

DISEÑO PARAMÉTRICO EXPLÍCITO CON GRASSHOPPERADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI [O] LOGICS

INSTITUTO ARNAIZ

[ 33 ]

Rang

e do

mai

n(d

efau

lt 0

to 1

.0)

Exp-

type

gra

ph

Num

ber o

f val

ues

Rang

eM

axim

um v

alue

V1

List

Shift

by

1

Subd

ivis

ions

Rang

eG

raph

mod

i�er

sM

ultip

ly

by m

axSh

ift li

stD

omai

nLe

ngth

Cull

Cre

ate

2D D

om

RAN

GE

DO

MA

IN

U D

OM

AIN

APP

LY D

OM

AIN

V D

OM

AIN

Orig

inal

sur

face

’s do

mai

n(n

eed

max

val

ues,

min

val

s =

0)

Subd

ivis

ions

inU

\V d

irect

ions

Poin

ts o

nsu

rfac

eFl

atte

npo

int l

ist

New

poin

t lis

ts4

item

sea

ch

Nor

mal

vect

ors

uv para

met

ers

List

of

subs

urfa

ces

Num

ber o

fsu

bdiv

isio

ns*k

eep

1

Surf

ace

divi

deO

rder

list

Get

list

Srf4

Pt

[Fig

29.

Sub

divi

de S

urfa

ce c

on ra

ngos

y m

odifi

cado

res

de g

ráfic

as]

[Fig

30.

Roo

f Tria

ngul

atio

n]

Page 34: Formacion Grasshopper NoLogos

INSTITUTO ARNAIZDISEÑO PARAMÉTRICO EXPLÍCITO CON GRASSHOPPERADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI [O] LOGICS

[ 34 ]

uno sólo. Sigue los pasos a continuación:· Conecta el resultado de la gráfica al input B de un componente de multiplicación (encuéntralo en Math>Operators>Multiplication). Conecta el máximo del dominio U o V en el input A. Como resultado obten-drás un rango ente 0.0 y el máximo que has introducido en el parámetro A.· A continuación hemos de crear un dominio lineal, para lo que necesitamos dos listas. La primera lista es el ran-go que acabamos de obtener de la multiplicación. La segunda debe contener los mismos valores desplazados, para poder tener, al combinarlos, una lista del tipo 0.0 to 0.1086, 0.186 to 0.166... que corresponden a diferentes puntos de la superficie. Para ello, utiliza un componente Shift (recuerda, encuéntralo en Sets>List>Shift List) y asigna el integer 1 a la entrada S. · Crea el dominio a partir de las dos listas. Conecta la original a A y la recién creada (“Shifted List”) a B. Verás que el último item de la lista contiene un intervalo no válido, ya los extremos del mismo coinciden. Para evitar erro-res, has de eliminar este último item de la lista, lo que puedes conseguir mediante el comando CullN.

- Asignación de este conjunto de dominios 2D al componente de subsuperficie para que cree el número de subdivisio-nes apropiado.

· Asigna el índice del último item de la lista a CullN y ya tienes la lista preparada para ser usada por el 2D Domain (que encontrarás en Math>Domain>Domain2 -“create a 2D Domain from 2 linear domains”).

- Conecta finalmente el dominio creado al componente SubSrf para obtener, de la superficie original, las subsuperficies correspondientes. Vamos a usar ahora cada una de estas (sub)superficies para popular la original con componentes. Puedes ver la definición detallada de estos últimos pasos en la figura 31.

2. Usar subsuperficies para popular un modelo con componentes de diseño. Lo que necesitamos ahora es extraer los 4 puntos de los vértices de las subsuperficies creadas para crear una triangula-ción. De esta manera, si los puntos son, por ejemplo, el 0, 1, 2, y 3, podemos crear 2 triángulos con los puntos 0, 1, y 2 por un lado, y 0, 2, y 3 por otro. Al crear superficies en dichos triángulos, usaremos el componente Srf4Pt, o creear superficie a partir de 4 puntos. Recuerda que, para que la superficie o polilínea correspondiente esté cerrada, el primer punto y el último han de coincidir, por lo que deberemos alimentar los puntos de la siguiente manera: 0,1,2,0 para el primer triángulo y 0, 2, 3, 0 para el segundo. Una vez hayamos triangulado extraeremos las aristas de las superficies y procederemos a modificar la superficie para que sea más compleja. Puedes ver la definición exacta en la figura 30. Los pasos que debes seguir son los siguientes: - Utilización del componente SDivide (Surface>Util>Divide Surface) para la obtención de los puntos sobre la superficie. Verás que la lista que resulta de dicho componente es un poco confusa, por lo que es recomendable “aplanarla” con el com-ponente Sets>List>Flatten List y proceder a ordenarla a nuestro gusto. - Crear una lista ordenada de puntos:

· Conecta el resultado del flatten a un componente de Partition, que crea sublistas a partir de una lista inicial dividiéndola cada n componentes. En nuestro caso, como queremos tener 4 puntos en cada elemento de la lista, crearemos una partición cada 4 elementos. De este modo, obtendremos tantas listas como elementos teníamos entre 4 (o lo que es lo mismo, el mismo número que subsuperficies).· La lista estará entonces ordenada y podemos proceder a ordenar los puntos para los triángulos.

- Ordenar los puntos para crear la triangulación:· Sigue exactamente los pasos que encuentras en la figura 30, es más sencillo de lo que parece a simple vista. De lo que se trata es de poder identificar cada uno de los puntos y de introducirlos en el orden correcto. Si te fijas, verás que los inputs A y D (primer y último punto) del componente Srf4Pt son iguales, y corresponden al punto “0” (primer punto de cada item de las listas). Los puntos B y C necesitan retocarse mediante un “Shift” para que correspondan a los puntos 1 y 2 (o segundo y tercero de las listas). Así, los inputs del primer componente A, B, C, y D, corresponden a los 0, 1, 2, y 3. De igual modo , los puntos A, B, C, y D del segundo componente corres-ponden a 0, 2, 3, y 0.

Esto es todo lo que necesitas para triangular cualquier superficie.

3. Usar los triángulos para crear componentes. Recuerda que hemos creado triángulos a partir de superficies de cuatro puntos. Esto lo hacemos de esta manera para disponer de superficies “cerradas”, siempre más estables a nivel geométrico. A continuación obtendremos los componentes siguiendo el protocolo que se indica:

Page 35: Formacion Grasshopper NoLogos

DISEÑO PARAMÉTRICO EXPLÍCITO CON GRASSHOPPERADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI [O] LOGICS

INSTITUTO ARNAIZ

[ 35 ]

Orig

inal

sur

face

’s do

mai

n(n

eed

max

val

ues,

min

val

s =

0)

Resu

lt(r

ange

from

0.0

to

max

dom

ain

valu

e)

Rang

e fr

om 0

.0 to

m

ax d

omai

n va

lue

Dom

ain

Culle

d D

omai

n Li

st*e

rase

d la

st in

terv

al

Shift

ed li

st

List

Line

ar d

omai

n 1

Line

ar d

omai

n 2

2D

dom

ain

Inde

x of

last

ite

m in

list

Shift

list

by

1

Gra

ph v

alue

s(fr

om 0

.0 to

1.0

)

Max

dom

ain

valu

eVa

lue

rang

e(0

.0 to

1.0

)

Shift

list

[Fig

31.

Cre

ació

n de

l dom

inio

bid

imen

sion

al]

Page 36: Formacion Grasshopper NoLogos

INSTITUTO ARNAIZDISEÑO PARAMÉTRICO EXPLÍCITO CON GRASSHOPPERADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI [O] LOGICS

[ 36 ]

- Duplicar los bordes de las superficies - Unir los bordes duplicados para crear un triángulo - Escalar o crear un offset hacia dentro del triángulo para crear otro interior - Crear una superficie entre ambos - Extruir la superficie como sólido con una superficie deseada

a. Duplicando los bordes Usa el comando “Edges”, que extrae las líneas de borde (las aristas) de un objeto BREP cualquiera. En el ejemplo verás que lo hemos hecho con la pareja de listas de superficies obtenidas de la triangulación. Como resultado obtendrás una lista de curvas que a continuación hemos de tratar para obtener triángulos cerrados.

b. Unir los bordes duplicados Para unir los bordes, toma la lista de “Naked Edges” de los resultados del comando “Edges” anterior. Usa Flatten sobre ella para obtener una lista unidimensional con todos los bordes. Deberías obtener una lista con exactamente el triple de objetos de la lista inicial (es decir, tres aristas por cada rectángulo). Al “alisar” la lista, todos los bordes están indeferenciados en la nueva lista, pero en orden. Es decir, cada grupo de tres bordes consecutivos pertenece a un mismo triángulo, por lo que podemos formar sublistas de 3 elementos que correspondan a cada uno de los 3 bordes de cada triángulo. Para ello, usa el comando “Partition” de lista con la resultante del Flatten e introduce un valor de 3 en el input S (Size of List, o tamaño de la lista). Obtendrás un conjunto de sublistas (tantas como triángulos) que contienen cada una los tes bordes que necesitamos. A continuación une dichas aristas conectando el output C del comando Partition con el input C del Join. Obtendrás la lista de curvas unidas y cerradas.

c. Escalar el borde para obtener el hueco interior del componente Como en ocasiones interiores, podemos escalar cada una de las curvas obtenidas de manera uniforme para crear hue-cos en nuestros componentes que nos sirvan para simular una estructura de celosía tridimenional, barras, o cualquier otro tipo de configuración. Para ello, sigue los pasos que ya conoces: - Obtén el centroide de masas de la curva exterior - Crea un slider para el factor de escala que varíe entre algo más de 0 y algo menos de 1 (0 podría dar error y 1 dejaría la curva sin modificar, lo que también podría generar un error). - Conecta las curvas, centroides, y factor de escala al componente Scale Puedes además introducir variantes de diseño mediante la modificación de estas curvasvariando su geometría de dife-rentes maneras, incluyendo: - Su grado - La inclusión de fillets para redondear los bordes - Otras que puedas pensar. En este caso, hemos utilizado el comando fillet con un slider para modificar las curvas interiores. También puedes utili-zar cualquier otro tipo de factores externos a la geometría (que veremos más adelante) o internos a ella, tales como - La curvatura de la superficie original (a menor curvatura mayores esfuerzos), - La posición relativa de las piezas, - El ángulo con la vertical,o cualquier otro parámetro que ayude a que tu diseño sea más inteligente. d. Crear una superficie entre ambos Una vez más estamos recurriendo a partes y componentes que ya nos son conocidos. Para crear la superficie entre las curvas, y al haber sido las primeras escaladas uniformemente (lo que nos garantiza que son coplanares), podemos emplear el comando “Planar”, al que asignaremos tanto las curvas obtenidas inicialmente de “Join” como las que acabamos de crear mediante “Fillet” (o el método que hayas estimado oportuno). e. Extruir la superficie Extruir la superficie requiere que definamos una serie de parámetros: - En primer lugar, el vector director de la extrusión (que nos dará la dirección, el sentido y la magnitud de la misma). Po-

Page 37: Formacion Grasshopper NoLogos

DISEÑO PARAMÉTRICO EXPLÍCITO CON GRASSHOPPERADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI [O] LOGICS

INSTITUTO ARNAIZ

[ 37 ]

Bezi

er-t

ype

grap

h

Nak

ed E

dges

Non

man

ifold

Edg

es

Inte

rior E

dges

Obt

ain

curv

e ce

ntro

idDow

n-sc

ale

curv

e(o

btai

n in

ner c

urve

)

Crea

te in

-bet

wee

n pl

anar

sur

face

uv P

aram

eter

s

Edge

s

Extr

ude

Srf C

lose

st P

oint

Gra

phm

odi�

ers

OBT

AIN

JO

INED

ED

GES

- C

LOSE

D L

OO

PSC

REAT

E IN

NER

CU

RVE

OFF

SET

COM

PON

ENTS

CA

LCU

LATE

EX

TRU

SIO

N O

PTIO

NS

[Fig

32.

Cre

ació

n de

l dom

inio

bid

imen

sion

al]

Page 38: Formacion Grasshopper NoLogos

INSTITUTO ARNAIZDISEÑO PARAMÉTRICO EXPLÍCITO CON GRASSHOPPERADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI [O] LOGICS

[ 38 ]

demos obtenerlo directamente evaluando la superficie en un punto dado. Para ello, lo más sencillo es calcular el punto más cercano de la superficie al centroide de masas de cada uno de nuestros componentes, y hallar sus coordenadas en espacio UV (R2).

Para ello, usa el comando Surface>Analysis>Surface Closest Point (Surface CP). Verás que el componente tiene dos inputs, que corresponden al punto de referencia P y a la superficie base S. Los outputs que genera son los siguientes: · P: Closest Point o punto más cercano sobre la superficie · uvP: coordenadas UV del punto, el output que necesitamos · D: distancia ente el punto seleccionado y la superficie de referencia Podríamos pensar que lo que necesitamos es el punto más cercano. Sin embargo, y puesto que estamos tratando con vectores, necesitamos las coordenadas del punto en R2 para posteriormente evaluar la superficie con estos parámetros y obtener la normal a la superficie en cada punto.

El comando “Eval” (Surface>Analysis>Evaluate Surface) toma una superficie, una pareja de coordenadas (u,v) y devuel-ve lo siguiente:

[Fig 33. Surface CP Menu]

[Fig 34. Evaluate Surface Menu]

Page 39: Formacion Grasshopper NoLogos

DISEÑO PARAMÉTRICO EXPLÍCITO CON GRASSHOPPERADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI [O] LOGICS

INSTITUTO ARNAIZ

[ 39 ]

· Punto: el punto (coordenadas x,y,z) en las coordenadas u y v dadas. · Normal: el vector normal a la superficie en dicho punto. Por defecto, el vector es unitario. · Frame: en ese punto, devuelve el plano tangente a la superficie. De este modo, extraemos la normal que usaremos como base a la extrusión, con la dimensión por defecto (1 unidad) o modificada por medio de algún tipo de escala o factor.

- En segundo lugar, debemos definir la dimensión de la extrusión. Para escalar un vector usa el comando “Amplitude”, que encontrarás en Vector>Vector>Amplitude. El mecanismo del componente es extremadamente sencillo y necesitas úni-camente el vector base y el factor de escala. Ya hemos empleado sliders para escalar geometría en ocasiones anteriores, así que no vamos a detenernos en ello.

En esta etapa, deberías tener un modelo semejante al de la figura 35

III. PERFECCIONANDO EL GRADERÍO Probemos a continuación a perfeccionar el graderío. Si hasta ahora éste lo habíamos representado únicamente con una superficie inclinada, es posible crear automáticamente los asientos o graderíos en función de su altura, siguiendo la con-figuración base de la superficie que hemos generado originariamente. Para ello crearemos una serie de curvas de contorno con unos intervalos definidos (1 metro, por ejemplo), las extruiremos para crear un segundo grupo, y uniremos mediante superficies las del primer y segundo grupo. Este proceso se puede repetir tantas veces como tramos diferentes de galería tengamos, de manera que únicamente lo explicaremos y diseñaremos una vez.

Puedes ver una descripción diagramática de la definición en la figura 36 a continuación.

1. Crear las líneas de contorno. Para crear las líneas de contorno usaremos el componente Intersect>Mathematical>Contour. Arrastra el componente al lienzo y verás que precisa de una gran cantidad de inputs, que explicamos a continuación:

[Fig 35. Modelo acabado con cubierta]

Page 40: Formacion Grasshopper NoLogos

INSTITUTO ARNAIZDISEÑO PARAMÉTRICO EXPLÍCITO CON GRASSHOPPERADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI [O] LOGICS

[ 40 ]

- S (Shape): malla o BREP de base. La superficie del loft inicial. - P (Plane): plano base para comenzar los contornos. El plano base el más bajo posible, por tanto lo hallaremos con el componente del área de la curva base (la del campo)- - N (Normal): dirección normal al desplazamiento del plano de contorno. Éstos serán perpendiculares al vector. El vec-tor será vertical inicialmente. - D (Distancia): distancia de salto entre plano y plano para los contornos. Esta distancia la controlaremos por un slider, pero para comenzar puede ser 1 unidad.

Observa la definición de la figura 37 para comprender el proceso completo. Verás que en la última fase se hace preciso ordenar las listas de las curvas con las que tratamos para su correcta aceptación por el comando Loft. Este extremos lo expli-caremos más adelante con cautela.

Define los inputs del componente Contour con los siguientes valores: · Shape: el loft original, la superficie con la que hemos trabajado hasta ahora. · Plane: el plano base de la curva que hallamos partir del centroide. Define el plano con el origen en el cen-troide de masas de la curva (ya calculado previamente), el eje X universal y el eje Y universal. Los ejes puedes extraerlos de Vector>Vector>UnitX y Vector>Vector>UnitY. Conecta dichos componentes al input del plano. · Normal: un eje vertical y hacia arriba, es decir, el vector Z · Distancia: en este caso crearemos un slider, pero podemos trabajar con 1 unidad (es decir, los contornos es-tarán separados entre sí 1 metro en vertical)

2. Copia las líneas de contorno Este paso es muy sencillo. Mueve las líneas de contorno hacia arriba la misma distancia que hayas usado para crear los mismos contornos, de manera que la primera línea copiada coincida en altura con la segunda del contorno. Como ves, cuando vayamos a crear la nueva superficie, deberemos estudiar cuidadosamente cómo ordenamos las listas de curvas.

Input geometry(surface)

1

Loft Original (previsualización)

Moved contours

3

Vertical o�setlines (move)

Final geometry(loft between contour

and moved curves)

4

Final loftsurface

Contoursfrom Loft Surface

2

ContourLines

[Fig 36. Proceso de modelado del graderío]

Page 41: Formacion Grasshopper NoLogos

DISEÑO PARAMÉTRICO EXPLÍCITO CON GRASSHOPPERADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI [O] LOGICS

INSTITUTO ARNAIZ

[ 41 ]

X A

xis

vect

orY

Axi

s ve

ctor

Vert

ical

vec

tor

(hor

izon

tal p

lane

s)

Orig

inLo

ft s

urfa

ceBa

se P

lane

Nor

mal

vec

tor

Wea

ving

pat

tern List

1Li

st2

Dis

tanc

e

Inpu

tcu

rves

Cont

our

Cont

our

Cont

our

Dis

tanc

ePl

ane

Nor

mal

Vect

or

CRE

ATE

CON

TOU

R LI

NES

MO

VE C

ON

TOU

R LI

NES

LOFT

WEA

VED

CU

RVE

LIST

[Fig

37.

Cre

ació

n de

las

curv

as d

e co

ntor

no y

el l

oft d

efini

tivo

para

los

grad

erío

s]

Page 42: Formacion Grasshopper NoLogos

INSTITUTO ARNAIZDISEÑO PARAMÉTRICO EXPLÍCITO CON GRASSHOPPERADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI [O] LOGICS

[ 42 ]

3. Ordena las listas de curvas Para crear el loft, ten en cuenta el orden en el que vamos a introducir las curvas. Éste debería ser el siguiente: - Primera curva de contorno (lista 1) - Primera curva movida (lista 2) - Segunda curva contorno...

Como ves, hemos de combinar los elementos de las listas uno a uno, por lo que se hace imprescindible el uso de Weave. Este componente, que encuentras en Sets>List>Weave, te permite definir un patrón de “hilado” ente dos listas. En este caso, deberemos definir cuántos elementos y en qué orden (de cada lista) se van a introducir (aunque es el comportamiento por defecto del componente hacer uno a uno).

Haz click con el botón derecho sobre el componente para abrir el panel contextual. En el input P, dentro de la opción “Set Multiple Integers”, define los siguientes: 0,1. Estos corresponden a la lista 0 y a la lista 1. De esta manera, el componente analizará las listas y cogerá el primer elemento de la primera y luego el primer elemento de la segunda, y en ése orden los insertrará en la nueva lista. Al llegar al final de la definición del patrón, volverá a hacer los mismo con el siguiente elemento de las lista hasta que las dos listas se acaben.

Una vez hayas hecho esto con las listas, obtendrás un única lista “refundida” de las dos anteriores, y que podrás pasar directamente al comando loft. El resultado debería ser como el de la fase 4 de la figura 36. Repite esta operación con tantos tramos de graderíos tengas, e intenta crear tantos parámetros como sean necesarios para tener un control apropiado sobre el modelo. Recuerda que la definición correspondiente a este modelo es una definición simplificada, y que por tanto es muy mejorable. Algunas opciones serían: - Introducir atractores para generar variabilidad externa a la definición geométrica. - Modificar las aperturas de los huecos en función de factores intrínsecos al objeto. - Ver posibilidades de scripting para fabricación, lo que implicaría un cambio radical del modelo.

[Fig 38. Definición del patrón de weave]

Page 43: Formacion Grasshopper NoLogos

DISEÑO PARAMÉTRICO EXPLÍCITO CON GRASSHOPPERADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI [O] LOGICS

INSTITUTO ARNAIZ

[ 43 ]

Page 44: Formacion Grasshopper NoLogos

[ 44 ]

INSTITUTO ARNAIZDISEÑO PARAMÉTRICO EXPLÍCITO CON GRASSHOPPERADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI [O] LOGICS

CREACIÓN DE GEOMETRÍAS LIBRES COMPLEJAS CON CRITERIOS ESTÉTICOS

Page 45: Formacion Grasshopper NoLogos

[ 45 ]

Page 46: Formacion Grasshopper NoLogos

INSTITUTO ARNAIZDISEÑO PARAMÉTRICO EXPLÍCITO CON GRASSHOPPERADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI [O] LOGICS

[ 46 ]

I. OBJETIVO 1. Topología Esta parte del manual se centra en generación de geometría compleja y su modificación a partir de controles externos interactivos. Dichos controles son externos a la volumetría propia del edificio o modelo y pueden considerarse modificadores del mismo, condicionantes que influyen en el comportamiento del mismo. De este modo, soleamiento, vistas, o sencilla-mente cuestiones estéticas y de voluntad de diseño, pueden asemejarse a limitaciones geométricas. De este modo, un punto puede significar un rayo de luz, o un vector una dirección de apertura de lamas o semejante.

2. Descripción del marco proyectual Debes haber manejado Grasshopper con cierta soltura antes de comenzar a modelar este tipo de geometrías. Traba-jaremos con una superficie sencilla a la que aplicaremos un algoritmo de triangulación y posteriores modificaciones para generar volumen en componentes. Posteriormente, modificaremos la geometría ya creada con una serie de atractores.

II. TRABAJAR CON EL ALGORITMO VORONOI SOBRE DIFERENTES SUPERFICIES 1. Breve descripción del algoritmo Imagina que tienes un mapa de una ciudad en donde haya una cantidad n determinada de repetidores móviles, por ejemplo. Un teléfono localizado en cualquier punto de la ciudad trata siempre de conectar con los postes más cercanos, por lo que la ciudad se divide en zonas, en donde cada una de ellas tenga exactamente la cobertura de uno y sólo uno de esos repetidores y se encuentre lo más cerca posible del mismo sin que exista ningún otro repetidor más cercano. La resolución de este particionado zonal de un territorio definido se dispersa mediante el diagrama de Voronoi, y se resuelve matemática-mente mediante una ecuación de tipo n*(log n) para permutar varios algoritmos; sin embargo, no vamos a entrar en el algo-ritmo en tanta profundidad. Por otro lado, el Voronoi puede resolverse además por medio de teoremas geométricos como la triangulación Delaunay.

Puedes ver un gráfico resuelto con el algoritmo en la figura 39. Verás que hay una serie de puntos y líneas. Los puntos más oscuros corresponden a los puntos de los repetidores, en el caso anterior, mientras que los grises corresponden a las celdas que aquéllos definen. De este modo,. se crean paquetes o zonas que corresponden a cada uno de los puntos dentro de un espacio finito y limitado. Como puedes observar, todo lo que necesitamos es un conjunto de puntos y un espacio o marco que los contenga. En nuestro caso, aplicaremos además esta solución al espacio bidimensional de una superficie, ya que éstas pueden definirse en espacio R2, al igual que la solución plana que estamos tratando en el ejemplo.

[Fig 39. Voronoi en plano, en gris las celdas o espacios contenedores]

Page 47: Formacion Grasshopper NoLogos

DISEÑO PARAMÉTRICO EXPLÍCITO CON GRASSHOPPERADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI [O] LOGICS

INSTITUTO ARNAIZ

[ 47 ]

2. Aplicando el algoritmo en Grasshopper (método I) En este primer caso vamos a trabajar con el algoritmo de una mare muy específica: dibujaremos el algoritmo en 2D, crearemos la solución tridimensional a partir de la caja contenedora de lasuperficie base; calcularemos la interesección ente la solución Voronoi y nuestra superficie, y crearemos una malla a partir de dicha intersección. Otra opción es, sin lugar a duda, mapear la solución bidimensional plana directamente sobre una superficie. También estudiaremos esta opción. En función del tipo de superficie que tengas, es posible que quieras usar uno u otro métodos.

En cualquiera de los casos, ya existe un componente que resuelve Voronoi en Grasshopper, por lo que no es necesario que intentes crearlo tú. Como en la mayoría de los casos, basta con emplear de manera adecuada los componentes existen-tes.

a. Crea el setup para la solución Voronoi Recuerda, todo lo que necesitamos es una superficie y una nube de puntos. Para la superficie puedes crear una desde el principio en Rhino o seleccionar, por ejemplo, la cubierta del estadio que acabamos de diseñar en el apartado anterior. La nube de puntos, en este caso, la crearemos directamente dentro de la interfaz de Grasshopper mediante la “población” de una superficie, si bien se podría intentar controlar manualmente.

- Para crear una distribución aleatoria de puntos sobre una superficie, hallaremos primero el dominio de la superficie, y luego encontraremos (dentro de dichos rangos o dominios) tantos números aleatorios como necesitemos, para combinarlos en parejas que resulten finalmente en parámetros U y V. Así pues:

· Halla el dominio de la superficie mediante el comando Domain. Encuentra el componente en Maths>Domain>Domain2 Components. Como probablemente sepas, el comando precisa una superficie u ob-jeto con un dominio bidimensional y lo descompone en sus subdominios U y V, los cuales, a su vez, son rangos de números que oscilan ente 0 y uno superior. Usaremos el valor de dichos números para calcular otros aleato-rios que pertenezcan a dicho dominio.

· Genera números aleatorios mediante el comando Sets>Sequence>Random. De nuevo, este componente pre-cisa un dominio para el rango numérico (R), la cantidad de números aleatorios a generar (N), y una semilla (Seed, S) para la generación del número aleatorio. Crea dos contenedores separados para U y V, y conéctalos de forma independiente. Asegúrate de que tanto uno como otro componente generen el mismo número de

[Fig 40.Componente Domain2Components]

Page 48: Formacion Grasshopper NoLogos

INSTITUTO ARNAIZDISEÑO PARAMÉTRICO EXPLÍCITO CON GRASSHOPPERADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI [O] LOGICS

[ 48 ]

U d

omai

nV

dom

ain

Srf

3D V

or

Obt

ain

vert

ices

on s

urfa

ceAv

erag

e to

obta

in s

cale

cent

er

nth

mes

h

orig

inal

seg

men

t

strt

pt

end

pt

scal

ed s

egm

ent

(n-1

)th

mes

h

Segm

ent’s

end/

star

t poi

nts

Vert

ices

from

segm

ents

Face

ord

er(q

uads

)M

esh

list

Oth

er s

egm

ent’s

end/

star

t poi

nts

Rem

ove

dupl

icat

ed

data

Dom

ain

Rand

omiz

eVo

rono

iInt

erse

ctSh

ift li

sts

Mes

hes

Join

Eval

uate

Popu

late

Redu

ce rn

d

OBT

AIN

BBO

X

BASE

GEO

MET

RY

ORD

ER P

OIN

TS

CRE

ATE

MES

H

RND

SRF

PO

PULA

TIO

N

OPT

ION

1

OPT

ION

2

1 2 3 4

1

1

2

2

3

3

4

A

B

D

C

1

2

3

4

4

vert

ex o

rder

*in

QU

AD

resu

lting

mes

h*s

ingl

e fa

cere

sulti

ng m

esh

*all

face

s

1

2

3

4

[Fig

41.

Defi

nici

ón d

e Vo

rono

i par

a cr

ear u

na m

alla

a p

artir

de

una

dist

ribuc

ión

de n

ube

de p

unto

s so

bre

una

supe

rfici

e (m

ostr

ando

dos

opc

ione

s)]

Page 49: Formacion Grasshopper NoLogos

DISEÑO PARAMÉTRICO EXPLÍCITO CON GRASSHOPPERADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI [O] LOGICS

INSTITUTO ARNAIZ

[ 49 ]

valores y finalmente establece valores diferentes para las semillas de ambos componentes (por ejemplo, 0 y 1).· Una vez genrados los valores aleatorios, debemos combinarlos en un único valor del dominio. Esto puede hacerse de múltiples maneras. Sin embargo, para demostrar la flexibilidad de los componentes de Grasshop-per, lo haremos utilizando un a priori extraño componente al efecto, el Vector XYZ, que crea un vector (esto es, una tríada de valores) a partir de tres componentes o valores por separado (para los que utilizaremos el rango obtenido para U, el rango obtenido para V, y 0).

· Conecta el output del componente VectorXYZ (Vec) al input uv del componente Surface>Analysis>Evaluate Surface para obtener los puntos correspondientes a las coordenadas (u,v) dadas por los números aleatorios. En este caso, obtendrás la geometría en sí.

Amount randomnumbers

U

V

[Fig 42.Obteniendo los valores aleatorios para U y V. Combinación para su uso por el comando Eval]

[Fig 43.Menu Vector>Vector>VectorXYZ]

Page 50: Formacion Grasshopper NoLogos

INSTITUTO ARNAIZDISEÑO PARAMÉTRICO EXPLÍCITO CON GRASSHOPPERADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI [O] LOGICS

[ 50 ]

b. Calcula la solución Voronoi Una vez hemos construido los puntos sobre la superficie con el dominio dado, podemos proceder al cálculo de la solu-ción Voronoi tridimensional que nos servirá para fijar la geometría final sobre la cubierta. Es conveniente recordar que en este caso lo haremos por medio de la intersección del cálculo de la solución Vornoi 3D con la superficie de la cubierta, tal como puedes ver en la figura 41.

· Conecta los puntos recién obtenidos al input P del componente Mesh>Triangulation>Voronoi 3D. · Conecta la caja opcional del Bounding Box de la superficie al input B (Boundary) del componente Voronoi 3D, lo que le dará un entorno limitado de trabajo.

La solución se computará automáticamente, y deberá tener un aspecto semjante al de la figura 44, que encuentras a continuación. De todas maneras, no se trata, como hemos dicho, de conocer a fondo el algoritmo, sino de poder usar las herramientas necesarias para trabajar con el diseño que más nos convenga en cada momento.

[Fig 44. 3D Voronoi: BBox, Solución, Intersección]

Page 51: Formacion Grasshopper NoLogos

DISEÑO PARAMÉTRICO EXPLÍCITO CON GRASSHOPPERADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI [O] LOGICS

INSTITUTO ARNAIZ

[ 51 ]

c. Crea la malla A continuación deberemos descomponer la geometría en segmentos, para posteriormente escalar dichos segmentos y obtener así 4 puntos: el punto inicial y final de cada uno de ellos. Estos 4 puntos definirán los vértices de las mallas, que serán todas quads (a posteriori puede triangularse la malla). Dichas mallas tendrán únicamente una cara. De este modo, y una vez hemos creado cada una de las mallas, podermos unirlas todas en una única malla, cuyas caras serán cada una de las mallas que hemos creado hasta el momento. Así pues, el orden en el que introduzcamos las mallas iniciales es totalmente indiferente, ya que en el último paso las uniremos en una única malla. Ten la precaución de unificar las normales de la malla antes de intentar modificarla, extruirla, o llevar a cabo cualquier otra operación sobre ella. - Para descomponer la geometría en segmentos, emplea el componente Explode. De esta manera obtendremos, por un lado, los segmentos de la intersección, y los puntos sobre la superficie. En este caso, vamos a emplear directamente los vértices sobre la superficie, ya que vienen ordenados por polígonos o áreas, tal como puedes ver si conectas el output a un panel de texto. - Escalaremos los vértices ordenadamente usando como centro el centro de masas de los polígonos. Para ello, y ya que estamos tratando con puntos, usaremos el componente Maths>Util>Average para hallar la media de las coordenadas de todos los puntos. Emplea el factor de escala que estimes oportuno, o algún tipo de parámetro en función del área de cada zona, por ejemplo. - Escalados los vértices hemos de ordenarlos de manera que generen una cara. Con los puntos inicial (0) y final del segmento original (1) e inicial (2) y final (3) del segmento escalado definiremos dicha cara. Verás que realmente es en el com-ponente Mesh>Primitive>Mesh Quad donde se ordenan dichos puntos, correspondiendo la siguiente distribución: · A: 0 · B: 1 · C: 3 · D: 2 De manera que queden correctamente ordenados, tal como puedes ver en la figura 41 de páginas anteriores. - Hecho esto, conecta los vértices al componente Merge, de manera que queden como una lista única. - Finalmente, asocia los vértices y el output del componente Quad al componente Mesh, que se encarga de crear mallas independientes en función de los vértices dados y el orden en que se leen. Si así lo precisas, puedes unir todas las mallas en una única con el comando MeshJoin que encontrarás en Mesh>Util.

[Fig 45. Solución de la malla para el Voronoi obtenido]

Page 52: Formacion Grasshopper NoLogos

INSTITUTO ARNAIZDISEÑO PARAMÉTRICO EXPLÍCITO CON GRASSHOPPERADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI [O] LOGICS

[ 52 ]

d. Posibles extensiones Para terminar, puedes probar a extender el ejercicio probando alguna de las siguientes variantes: · Escalar los huecos en función de algún parámetro geométrico · Refinar la malla una vez creada · Extrusionar la malla para obtener diferentes efectos · Aplicar el comando smooth sobre la malla terminada (y extruida) para crar un efecto de suavidad · Crea huecos curvos a partir de los vértices En definitiva, explora un poco más allá las posibilidades que ofrece el software, y trata de aplicar una imprompta perso-nal que aleje el diseño de la estándar y directa aplicación de funciones predefinidas. Puedes obtener resultados semejarntes al de la figura 46. En este caso, se han unificado todas las normales de la malla, extruido una distancia determinada, y aplicado el comando Smooth con un valor de suavizado de 2. Intenta crear tus propios efectos.

[Fig 46. Malla modificada]

Page 53: Formacion Grasshopper NoLogos

DISEÑO PARAMÉTRICO EXPLÍCITO CON GRASSHOPPERADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI [O] LOGICS

INSTITUTO ARNAIZ

[ 53 ]