Está en la página 1de 28

manual de ejercicios

de grashopper nivel I

miguel vidal calvet


guillermo ramrez camarero

curso de grasshopper nivel I

aplicado al diseo paramtrico de arquitectura

ndice
A. Conceptos bsicos.
00 Introduccin.
E01 Interfaz grfica.
E02 Objetos. Tipos y modos de visualizacin.
E03 Modos de entrada.

02
03
05
08

B. Nmeros y datos.
E04 Dominios, rangos y series. Hilera y matriz de puntos.
E05 Funciones. Parbola y espiral.
E06 Paraboloide hiperblico.
E07 Superficie por puntos - Miralles.

06
08
09
10

C. Gestin de listas y condicionales


E08 Ordenar una lista.
E09 Triangulacin de una cercha.
E10 Malla de pilares.
E11 Triangulacin de la malla de pilares.
E12 Malla de pilares con patio.
manual de grasshopper nivel I
aplicado al diseo de arquitectura
por miguel vidal calvet
y guillermo ramrez camarero
edicin Noviembre 2010
grasshopper v0.8.002

12
13
14
15
16

D. Geometra
E13 Brjula.
E14 Vector Solar.
E15 Subdivisin y triangulacin de una superficie.
E16 Panelizacin de una superficie.

18
19
20
21

E. Modelado paramtrico
E17 Monumento a los judos de Europa.
E18 Mediateca de Sendai.

23
26

conceptos bsicos

00

manual de grasshopper nivel I


Miguel Vidal
Guillermo Ramrez

introduccin

00. qu es grasshopper?

02. Recomendaciones de uso de Grasshopper antes de empezar

Grasshopper es un entorno de programacin visual dentro de Rhino. Su principal


virtud es que nos permite disear algoritmos que operan con datos y geometra de
manera intuitiva sin la necesidad de aprender ningn lenguaje de programacin.
Al funcionar dentro de Rhino, Grasshopper incorpora gran parte de sus comandos y funcionalidades, adems, utiliza Rhino como entorno de visualizacin, de
manera que podemos ver en tiempo real cmo afecta a nuestro modelo cualquier
cambio que realicemos en Grasshopper.

01. cmo se trabaja en grasshopper?


Grasshopper es una herramienta de diseo de algoritmos. Esto quiere decir que
es capaz de encadenar una sucesin de comandos e instrucciones con entradas
y salidas que son geometra y datos para producir un resultado. Esta manera de
operar aporta gran flexibilidad de cara a manipular grandes cantidades de datos
o datos variables en el espacio y el tiempo, pero condiciona enormemente nuestra manera de trabajar.

- Lo primero, guardar el archivo :-)


- Mantener un orden e higiene visual.
- Elaborar un esquema de flujo de datos de lo que se vaya a hacer.
- Al principio, sacar paneles de todo lo que se vaya haciendo.
- Cuantos menos cables, mejor.
- Comentar las definiciones.
- Cambiar los nombres de parmetros y componentes a nuestro gusto para poder
orientarnos mejor y hacer bsquedas rpidamente.
- Siempre hay varios caminos para llegar al mismo resultado, toma, primero, el
que mejor controles y, segundo, el ms corto.

Llevar una idea o proyecto a grasshopper no es una tarea sencilla. No basta con
conocer la herramienta y sus comandos, hace falta ser capaz de traducir nuestra
idea a un lenguaje matemtico en primer lugar, y, en segundo lugar, a un lenguaje
que grasshopper sea capaz de entender.
Idea
modelo matemtico/lgico
definicin en grasshopper

Por este motivo, mientras que grasshopper es una excelente herramienta para
llevar a cabo proyectos que operen con gran cantidad de informacin, geometra,
o mltiples variables y condiciones definidas con precision y rigor, grasshopper no
es una buena herramienta para manejar procesos intuitivos o difusos, que tienen
dificultad para ser traducidos a un lenguaje lgico.
p04

nmeros y datos

E04

manual de grasshopper nivel I


Miguel Vidal
Guillermo Ramrez

dominios, rangos y series

00. objetivo

C. Definicin: serie.

El objetivo de este ejercicio es familiarizarnos con la creacin de listas de


nmeros en Grasshopper. Para ello utilizaremos los componentes dominio, rango y serie para generar una coleccin de nmeros que dibujarn una hilera de
puntos primero y luego una matriz de puntos.

Serie (series) es un componente que genera una lista de valores ordenados a


partir de un valor inicial A, un incremento o tamao de paso N y una cantidad
de valores C.
incremento N

01. componentes clave


A

domain, range, series


02. procedimiento

A+N

A+2N
C valores

A+3N

D. Hilera de puntos
Para dibujar una hilera de puntos en la direccin del eje X utilizando los conceptos anteriores, tendremos que seguir los pasos siguientes:

A. Definicin: dominio.
B. Definicin: rango.
C. Definicin: serie.
D. Hilera de puntos.
E. Matriz de puntos.
A. Definicin: dominio.
Dominio (domain) es un componente cuya entrada son dos valores reales A y
B y cuya salida es un intervalo continuo de la recta real. Un dominio se escribe
A To B y representa la coleccin de todos los nmeros entre esos dos valores.

B. Definicn: rango.
Rango (range) es un componente cuyas entradas son un dominio y un valor N,
y cuya salida son valores discretos de la recta real. Es decir, es un componente
que toma un dominio continuo D y lo divide N veces, generando una coleccin
de N+1 valores discretos.
N divisiones
A

d
N+1 valores

1. Sacamos un componente Series y conectamos unos sliders de nmero


enteros a sus entradas A, N y C. El objetivo de esto es generar una lista de
C coordenadas que empiecen en A y aumenten de N en N. Es decir, si le
damos a nuestros sliders A, N y C los valores 1, 2 y 10 respectivamente, el
componente series nos generar una lista tal que as (1, 3, 5, 7, 9, 11, 13,
15, 17, 19).
2. Conectamos la salida del componente Series a la entrada X del componente Point. El significado de este paso es que asignamos cada valor numrico generado en la serie a cada coordenada X de una lista de puntos. Como
conectamos varios valores a una entrada X, el componente dibujar varios
puntos, tantos como hayamos especificado en C.
3. La hilera de puntos ya est terminada. Si ahora cambiamos los valores de
los sliders podemos observar cmo afectan los cambios a la cantidad y la
separacin entre puntos.
4. Pero.. y si enchufamos una lista de nmeros a la entrada Y de Point,
qu ocurre? cmo podemos hacer para que en vez de una hilera inclinada
Grasshopper nos dibuje una matriz de puntos?
p06

E04

dominios, rangos y series

manual de grasshopper nivel I


Miguel Vidal
Guillermo Ramrez

E. Matriz de puntos.
Si simplemente conectamos la serie a las entradas X e Y de Point, Point har
exactamente lo que le pedimos, es decir, dibujar una hilera de puntos que
tienen la coordenada X igual a la Y, puesto que las dos listas de nmeros
provienen de la misma serie:
(1,1) (2,2) (3,3) (4,4) (5,5) ....
Ahora, si nuestra intencin es hacer una matriz de puntos, debemos cruzar
estas coordenadas.
1. Empleando lo aprendido en la leccin de correspondencia de datos, hacemos clic con el botn derecho en la parte central del componente Point, y
seleccionamos Cross Reference. Esto quiere decir que a cada coordenada
X (1, 3, 5, 7..) Grasshopper le va a hacer corresponder todas las coordenadas Y (1, 3, 5, 7..) produciendo una lista de pares de coordenadas tal que as:
(1,1) (1,2) (1,3) (1,4) (1,5) ....
(2,1) (2,2) (2,3) (2,4) (2,5) ....
(3,1) (3,2) (3,3) (3,4) (3,5) ....
donde cada elemento se combina con todos los dems.

ejercicio propuesto
Intenta hacer una matriz de puntos como la anterior, pero que en el que cada
punto es elevado 1 unidad en la direccin Z con respecto al anterior.
ejercicio propuesto
Intenta hacer una matriz de puntos tridimensional.

p07

E05

parbola y espiral

00. objetivo
El objetivo de este ejercicio es familiarizarnos con el manejo de funciones. Usaremos una serie para generar una lista de valores que sern afectados por una
funcin. Visualizaremos los efectos de la funcin asignando los valores a coordenadas de puntos para dibujar una parbola primero, y luego una espiral.

manual de grasshopper nivel I


Miguel Vidal
Guillermo Ramrez

Si conectamos lo valores generados en la serie directamente a la entrada Z de


punto, o a travs de una funcin x, los valores pasarn inalterados, dibujando
una espiral que asciende linealmente en Z.
Si en vez de x escribimos cualquier otra funcin para la coordenada Z, el ascenso ser diferente: prueba con x^2, o Ln(x)

01. componentes clave


series, function, point
02. procedimiento
A. Serie. Hilera de puntos en X.
B. Parbola: aplicamos una funcin a las coordenadas Y.
C. Espiral: aplicamos funciones a X, Y y Z.
A. Serie. Hilera de puntos en X.
Usando lo aprendido en el ejercicio E04, generamos una lista de valores con
una serie. Conectando la salida de la serie a la entrada X de un componente
Point, asignamos los valores de la lista a las coordenadas X de los puntos. El
resultado es una hilera de puntos en X.
B. Parbola: aplicamos una funcin a las coordenadas Y.
De momento slo hemos operado con las coordenadas X. Sacamos un componente funcin y lo conectamos a la salida de la serie, y la salida de la funcin la
conectamos a las coordenadas Y de nuestro componente punto.
Conectamos un panel con el texto 0.1*x^2 . Con esto conseguimos afectar
las coordenadas Y de nuestra hilera de puntos para que asciendan de manera
cuadrtica. El 0.1 es un coeficiente reductor que impide que la funcin crezca
tan rpidamente que desaparezca de nuestra vista en Rhino.
C. Espiral: aplicamos funciones a X, Y y Z.
Ahora aplicaremos tres funciones, una a cada coordenada. Aplicando una funcin cos(x) a la X y una sin(x) a la Y conseguimos que los puntos describan un
crculo en planta.

p08

E06

paraboloide hiperblico

manual de grasshopper nivel I


Miguel Vidal
Guillermo Ramrez

01. objetivos
- repasar la nocin de dominio matemtico
- emplear las funciones de n variables
- conocer cmo dibujar superficies a partir de frmulas
- entender cmo se define una superficie a partir de puntos

02. conceptos clave


domain, range, f(n), decompose points, surface from points
03. procedimiento
1. Dibujar una malla de puntos base
2. Dibujar los puntos del paraboloide a partir de la malla base con coordenadas
Z modificadas por una funcin de varias variables
3. Dibujar el paraboloide hiperblico con una superficie a partir de puntos
1. Dibujar una malla de puntos base
Dibujamos una malla cuadrada de puntos con un dominio, al igual, que en el
ejercicio E01 - malla bidimensional de puntos.
2. Dibujar los puntos del paraboloide a partir de los puntos base
Descomponemos los puntos de la malla cuadrada base y los recomponemos en
otro punto XYZ (esta vez sin cross reference activo), tomando las coordenadas
X e Y. La coordenada Z se generar en una funcin de n variables (f(n)) en
la que introducimos, haciendo click con el botn derecho en la banda central
del componente en edit expression, la ecuacin del parabolide hiperblico. El
nmero de variables se define, tambin haciendo click con el botn derecho en
la parte central del componente y luego yendo a input manager.
3. Dibujar el paraboloide hiperblico con una superficie a partir de puntos
Dibujamos el paraboloide con una superficie definida a partir de puntos (surface
grid o surface from points). La entrada P ser la ltim lista de puntos XYZ y U
la cantidad de puntos en cualquiera de las direcciones de la superficie (esta
superfice slo funciona con plantas cuadradas) , que ser Nrango + 1.

p09

E07

manual de grasshopper nivel I


Miguel Vidal
Guillermo Ramrez

superficie por puntos - Miralles

01. objetivos
Dibujaremos una superficie irregular cuya geometra viene dada por una funcin
de la cual podemos controlar determinados parmetros. Para ello deberemos
comprender el concepto de remapeo de nmeros. Utilizaremos una grfica para
modificar en tiempo real una lista de valores de cotas que dar alturas diferentes
a cada punto de la superficie.

Banco Lungomare, fuente: www.escofet.com

Mercado de Santa Caterina, fuente: www.wikipedia.org

02. conceptos clave


domain, list length, remap numbers, graph mapper, surface grid
03. procedimiento
1. Malla base de puntos.
2. Afectar la coordenada Z con una grfica.
3. Dibujar la superficie.
1. Malla base de puntos.
Definimos una malla de puntos idntica a la de E6 Paraboloide Hiperblico.
2. Afectar la coordenada Z con una grfica.
Tomamos un Domain y lo definimos entre dos valores, p.ej. 0 y 1,5, que van
a representar la altura mnima y mxima que alcanzar nuestra superficie.
Dividimos ese domain con un range que genera tantos valores como puntos
haya en nuestra malla, esto es, medimos con list length cuntos puntos hay en
nuestra lista de puntos, y le restamos 1 para enchufarlo a la N del rango.
Mapeamos los valores del rango a un intervalo entre 0 y 1 con Remap. Estos
valores se introducen en Graph Mapper para ser modificados por una funcin.
A la salida del Graph Mapper se devuelven a su dominio original con un
segundo Remap. Finalmente, estos valores se introducen en la coordenada Z
de nuestro componente punto.
3. Dibujar la superficie.
Conectamos la salida de puntoXYZ a Surface Grid. La cantidad U de puntos de
la entrada es la N del rango + 1.

p010

gestin de listas y condicionales

E08

ordenar una lista

manual de grasshopper nivel I


Miguel Vidal
Guillermo Ramrez

01. objetivos
- comprender que una lista es una sucesin de elementos, en la que el orden y la
posicin de los mismos dentro de ella es relevante

02. conceptos clave


sort list, point list
03. procedimiento
A. Dibujar unos puntos (lista que vamos a ordenar)
B. Parmetro con el que ordenar la lista
C. Ordenar la lista
D. Visualizacin del resultado
A. Dibujar unos puntos (lista que vamos a ordenar)
Vamos a ordenar los puntos de divisin de una circunferencia segn la distancia
a un punto interior a la misma. Primero, dibujamos una circunferencia y la
dividimos con Divide curve y dibujamos los ndices de cada uno de los puntos
con Point list. Y segundo, colocamos un punto dentro de ella con un parmetro
de punto, haciendo click con el botn derecho y luego yendo a Set one Point.
B. Parmetro con el que ordenar la lista
Medimos la distancia entre la lista de puntos que salen de divide curve (A) y el
punto que hemos elegido previamente (B)
C. Ordenar la lista
Ordenamos la lista de distancias con Sort List. En la entrada y salida K, devuelve
cualquier lista numrica ordenada de menor a mayor. Y en la entrada y salida
A, ordena cualquier lista, de la misma longitud que la de K, en el mismo orden
que ha utilizado para K. Se pueden ordenar tantas listas como se quiera de este
modo, haciendo clic con el botn derecho en Input Manager ...
D. Visualizacin del resultado
Para visualizar el resultado, primero dibujamos los puntos ordenados con Point
List, pero, esta vez, los escalamos para que no coincidan con los del apartado
1; y, segundo, dibujamos lneas a puntos entre el punto interior y los de la
circunfrerencia con Dash Pattern .

p012

E09

triangulacin de una cercha

manual de grasshopper nivel I


Miguel Vidal
Guillermo Ramrez

01. objetivos
- repasar la nocin de lista como sucesin ordenada de elementos
- conocer cmo se desfasan listas segn ndices

02. conceptos clave


shift list
03. procedimiento
1. Curva base
2. Puntos para ejes
3. Ejes de la estructura
4. Dibujo de la estructura
1. Cordn inferior
Tomamos como curva base de la cercha una curva dibujada en Rhino y
almacenada en un parmetro de curva en Grasshopper mediante Set one
Curve, haciendo click con el botn derecho en el mismo.
2. Puntos para ejes
Los puntos base de la cercha los obtenemos dividiendo la curva base mediante
Divide distance y los puntos de coronacin, tomando las coordenadas X e Y de
estos puntos (con point decompose) y la coordenada Z, un slider.
3. Ejes de la estructura
- Ejes de los montantes: lneas entre puntos base y de coronacin.
- Diagonales: lneas entre puntos base y coronacin desfasados una posicin.
- Cordn inferior: lneas entre puntos base y ellos mismos desfasados una
posicin.
- Cordn superior: lneas entre puntos de coronacin y ellos mismos desfasado
una posicin.
Desfasamos tanto la lista de puntos base como la de coronacin con shift list.
4. Dibujo de la estructura
Finalmente, dibujamos la estructura, con un pipe de todas los ejes, almacenados
en un parmetro de curva.

p013

E10

malla bidimensional de pilares

manual de grasshopper nivel I


Miguel Vidal
Guillermo Ramrez

01. objetivos
- introducirse en y comparar las nociones de colecciones numricas en
Grasshopper con series y dominios
- comprender el modo de correspondencia de datos entre listas en Grasshopper

02. conceptos clave


series, domain, range, point, cross reference, line
03. procedimiento
1. Definicin de parmetros de la estructura.
2. Coordenadas de los puntos de la estructura. Colecciones numricas.
3. Dibujo de los puntos base y de coronacin.
4 y 5. Dibujo de los ejes y de los pilares
1. Definicin de parmetros de la estructura.
Definimos las dimensiones de la malla con sliders, que devuelven nmeros
dentro de un intervalo. Se pueden modificar deslizando el puntero en la barrra.
2. Coordenadas de los puntos de la estructura. Colecciones numricas.
En primer lugar, utilizaremos una serie y, en segundo lugar, un dominio y as
las podemos comparar. Una serie es una coleccin de C nmeros reales que
comienza en un nmero inicial S con un salto de N entre cada uno de ellos.
Un dominio es un tramo continuo de la recta real definido por unos lmites. Para
hacer discreto ese tramo continuo, dividindolo en partes y obteniendo como
resultado una coleccin de nmeros reales, utilizamos un rango.
3. Dibujo de los puntos base y de coronacin.
Tomamos, bien la salida de la serie, bien la del rango como entradas de las
coordenadas X e Y. En los puntos base, la coordenada Z ser 0 y en los de
coronacin, definimos la altura con otro slider.
4 y 5. Dibujo de los ejes y de los pilares
Los ejes de los pilares son lneas entre dos puntos. Los puntos de inicio de
las lneas (A) sern los puntos base y los de final (B), los de coronacin. Para
dibujar unos pilares circulares, utilizamos pipe con las lneas como curvas base
(C) y otro slider como radio de los pilares.

p014

E11

triangulacin de la malla de pilares

manual de grasshopper nivel I


Miguel Vidal
Guillermo Ramrez

01. objetivos
- conocer cmo se eliminan elementos de una lista, aplicndolo a la triangulacin
de la malla de pilares del ejercicio E03
- comprender la relacin entre los ndices de una lista y los valores nmericos de
los dominios y las series

02. conceptos clave


shift list, cull pattern, cull index
03. procedimiento
4. Dibujar los ejes de los pilares
5. Eliminar las diagonales sobrantes
(Los apartados anteriores y posterior corresponden al ejercicio EO3)
4. Dibujar los ejes de los pilares
En el caso hipottico de que quisiramos triangular la malla de pilares del
ejercicio E03, tendramos que desfasar la lista de puntos de coronacin y
dibujar una lnea entre los puntos base y los puntos de coronacin desfasados.
Si dibujramos las diagonales resultantes, tendramos una estructura como la
de la primera imagen de la derecha.
5. Eliminar las diagonales sobrantes
Para deshacernos de la diagonal que atraviesa la planta, utilizaremos las
herramientas de eliminacin de elementos de una lista: Cull. Utilizando, por
ejemplo, Cull Nth (tambin podramos hacerlo, con otros valores, con Cull Index)
tendremos que averiguar la relacin numrica que existe entre los parmetros
de la estructura y la frecuencia con que se da esa diagonal que nos sobra.
Dependiendo si hemos dibujado la malla de pilares con series o con dominios
y rangos, la frecuencia de esa diagonal estar relacionada, respectivamente,
con la cantidad de copias (C) de la serie que da lugar a los puntos de la malla
de la estructura, o con el nmero de divisiones del dominio (N) ms una unidad.

p015

E12

malla de pilares con patio

manual de grasshopper nivel I


Miguel Vidal
Guillermo Ramrez

01. objetivos
- elaborar un algoritmo sencillo, que consiste en eliminar los pilares del ejercicio
E03 en un entorno de un radio determinado para fabricar un patio en la estructura
- trabajar con sentencias condicionales: comparadores y valores booleanos

02. conceptos clave


booleanos, true, false, larger than, dispatch
03. procedimiento
1. Datos de filtrado
2. Evaluacin esos datos
3. Extraer valores booleanos
4. Filtrado de los datos iniciales
(Para terminar el ejercicio, dibujamos el patio con la cubierta)
1. Datos de filtrado
Los datos que definen el patio son las distancias de un punto de origen al resto
de puntos base de los pilares. Todos los puntos que estn en un entorno que
determinemos alrededor de ese punto, debern eliminarse.
2. Evaluacin de los datos de filtrado
La condicin que vamos a establecer para eliminar pilares de ese entorno es
que la distancia entre el punto de origen sea mayor (Larger than) que un valor.
3. Extraer valores booleanos
La pregunta de cules de todas las distancias son mayores que el nmero del
slider de entorno devuelve una lista de valores booleanos (verdadero y falso)
de la misma longitud que la lista de distancias.
4. Filtrado de los datos iniciales
Para quedarnos con los valores que corresponden con True (verdadero),
utilizamos la herramienta Dispatch, que toma una lista L, la coteja con otra lista
de valores booleanos y devuelve en A los temoes de L que coinciden con un
valor True en P y en B, los que coinciden con False. La lista L que tomamos ser
la de los ejes de los pilares
El ltimo apartado es un ejercicio geomtrico que se sale ligeramente del objetivo principal del
ejercicio. Lo hacemos simplemente para dejar dibujado adecuadamente el patio.

p016

geometra

E13
brjula

manual de grasshopper nivel I


Miguel Vidal
Guillermo Ramrez

01. objetivos
- definir geomtricamente puntos con coordenadas XYZ y polares
- utilizar funciones de una variable para clculos matemticos
- dibujar vectores a partir de dos puntos y visualizarlos
- entender cmo se miden ngulos en Grasshopper

02. conceptos clave


function, f(x), point polar, vector display, angle
03. procedimiento
1. Establecer las coordenadas de los puntos
2. Dibujo de los puntos
3. Definir los vectores y visualizarlos
4. Medir el ngulo entre esos vectores
1. Establecer las coordenadas de los puntos
Las coordenadas de los puntos XYZ son las coordenadas en el sistema de
coordenadas universal. Las coordenadas para los puntos polares son: plano
origen del punto (P), ngulo en radianes en ese plano (xy), ngulo en radianes
en el plano normal (z) y distancia radial al origen (d). Utilizamos una funcin de
una variable f(x) para pasar de grados a radianes
2. Dibujo de los puntos
Conectamos las salidas numricas de las coordenadas a las entradas
correspondientes de los componentes de puntos. Utilizamos un punto XYZ
como origen del dibujo y otro punto polar para definir el extremo del vector.
3. Fabricar vectores y visualizarlos
Utilizamos el componente de vector dos puntos, entre el punto XYZ y el punto
polar. Como los vectores son entidades geomtricas definidas por una longitud
y una direccin, no tienen una visualizacin, as que utilizamos vector display
para dibujar dicho vector V utilizando el origen como punto de ancla A.
4. Medir el ngulo entre esos vectores
Computamos el ngulo entre el vector anterior y un vector unitario en el eje X.
Como resultado, obtendremos dos ngulos: el convexo (A) y el reflejo (B).

p018

E14

manual de grasshopper nivel I


Miguel Vidal
Guillermo Ramrez

vector solar

01. objetivos
El objetivo es definir un vector solar en coordenadas polares y compararlo con
el vector normal a una superficie. Colorearemos puntos sobre la superficie segn
su exposicin a la radiacin solar.

02. conceptos clave


point polar, loft, angle, divide surface, flatten, gradient, preview

de 0 radianes ser rojo, uno de Pi ser rojo tambin, y, en Pi/2, cuando los los
vectores sean perpendiculares, la luz ser rasante y le asignaremos el color
verde.
4. Visualizar.
El ltimo componente, Preview, sirve para colorear: le asigna color a geometra.
Nuestra informacin de color sale del Gradient, y la geometra a colorear son
todos los puntos que salen del flatten de la salida P de Surface Divide.

03. procedimiento
1. Definir un vector en coordenadas polares.
2. Dibujar y dividir una superficie.
3. Comparar vectores y asignar color.
4. Visualizar.
1. Definir un vector en coordenadas polares.
Con el componente Point Polar dibujamos un punto que gira en torno al Origen.
Uniendo con Line el Origen y el punto polar, obtenemos la direccin de nuestro
sencillo vector solar, con vector display podemos visualizarlo. Si tratamos a
la lnea como si fuera un vector, Grasshopper no tiene problemas porque la
convierte automticamente.
2. Dibujar y dividir la superficie.
Referenciamos con dos Curve (icono de borde hexagonal) dos curvas dibujadas
en Rhino, y conectamos ambos a la entrada S de un componente Loft. Con
Divide Surface dividimos la superficie en puntos en los cuales conocemos el
vector normal (salida N del Divide Surface). Un Flatten en las salidas N y P del
Divide Surface nos libra de las sublistas.
3. Comparar vectores y asignar color.
Con un Angle comparamos los vectores normales (salida N del Divide Surface)
con el vector solar (salida L de Line). A estos valores de ngulo les tenemos
que asignar un color. Esto se consigue con Gradient. Con la paleta de Gradient
definimos el espacio de color que vamos a hacer corresponder con los valores
de ngulo, este espacio queda determinado entre los lmites L0 y L1. Un ngulo

p019

E15

manual de grasshopper nivel I


Miguel Vidal
Guillermo Ramrez

subdivisin y triangulacin de una superficie

01. objetivos
El objetivo de este ejercicio es subdividir una superficie alabeada en porciones
menores utilizando sus coordenadas locales U y V, y luego trazar las diagonales
de cada cuadrado. Las sublistas nos ahorrarn mucho trabajo.

02. conceptos clave

4. Dibujar las diagonales


Ya slo queda unir cada pareja opuesta de puntos con una linea para dibujar las
diagonales. Como seguimos trabajando dentro de la estructura de sublistas,
basta unir el punto 0 con el 2 para que Line nos dibuje las diagonales 0-2 de
todas las caras. Repetir el proceso para las diagonales 1-3. Podemos aadir
grosor a las barras si utilizamos un Pipe.

loft, divide domain2, isotrim, list item, sublista


03. procedimiento
1. Dibujar la superficie.
2. Dividir la superficie en partes.
3. Seleccionar los vrtices de cada parte.
4. Dibujar las diagonales.
1. Dibujar la superficie.
Para dibujar una superficie alabeada, en Rhino dibujaremos dos curvas. Las
referenciamos en un componente Curve (de icono hexagonal) y conectamos
ambas a la entrada S de un componente Loft. Deben estar dibujadas en el
mismo sentido ya que si una ha sido dibujada de izquierda a derecha y la otra
al revs, aparecer un giro extrao en nuestra superficie.
2. Dividir la superficie en partes.
Como si de un domain2 se tratara, conectamos el Loft a la entrada de divide
domain2. Grasshopper interpreta directamente que queremos trabajar sobre
el dominio bidimensional de coordenadas locales de la superficie. Asignamos
sliders a U y V. Conectamos la salida del divide domain2 a Isotrim (subsurface)
que ahora s, divide la superficie con el patrn del domain2. Con Brep
Components explotamos cada subsuperficie en sus vrtices, aristas y caras.
3. Selecionar los vrtices de cada parte.
Con cuatro list item diferentes podemos seleccionar los vrtices 0, 1, 2 y 3 de
cada subsuperficie. Como Isotrim ha hecho una sublista de cada cara, un
list item que nos escoja el elemento 0, coger la misma esquina de todas las
subsuperficies a la vez, ahorrndonos trabajo.

p020

E16

panelizacin de una superficie

01. objetivos
En este ejercicio definimos una superficie a partir de una curva que se repite en
vertical y aprendemos a replicar una geometra sobre ella.

02. conceptos clave

manual de grasshopper nivel I


Miguel Vidal
Guillermo Ramrez

Surface Morph es un componente con mtiples entradas: en la G debemos


enchufar el cable que lleva la geometra (la lama) a replicar, en la R la caja de
referencia de Bounding Box que contiene la lama, en la S la superficie sobre la
cual vamos a replicar la lama, en la U y V, los dominios que vienen del Domain2
Components, y por ltimo, la W, en la que conectaremos un Slider que regular
la altura de las rplicas sobre la superficie.

move, domain2 components, bounding box, surface morph.


03. procedimiento
1. Repetir una curva N veces en Z
2. Superficie a partir de las curvas y subdivisin.
3. Surface Morph.
1. Repetir una Curva N veces en Z.
El primer paso es dibujar una curva en Rhino y almacenarla en un componente
Curve en Grasshopper. Luego la copiaremos en vertical con Move. Move
necesita un vector para funcionar as que conectamos a la entrada T de Move
un Unit Z: un vector unitario. Conectamos una serie a la entrada F del vector
para generar varios vectores verticales y as tener mltiples copias.de la curva.
2. Superficie a partir de las curvas y subdivisin.
Conectando la lista de curvas a un Loft obtenemos la superficie que buscamos.
Luego necesitamos dividir el domain2 del loft. La entrada U del divide domain2
tiene que ser el mismo valor que el slider que regula la C de la serie, menos
uno, si queremos que las subdividiones en altura coincidan con la posicin de
las curvas replicadas. Extraemos los dominios unidimensionales del dominio
bidimensional con Domain2 Components puesto que ms tarde nos har falta.
3. Surface Morph
Surface Morph toma una geometra contenida en una caja de referencia y
la replica sobre una superficie deformndola de acuerdo a las coordenadas
locales de la superficie. Dibujamos un objeto a replicar en Rhino, y lo
almacenamos en un componente Geometry de icono hexagonal. En este caso,
el objeto dibujado ser una lama inclinada. Aplicamos Bounding Box a la lama
para generar la caja de referencia.

p021

modelado paramtrico

E17

manual de grasshopper nivel I


Miguel Vidal
Guillermo Ramrez

Monumento a los judos de Europa asesinados, Peter Eisenman

01. objetivos
- parametrizar un diseo de un proyecto real
- aplicar la nocin de dominio a medidas concretas
- subdividir una regin del espacio con planos
- tomar medidas pseudoaleatorias para elaborar prototipos de diseos

02. conceptos clave


domain, plane, intersection, containment, duplicate data, jitter
03. programa

Monumento a los judios de Europa asesinados,


vista de satlite. Fuente: Google Earth.

Monumento a los judios de Europa asesinados, vista general.


Fuente: www.wikipedia.org.

El Monumento a los judos de Europa asesinados (...) es un monumento que recuerda en


Berln a los judos vctimas del holocausto.
Fue diseado por el arquitecto Peter Eisenman y por la ingeniera Buro Happold. Se trata
de un campo inclinado de 19000 metros cuadrados cubierto por una rejilla cuadriculada
en la que estn situadas 2711 estelas o losas de hormign. Estas losas tienen unas
dimensiones de 2.38m de largo y 0.95m de ancho, y varan en cuanto a su altura, desde
los 0.2 m a los 4.8m. (...)
Fuente: www.es.wikipedia.org

NOTA: En este ejercicio, se han reducido las medidas reales de superficie total y
nmero de losas para dar lugar a un archivo menos pesado.

Datos de partida:
- parcela: dibujamos en Rhino un polgono similar a la planta del solar
- anchura de losas: 2.38 m.
- fondo de losas: 0.95 m.
- nmero de losas: 371

04. procedimiento
1. Dibujar los puntos de origen de las losas
2. Dibujar las losas con las medidas de los datos de partida en esos puntos
1. Dibujar los puntos de origen de las losas
1.1. Extraer los dominios de cada una de las direcciones: dibujamos el slido
capaz que contiene a la parcela (bounding box), que ser una caja plana, y
extraemos sus esquinas con (box corners). Los dominios de la parcela, tanto en
el eje X como en Y son las coordenadas X e Y de dichas esquinas.

p023

manual de grasshopper nivel I


Miguel Vidal
Guillermo Ramrez

1.2. Dibujar los planos de corte para cada direccin: en primer lugar, necesitamos
los puntos de origen de esos planos, que estarn contenidos en los bordes
del slido que encierra a la parcela. Tomamos los dominios de cada eje y los
dividimos en nmeros reales con un rango. El nmero de subdivisiones del del
dominio (la N del rango) puede ser la longitud lineal del slido capaz en cada
eje (la resta numrica de las coordenadas de los bordes del dominio para cada
direccin) entre la medida de la losa ms un paso. En segundo lugar, una vez
obtenidos los puntos, slo tenemos que tomar los vectores unitarios adecuados
para dibujar los planos en cada direccin: para los planos en la direccin X, los
vectores sern los unitarios en los ejes Y y Z; y para los planos en la direccin
Y, los vectores sern los unitarios en los ejes X y Z. El ltimo plano para fabricar
las intersecciones que darn lugar a los puntos ser el plano universal XY.
1.3 . Puntos de losas: una vez obtenidos los planos, tan slo nos queda fabricar
las intersecciones con Intersect plane|plane|plane (3PX). Para quedarnos
solamente con los puntos interiores de la parcela, utilizamos la herramienta
Point Containment, que comprueba si una lista de puntos (P) estn o no en
el interior de una curva cerrada C y devuelve en R la relacin entre el punto y
la curva (0 si est sobre la curva, 1 si est dentro de la curva y 2 si est fuera
de la curva de regin) y en P la proyeccin de dicha lista de puntos sobre el
plano que contiene a la curva plana cerrada. Slo nos queda quedarnos con
los puntos coincidentes con los valores 2 de la salida R de Point Containment
con una igualdad y Dispatch. Por ltimo, nos quedaremos con los valores de la
salida A de Dispatch.

2. Dibujar las losas con las medidas de los datos de partida


2.1. Rectngulo base de losas: Dibujamos una lista de rectngulos, tomando
como puntos de origen P los puntos de origen fabricados en el apartado
anterior y dimensiones X e Y, el ancho y fondo de la losa de los datos de partida
respectivamente; la entrada de R corresponde al radio de redondeo de las
esquinas, en este caso, es igual a cero (el valor por defecto).
2.2. Nmero exacto de losas: con Random reduce eliminamos temes de la lista
L de forma pseudoaleatoria. Eliminaremos tantos elementos R hasta llegar a la
contidad de losas de los datos de partida
p024

manual de grasshopper nivel I


Miguel Vidal
Guillermo Ramrez

2.3 Extrusin de los rectngulos base de las losas : Para reproducir el paisaje
del monumento, tomamos unas alturas de losas prefijadas, como medidas
de unos prefabricados, que distribuiremos de un modo aparentemente aleatorio,
utilizando la herramienta jitter. Necesitamos tantos valores de extrusin
como losas, para ello repetimos la lista de alturas de losas con duplicate data,
que repite los valores de una lista D N veces. Jitter desordena los elementos
de una lista, modificando sus ndices pseudoaleatoriamente.Para terminar,
tapamos la extrusin con cap holes.

p025

E18

estructura de la Mediateca de Sendai, Toyo Ito

manual de grasshopper nivel I


Miguel Vidal
Guillermo Ramrez

01. objetivos
El objetivo de este ejercicio es realizar un repaso de los conceptos generales
aprendidos en todos los ejercicios anteriores. Dibujaremos un slo pilar triangulado
de la mediateca de Sendai, de Toyo Ito. Comenzaremos con un punto, luego
un crculo, luego una coleccin de crculos transformados (copiados, escalados,
rotados) y finalmente resolveremos su triangulacin.

02. conceptos clave


move, scale, rotate, center, random, jitter.
03. procedimiento
1. Dibujar un crculo y replicarlo en altura.
2. Desplazar aleatoriamente en el plano XY.
3. Escalar aleatoriamente respecto de cada centro.
4. Rotar cada anillo..
5. Dibujar la superficie y dividirla.
6. Explotar las subsuperficies y seleccionar sus vrtices.
7. Triangular y dar grosor a las barras.
1. Dibujar un crculo y replicarlo en altura.
El primer paso es dibujar el centro desde el cual se va a referenciar toda la
definicin: ser un punto dibujado en Rhino y almacenado en un componente
Point de icono hexagonal. Conectamos el punto a la entrada P de un Circle,
con radio gobernado por un slider que llamaremos Radio Maestro. El siguiente
paso es replicar el crculo en altura. Lo haremos como hicimos en E16, con una
serie y un vector Unit Z conectados a un Move. Le daremos el nombre H al
slider que se conecta con la N de la serie, y el nombre Cantidad al slider que
se conecta con la C de la serie. Este ltimo slider es muy importante y lo vamos
a conectar a muchas partes de nuestra definicin posteriormente.
2. Desplazar aleatoriamente en el plano XY.
Ahora definiremos otro vector de traslacin para un nuevo Move, pero en este
caso con Vector XYZ. Generaremos valores aleatorios con Random para la X,
comprendidos entre -1.1 y 1.1, y los barajaremos con Jitter para introducirlos
en la Y. Este uso combinado de Random y Jitter nos evita tener que hacer dos

p026

E18

manual de grasshopper nivel I


Miguel Vidal
Guillermo Ramrez

estructura de la Mediateca de Sendai, Toyo Ito


4. Rotar cada anillo.
colecciones independientes de valores aleatorios. Simplemente generamos
una coleccin y la barajamos. Es importante que haya nmeros aleatorios
positivos y negativos para permitir desplazamiento en cualquier direccin del
plano XY. Los nmeros aleatorios deben ser tantos como anillos haya. Esto se
logra conectando el slider inicial Cantidad a la N del Random.
3. Escalar aleatoriamente respecto de cada centro.
Debemos agrandar y encoger cada crculo de manera diferente y cada uno
desde su propio centro. Con un componente Center conectado a nuestra ltima
coleccin de crculos, hallamos los centros de cada uno de ellos. Estos centros
conectarn con la entrada C de un componente Scale. Los factores de escala F
sern nmeros aleatorios (generados como en el paso anterior) comprendidos
entre e. 0.7 y el 1.2 aproximadamente. Como en el paso anterior, debe haber
tantos valores aleatorios como anillos haya. Esto se logra conectando el slider
inicial Cantidad a la N del Random.

Este paso es el ms complicado de comprender. Es ms fcil dibujar hasta el


paso 5 y luego pararse y retroceder. Nuestra estrategia es generar una piel con
un loft, luego subdividirla y triangularla como hicimos en E15, pero para que los
tringulos de la subdivisin sean issceles y no rectngulos debemos retorcer
los anillos. Retorcer significa rotar el primer anillo un ngulo , el segundo
un ngulo 2 y as sucesivamente. Sacamos un Slider que llamamos Divs
(divisiones). Este slider cobrar mayor sentido en el paso 5. Pasamos el valor
de Divs por una funcin que divide Pi/Divs. Este resultado es el incremento de
ngulo de rotacin que resulta de un anillo al siguiente y que debemos conectar
a la entrada N de una Serie. La C de la serie es el slider inicial Cantidad. La
serie va conectada a la A de Rotate. Si el anillo se define como un polgono
de cantidad de lados igual a Divs, entonces y slo entonces tendremos una
triangulacin en la que los vrtices de los anillos poligonales superiores caen
sobre los puntos medios de los anillos poligonales inferiores (uf!!). Si no nos
queremos creer esto, podemos probar valores de ngulo cualesquiera para la A
para entender cmo se comporta la estructura.

p027

E18

manual de grasshopper nivel I


Miguel Vidal
Guillermo Ramrez

estructura de la Mediateca de Sendai, Toyo Ito


5. Dibujar la superficie y dividirla.
En el paso 5 empezaremos a ver los efectos del retorcimiento que planeamos
en el punto 4. Este paso es anlogo al E15. Enchufamos los anillos rotados al
Loft, y marcamos dentro de Loft Options loft la opcin UNIFORM. Esto har
que el loft se ajuste con precisin a los anillos. Dividimos el loft con Divide
Domain2, cuya U es el valor de Cantidad - 1, y cuya V viene del slider Divs. Aqu
observamos que el slider Divs regula la cantidad de lados del anillo. Con Isotrim
aplicamos el patrn de corte del Divide Domain2 a nuestra superficie generando
las subsuperficies.

7. Triangular y dar grosor a las barras.


Este paso es muy sencillo. Con tres Line diferentes, unimos la salida del List
Item1 con el 3, la del 1 con el 2, y la del 2 con el 3. Luego le damos grosor a las
barras con un Pipe como hicimos en E15.

6. Explotar las subsuperficies y seleccionar los vrtices.


En el paso 5 continuamos con lo aprendido en E15. La tcnica es idntica.
Explotamos las subsuperficies con Brep Components y seleccionamos
los vrtices con List Item haciendo uso de la estructura de sublistas para
ahorrarnos trabajo. Con tres list item que seleccionen el vrtice 1, 2 y 3 de cada
subsuperficie debera valernos.

p028