Rhinoceros Algorithmic Design Manual

185
MÓDULO DE EDIFICACIÓN: RHINOCEROS, MODELADO, VISUALIZACIÓN. INTRODUCCIÓN A PROGRAMACIÓN, DISEÑO ALGORÍTMICO Y AUTOMATIZACIÓN DE PROCESOS ARCHIOLOGICS WWW.ARCHIOLOGICS.COM DISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MODULOS BASICO Y MEDIO AUTHOR ADOLFO NADAL SERRANO

description

Rhinoceros Design Manual: from 3d modeling to algorithmic design.

Transcript of Rhinoceros Algorithmic Design Manual

Page 1: Rhinoceros Algorithmic Design Manual

MÓDULO DE EDIFICACIÓN: RHINOCEROS, MODELADO, VISUALIZACIÓN.INTRODUCCIÓN A PROGRAMACIÓN, DISEÑO ALGORÍTMICO Y AUTOMATIZACIÓN DE PROCESOS

ARCHIOLOGICS WWW.ARCHIOLOGICS.COM

DISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MODULOS BASICO Y MEDIO

AUTHOR ADOLFO NADAL SERRANO

Page 2: Rhinoceros Algorithmic Design Manual

INTRODUCCIÓN A LA INTERFAZ

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULO BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI [O] LOGICS

[ 2 ]

Page 3: Rhinoceros Algorithmic Design Manual

[ 3 ]

Page 4: Rhinoceros Algorithmic Design Manual

I. INTERFAZ DE RHINOCEROS1. La pantalla de Rhino- Rhino divide la pantalla en seis áreas que proporcionan información o solicitan la introducción de datos. Barra de menú: Permite acceder a los comandos, las opciones y la ayuda. Área de comandos: Lista las solicitudes, los comandos introducidos y la información que muestra el comando. Barras de herramientas: Métodos abreviados para acceder a los comandos y las opciones. Área gráfica: Muestra el modelo abierto. Pueden visualizarse hasta cuatro vistas diferentes. La disposición de las vistaspor defecto es la de cuatro vistas (Superior, Frontal, Derecha y Perspectiva). Vistas: Muestra varias vistas del modelo dentro del área gráfica. Barra de estado: Muestra las coordenadas del cursor, el estado del modelo, las opciones y los conmutadores.

[Fig 1. Interfaz de Rhinoceros]

2. Barras de herramientas- La barras de herramientas de Rhino contienen botones que proporcionan métodos abreviados para los comandos.- Es posible hacer que las barras de herramientas floten en cualquier parte de la pantalla o fijarlas en algún lado del área gráfica.- Rhino se inicia con barra la de herramientas estándar anclada en la parte superior del área gráfica y las barras de herramien-tas Principal1 y Principal2 ancladas en la parte izquierda.

3. Leyendas- Las leyendas indican la función de cada icono. Mueva el cursor encima de un botón sin hacer clic. Aparecerá un marcador amarillo con el nombre del comando. En Rhino, varios botones pueden ejecutar dos comandos. La leyenda indica si los bo-tones tienen doble función con una línea vertical entre los dos comandos.- Para iniciar una polilínea, haga clic en el botón izquierdo del ratón, y para ejecutar el comando Segmentos de línea haga clic en el botón derecho del ratón sobre el icono polilínea.

Barra de menú

Ventana de historial de comandos

Línea de comandos

Barra de herramientas estándar

Área gráfica

Icono de ejes del plano universal

Título de la vista

Barras de herramientas principales

Barra de estado

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULOS BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI [O] LOGICS

[ 4 ]

Page 5: Rhinoceros Algorithmic Design Manual

4. Botones desplegablesUn botón de una barra de herramientas puede incluir otros botones con comandos en una barra de herramientas con boto-nes desplegables. Normalmente las barras de herramientas desplegables contienen variaciones del comando base. Despuésde seleccionar un botón en la barra de herramientas desplegable, ésta desaparece. Los botones de las barras de herramientas desplegables están marcados con un pequeño triángulo blanco en la esquina inferior derecha. Para abrir la barra de herramientas desplegable, pulse el botón izquierdo del ratón durante unos instantes o pulse el botón derecho.La barra de herramientas Líneas está vinculada a la barra de herramientas Principal2.Después de abrir la barra de herramientas desplegable puede seleccionar cualquiera de los botones de la barra de herra-mientas para ejecutar un comando.

5. Área gráficaEl área gráfica de Rhino puede personalizarse para adecuarla a sus preferencias. La disposición de las vistas puede configu-rarse de maneras diferentes.

6. VistasLas vistas son ventanas del área gráfica de Rhino que muestran las diferentes vistas del modelo. Puede mover o cambiar el tamaño de las vistas simplemente arrastrando la barra de título o los bordes. También puede crear nuevas vistas, cambiar el nombre de las vistas y usar configuraciones de vistas predefinidas. Cada vista tiene su propio plano de construcción sobre el cual se mueve el cursor y un modo de proyección.Para alternar entre la vista reducida y la vista que ocupe toda el área gráfica, haga doble clic sobre la barra de título de la vista.

[Fig 2. La pantalla de Rhino reorganizada. Línea de comandos en la parte inferior, una vista maximizada y barras de herramientas acopladas en diferentes lugares. Fichas de vistas]

7. Fichas de las vistasLos títulos de vistas se pueden mostrar en fichas. La ficha en negrita indica la vista activa. Las fichas facilitan cambiar entre vistas cuando se usan vistas maximizadas o flotantes. Para activar las fichas de las vistas: en el menú Vista, haga clic en Dispo-sición de las vistas y luego en Mostrar fichas de las vistas.

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULOS BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI[O]LOGICS

[ 5 ]

Page 6: Rhinoceros Algorithmic Design Manual

II. ÁREA DE COMANDOS El área de comandos muestra los comandos y las solicitudes de los comandos. Puede fijarse en la parte superior o infe-rior de la pantalla o quedarse flotante. La ventana de comandos muestra dos líneas por defecto. Para abrir una ventana que muestre el historial de comandos, pulse F2. El texto de la ventana de historial de comandos se puede seleccionar y copiar en el portapapeles de Windows.

- El ratón En la ventana de Rhino, el botón izquierdo del ratón selecciona objetos y designa posiciones. El botón izquierdo del ratón tiene varias funciones: · permite realizar encuadre y zoom, · desplegar un menú contextual, · y ejecutar la misma función que la tecla Intro. Botón izquierdo: · seleccionar objetos en el modelo, botones en las barra de herramientas y comandos u opciones en los menús. Botón derecho: · completar un comando, · moverse entre las fases de los comandos , · repetir el comando anterior, · ejecutar algunos comandos desde los botones de la barra de herramientas, · [arrastrar] encuadrar y rotar las vistas. Rueda del ratón o tecla Ctrl y arrastre del botón derecho · para ampliar o reducir las vistas.

- Introducir comandos Utilice la línea de comandos para introducir los comandos, las opciones, las coordenadas, las distancias, los ángulos, los radios, los métodos abreviados de teclado y para ver las solicitudes de los comandos. Para introducir la información en la línea de comandos, pulse la tecla Intro, la barra espaciadora o el botón derecho del ratón sobre una vista. Para cancelar un comando, pulse Esc o introduzca un nuevo comando desde un botón o un menú. Para introducir un comando en inglés, escriba “_” y el nombre de comando.

- Visualizar el historial de la línea de comandos La ventana del historial de la línea de comandos muestra las últimas 500 líneas de los comandos de la sesión actual de Rhino. Pulse F2 para ver el historial de comandos.

- Visualizar los comandos recientesHaga clic con el botón derecho en la línea de comandos para ver los comandos más recientes. Para repetir el comando, se-lecciónelo en el menú emergente.El número de comandos listados se define en las Opciones de Rhino. El límite predeterminado es de 20 comandos. A partir del comando 21, el primero desaparece de la lista.

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULOS BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI [O] LOGICS

[ 6 ]

Page 7: Rhinoceros Algorithmic Design Manual

III. COMANDOS BÁSICOS Y NAVEGACIÓN

1. Navegación básica- Vistas: En cualquier modelo, utiliza vista>disposición de vistas para cambiar la configuración de las mismas. Usa simultáneamente vistas en perspectiva y vistas paralelas -cada vista tiene su propio plano de trabajo. Modos de vista [para cambiar, botón derecho sobre nombre de vista, seleccionar del menú desplegable o menú som-breado]: · Estructura alámbrica: muestra aristas. · Sombreado: sombrea las caras. · Renderizado: previsualización con renderizado pipeline. · Semitransparente: muestra sombreado con transparencia ajustable. · Rayos X: muestra sombreado transparente y aristas simultáneamente. · Sombreado plano: sombrea plano. Es posible guardar y cargar vistas, así como cambiar la forma de las mismas, arrastrando cualquiera de sus bordes.

2. Navegar por el modelo El botón derecho del ratón rota el modelo en la vista Perspectiva. Puede pulsar la tecla Mays y arrastrar el ratón con el botón derecho para encuadrar la vista. Arrastrar el cursor con el botón derecho para mover el modelo, no interrumpe ningún comando que esté en progreso. Es posible cambiar la vista en la mitad de un comando para ver exactamente dónde quiere seleccionar un objeto o un punto. Para encuadrar una vista: 1 En la vista Superior, pulse la tecla Mays y arrastre el cursor con el botón derecho para encuadrar la vista.

2 Encuadre la vista en las vistas paralelas arrastrando con el botón derecho del ratón. Teclado para navegar Tecla Acción + Ctrl Flecha izquierda Rotar hacia la izquierda Encuadre hacia la izquierda Flecha derecha Rotar hacia la derecha Encuadre hacia la derecha Flecha arriba Rotar hacia arriba Encuadre hacia arriba Flecha abajo Rotar hacia abajo Encuadre hacia abajo Re Pág Ampliar Av Pág Reducir Inicio Deshacer cambio de vista Fin Rehacer cambio de vista

- Zoom: La manera más sencilla de cambiar la vista es pulsando la tecla Mays y arrastrar el ratón manteniendo pulsado el botón derecho. De este modo se encuadrará la vista. Para ampliar o reducir la vista, pulse la tecla Ctrl y arrastre el cursor hacia arriba o hacia abajo, o utilice la rueda del ratón. Comando zoom, opciones: · Selección [centra vista en objetos seleccionados] · Todas [aplica a todas las vistas[ · Extensión [centra vista en todos los objetos visibles] · Otros: dinámico, factor, ampliar, reducir, , objetivo, por escala Zoom en navegación:

1 En la vista Perspectiva, gire la rueda del ratón hacia delante para ampliar y hacia atrás para reducir. La cámara aplica el zoom en la posición del cursor.

2 En la vista Perspectiva, pulse Ctrl, mantenga pulsado el botón derecho del ratón y arrástrelo hacia arriba y hacia abajo. Ratón hacia arriba: amplia. Ratón hacia abajo: reduce.

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULOS BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI[O]LOGICS

[ 7 ]

Page 8: Rhinoceros Algorithmic Design Manual

- Botones de función: F1: Ayuda. F2: Muestra el historial de comandos. F3: Muestra el panel de propiedades de objetos. F6: Muestra/Oculta la cámara en las vistas activas. F7: Muestra/Oculta la rejilla del plano de trabajo. F8. Activa/Desactiva el modo ortogonal. F9: Activa/Desactiva el forzado de rejilla. F10: Muestra puntos de control de objetos seleccionados. F11: Oculta puntos de control. F12: ClickDig: digitalizador.

- Mover Objetos: Comando: mover El arrastre de objetos se realiza en el plano de trabajo de la vista activa.

- Copiar Objetos: Comando: copiar

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULOS BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI [O] LOGICS

[ 8 ]

Page 9: Rhinoceros Algorithmic Design Manual

IV. APÉNDICE: INTERFAZ

1. Barras de herramientas

2. Vistas

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULOS BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI[O]LOGICS

[ 9 ]

Page 10: Rhinoceros Algorithmic Design Manual

3. Toolbar Layout y opciones de visualización

4. CodeMonkey

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULOS BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI [O] LOGICS

[ 10 ]

Page 11: Rhinoceros Algorithmic Design Manual

5. Principales barras de herramientas de diseño

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULOS BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI[O]LOGICS

[ 11 ]

Page 12: Rhinoceros Algorithmic Design Manual

INTRODUCCIÓN AL MODELADO 2,5D

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULO BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI [O] LOGICS

[ 12 ]

Page 13: Rhinoceros Algorithmic Design Manual

[ 13 ]

Page 14: Rhinoceros Algorithmic Design Manual

I. INTRODUCCIÓN A MODELADO 2D Una vez hemos conocido la interfaz de Rhinoceros y los modos de navegación que éste nos ofrece, podemos comenzar a modelar figuras simples en dos dimensiones. El presente manual obvia ciertos conocimientos de CAD, por lo que, a pesar de la sencillez de los trabajos, no se describe cada paso de manera exhaustiva. El manual es una guía de diseño, no un tutorial pormenorizado.

En el presente ejercicio vamos a abrir el fichero existente de Rhinoceros, y trateremos de dibujar la pieza dada con la acotación que presentamos a continuación.

[Fig 1. Pieza y vistas]

1. Abriendo el archivo del tutorial Para abrir el archivo tienes dos opciones principalmente: por un lado, hacer doble click sobre el nombre del archivo (en explorador de windows); por otro, una vez en Rhinoceros, ir a Menú Archivo>Abrir. Existe la opción de importar archivos de otros tipos, además de insertar archivos.

2. Dibujando las vistas en el plano “World CPlane” En primer lugar, crea las capas que te permitan ser ordenado en tu trabajo. En este caso, como tendremos solamente modelado bidimensional, será suficiente con tener 3 capas, correspondientes a “Ejes”, “LineasContorno” y “Dimensiones”. Pos-teriormente, si creamos el objeto en 3D, será recomendable cerar una capa “3D” que contenga una subcapa “Superficies”. Comienza por dibujar el alzado en vista “superior”. Si bien podríamos hacerlo directamente sobre la vista “frontal”, por ejemplo, vamos primero a dibujar todas las vistas como se encuentran en el plano de trabajo superior, lo que se asemeja a la manera de trabajar tradicional en programas como ACAD. A medida que ganemos destreza en el dibujo iremos abandonan-do estas herencias, y dibujaremos de manera más libre.

7.60

Ø8.40

Ø3.20

1.70

5.20

6.90

1.253.78

10.3

4

3.44

14.5

4

1.70

1.58

5.00

1.58

1.70

0.79

0.79

2.50

1.532.772.071.25

4.303.32

4.89

3.20

1.89

0.71

4.44

1.70

1.84

0.76

5.20

7.64

2.50

4.20

5.80

1.701.60

5.09

0.71

2.56

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULOS BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI [O] LOGICS

[ 14 ]

Page 15: Rhinoceros Algorithmic Design Manual

Ten en cuenta las siguientes herramientas a la hora de dibujar en 2D: - En la barra de herramientas principal 1: · Líneas y círculos: especialmente las herramientas polilínea y circunferencia. Verás que cada botón tiene varias opciones, éstas son accesibles mediante click en el botón derecho o izquierdo. Experimenta con ellas y usa la más conve-niente (recomendamos el uso de circunferencia a partir de centro y radio). No uses líneas simples, siempre que puedas usa polilíneas, ya que éstas tienen más propiedades. - En la barra de herramienas principal 2: · En “Herramientas para Curvas”, es posible que necesites “Extender” o “Empalmar”. La mayoría de comandos son comunes a AutoCAD, por lo que no merece la pena describirlos en profundidad.

Además, activa “Smart Track” y las opciones de “Tracking” en la barra de estado, puesto que éstas te serán de utilidad para dibujar con precisión. Ten siempre activas “Punto”, “Fin”, “Perpendicular”, así como “Tan” y “Cuad”, cuando estés tratando con circunferencias.

[Fig 2] Herramientas de uso frecuente para curvas.

El World CPlane es el plano de trabajo Z=0 (dicho de otro modo, el plano XY). Dibujarás sobre él cuando te encuentres en la vista “Perspectiva” o “Superior”, siempre que no hayas cambiado el plano de trabajo. Por el momento, el plano actual de trabajo debería ser el “World”. Una vez tengas las vistas sobre este plano podrás rotarlas para posicionarlas correctamente y poder así dibujar en 3D directamente.

3. Colocando las vistas en 3D Para ello, deberemos rotar las curvas creadas para colocarlas perpendiculares al plano de trabajo. Usa la herramienta “Rotar3D”, accesible bien desde la barra de comandos, bien desde el botón en la barra de herramientas principal 2. Es posiblle que necesites “Mover” los objetos para colocarlos adecuadamente.

[Fig 3] Vista de la pieza terminada con superficies y curvas colocadas.

Polilínea

Línea Vertical(perpendicular a CPlane actual)

Extender líneaEmpalmarAcha�anarDesfasar

Reconstruir

Circunferencia centro-radio

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULOS BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI[O]LOGICS

[ 15 ]

Page 16: Rhinoceros Algorithmic Design Manual

[4. Contacto con 3D: primeras funciones de superficies] Una vez hayas conseguido colocar las vistas en su sitio, queda únicamente crear las superficies y sólidos que definirán la pieza en 3d. Usa el comando “Extruir Curva” y “Superficie a partir de curvas planas” para crear las superficies que necesi-tas. Es posible, además, que necesites realizar operaciones booleanas de sustracción para crear los huecos de la pieza. Ac-cede a ellas en la barra de herramientas principal 2>operaciones booleanas.

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULOS BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI [O] LOGICS

[ 16 ]

Page 17: Rhinoceros Algorithmic Design Manual

I. MODELADO 2,5D DE UN ELEMENTO ARQUITECTÓNICO SIMPLE Ya nos hemos familiarizado con el trabajo en dos dimensiones, así como, aunque brevemente, con el trabajo en tres dimensiones, y las capacidades de diseño que tenemos a la hora de abordar construcciones tridimensionales.

El siguiente ejercicio introduce más conceptos de diseño 3D, así como de edición de objetos existentes a partir del modelado de un elemento arquitectónico muy recurrente: una escalera de un tramo.

1. Abriendo el archivo del tutorial Sigue los pasos habituales.

2. Dibujando las vistas en el plano “World CPlane” En primer lugar (¡y como siempre!), crea las capas que te permitan ser ordenado en tu trabajo. En este caso, y al prever trabajo en 2d y 3d, crearemos 2 capas con dichos nombres. Dentro de “2D”, crearemos “LineasBase” y “Escalera2D”; “3D”, por su parte, contendrá “Escalera3D” o “Superficies”, la que nos parezca más descriptiva. Comienza por dibujar la planta en vista “superior” o perspectiva. Con origen en 0,0,0, dibuja un rectángulo de dimen-siones 1m*3,7m, espacio suficiente para un tramo de escalera de 10 peldaños. Luego, dibuja un rectángulo de 1m*0,3m que defina un escalón. Puedes copiar este rectángulo hasta 10 veces o automatizar el proceso por medio de una matriz con 10 elementos en Y (usa la herramienta “array”).

[Fig 1] Escalera terminada y posibles modificaciones

Usa las herramientas aprendidas en el tutorial anterior para el dibujo en 2D. Además de la planta, vamos a dibujar el perfil de la escalera, para lo que dibujaremos un alzado esquemático al lado de la planta, y que utilizaremos para obtener los puntos donde colocar las huellas de los escalones. Dibuja la línea como en el archivo del tutorial. Ahora deberías tener la planta y el alzado esquemático dibujados en la vista superior. Queremos, sin embargo, dibujar la escalera en 3D, por lo que deberemos, al igual que en el ejercicio anterior, colocar el alzado perpendicular a la planta. Una vez más, usaremos rotar3D (con copia) para conseguirlo. Deberíamos tener un resulta-do parecido al que se muestra en la figura 2.

Para dividir la curva y obtener los puntos donde colocaremos los peldaños, usaremos el comando “Dividir Curva”, bien en la barra de comandos, bien usando el botón Barra Herramientas Principal 2>Punto>Dividir Curva por Segmentos (10). Obtendremos, como resultado, los puntos que nos servirán de base para copiar el “peldaño guía” (crearemos uno y lo copia-remos las veces necesarias).

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULOS BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI[O]LOGICS

[ 17 ]

Page 18: Rhinoceros Algorithmic Design Manual

[Fig 2] Proceso de construcción con líneas.

Una vez hayas copiado los rectángulos del peldaño en su correspondiente lugar, ya podemos proceder a crear el mo-delo tridimensional de los mismos, bien por medio de volúmenes, bien mediante superficies. · Superficies: como tratamos con curvas planas y cerradas, podemos crear superficies a partir de curvas. Puedes encon-trar el comando en Barra de Herramientas principal 1>Superficie>”Superficie a partir de curvas planas”. · Volúmenes: es posible además usar “Extrusión Recta” en Herramientas principal 1>Superficie>Extrusión>Extrusión Recta. Usa la opción “Tapar” (Cap) para crear un sólido. Si partes de una superficie puedes extruirla para obtener un sólido.

3. Modificando los peldaños Copia el peldaño creado en la posición obtenida mediante el comando “Dividir Curva”.

Aunque los siguientes pasos sean avanzar sobre terreno que aún (¡aún!) no dominamos, es importante tener un primer contacto con los principios geométricos que rigen las entidades NURBS. Pulsa F10 para activar los llamados puntos de con-trol de la superficie del peldaño (no se pueden activar los de polisuperficies). Esto mostrará una serie de puntos interconec-tados ente sí y cuya densidad dependerá del número de subdivisiones de la superficie. Inicialmente, es probable que tengas sólamente 4 puntos, uno por cada esquina. Para modificar el número de puntos de control, ejecuta el comando “Reconstruir” (“Rebuild”).

Ahora puedes cambiar la geometría del objeto sencillamente desplazando los puntos de control (arrastrando el ratón o utilizando el comando mover). Si copias un punto de control, se duplicará la geometría original con el punto de control cambiado.

Si has utilizado el historial, todos los peldaños se deberían actualizar de manera automática. En caso contrario, deberás actualizarlos uno a uno.

[5. Creando una zanca central] Para crear una zanca central, puedes usar el comando “Sweep 1Rail”, definiendo una línea central y una sección, que usará Rhino como guía.

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULOS BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI [O] LOGICS

[ 18 ]

Page 19: Rhinoceros Algorithmic Design Manual

II. MODELADO 2,5D DE UN ELEMENTO ARQUITECTÓNICO Pasemos ahora a diseñar un elemento ligeramente más complejo. Dibujar fachadas tiene la pequeña dificultad añadi-da de tener que trabajar en un plano vertical, por lo que tendremos que, bien cambiar nuestro plano de trabajo actual, bien dibujar todo en el plano de trabajo por defecto “World”, y rotar nuestros objetos en 3D a su posición final. Ambos métodos son perfectamente válidos, si bien es recomendable trabajar directamente sobre el plano de trabajo que necesitemos; esto nos permitirá no solamente un mayor control de la geometría, sino que además abrirá la posibilidad de controlar nuestros objetos con historial.

Sin embargo, a efectos de simplicidad docente, podemos permitirnos [solo por esta vez] comenzar dibujando nuestro elemento de fachada sobre el CPlane Z=0, y rotar posteriormente la fachada en tres dimensiones. Verás que la fachada no es una convencional, sino más bien un elemento relativamente escultórico.

1. Abriendo el archivo del tutorial Sigue los pasos habituales.

[Fig 1] Fachada terminada

2. Dibujando las vistas en el plano “World CPlane” Como es habitual, crearemos las capas que necesitamos. En este caso, y al igual que en la escalera [veremos que ed aquí en adelante dibujaremos siempre en 3D], comenzaremos creando 2 capas correspondientes a dibujo 2D y dibujo 3D.. Dentro de “2D”, crearemos “LineasBase”, “Points” y “Lineas Paso”; “3D”, por su parte, contendrá sencillamente“Superficies”.

En la vista superior, dibuja la figura 2 en los pasos que se indica. Necesitarás las herramientas rectánculo, curva, y dividir curva, dado que se subdivide el panel en 8 partes iguales. El panel tiene unas dimensiones de 10m*5m*0.2m. · Dibuja en planta un rectángulo de 10m*5m. · Dibuja ahora, en la capa “Líneas Base”, las líneas horizontales de 10 metros de longitud que usaremos para calcular las divisiones. · En “Points”, divide las curvas anteriores en 8 partes. Obtendremos de esta manera los puntos que nos servirán de guía. · Podemos ahora proceder a dibujar las líneas verticales de división. Prueba a hacer una y copiarla, o a usar el comando “array”. · Dibuja ahora el rectángulo interior que nos servirá para definir la volumetría. Prueba las herramientas “chamfer”, y “empalmar curvas” para crear los arcos de circunferencia.

3. Creando la volumetría · Una vez hecho esto, podemos pasar a rotar todo el conjunto en 3D para elevarlo 90º. Copiaremos este grupo de obje-tos 0.2m en sentido perpendicular al plano que los contiene.

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULOS BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI[O]LOGICS

[ 19 ]

Page 20: Rhinoceros Algorithmic Design Manual

· Usa loft y “Superficie de curvas planas” para crear las superficies.

La bondad de este diseño es que es muy fácilmente modificable, por lo que puedes hacer tantas pruebas como quieras, hasta llegar a las soluciones de la figura 1.

[Fig 2] Dimensiones de la fachada

0.150.100.500.50

0.09

4.82

0.09

1.251.251.251.251.251.251.251.251.251.251.251.251.251.251.251.25

5.00

10.00

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULOS BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI [O] LOGICS

[ 20 ]

Page 21: Rhinoceros Algorithmic Design Manual

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULOS BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI[O]LOGICS

[ 21 ]

Page 22: Rhinoceros Algorithmic Design Manual

MODELADO E HISTORIALCONCEPTOS BÁSICOS DE TOPOLOGÍA

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULO BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI [O] LOGICS

[ 22 ]

Page 23: Rhinoceros Algorithmic Design Manual

[ 23 ]

Page 24: Rhinoceros Algorithmic Design Manual

I. MODELADO Y COMANDO HISTORY. ANÁLISIS1. Introducción a la geometría NURBS- NURBS: Non-Uniform Rational Bezier Splines La geometría NURBS se diferencia de los sólidos en que la primera trabaja mediante cálculos matemáticos, mediante interpolación -los sólidos se basan en mallas descritas por nubes de puntos.

Las superficies NURBS siempre tienen una topología rectangular. Las filas de puntos de superficies y la parametrización se organizan en dos direcciones, básicamente de modo transversal. Esto no siempre es evidente al crear o manipular una superficie. Recordar esta estructura sirve para decidir las estrategias que deben usarse en la creación o edición de geometría.

[Fig 1. Superficies NURBS y sus puntos de control]

La base de la geometría NURBS son puntos. Tanto las líneas, como polilíneas, así como las superficies y polisuperficies se describen a través de entidades geométricas basadas en puntos y sus relaciones.

De esta manera, toda geometría NURBS (excepto los puntos) se basa en los llamados “polígonos de control”, repre-sentación gráfica de las relaciones de interpolación que rigen la descripción de líneas, curvas, y superficies. La interpolación puede ser de grado 1 a infinito, siendo el resultado de la curva más ajustado al polígono de control cuanto más bajo sea el grado (es decir, menor interpolación exista entre puntos consecutivos). Así pues, si creamos una curva con grado 1, ésta será exacta al “polígono de control”.

[Fig 2. Puntos de control e interpolación de una curva NURBS]

Punto de control

Interpolación para curva grado 2

Polígono de control, curva grado 1

Curva grado 2

Curva grado 3

Curva grado 4

Curva grado 5

Curva grado 6

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULOS BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI [O] LOGICS

[ 24 ]

Page 25: Rhinoceros Algorithmic Design Manual

2. Superficies NURBS, jerarquía e “historial” Las superficies NURBS siguen esta misma lógica en dos dimensiones (R2), por lo que tenemos numerosas maneras de generar este tipo de geometría a partir de curvas. La geometría creada con este tipo de jerarquía podrá modificarse mediante la modificación de la geometría base, es decir, respetando la jerarquía. Así pues, de manera genérica, las superficies se podrán modificar a través de transformaciones de las curvas que las hayan generado, en su caso. A este tipo de relación jerárquica se la denomina “historial”.

[Fig 3 y 4. Puntos de control e interpolación de una curva NURBS, aplicación en superficies y modelización con jerarquía]

El domino del modelado con la opción de “historia” activada nos permitirá el desarrollo de modelos plenamente para-métricos y fáciles de controlar.

3. Tipos de curvas Rhinoceros dispone de varias opciones para la creación de curvas. Las principales son: - Por interpolación (puntos de control) - A través de puntos de edición, que se encuentran sobre la curva - Por “manejadores” que controlan la continuidad de curvatura (handles) - Por interpolación en superficies Todas ellas se comportan internamente de la misma manera, como se describe en el punto anterior.

[Fig 5. Herramientas relacionadas con creación de curvas]

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULOS BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI[O]LOGICS

[ 25 ]

Page 26: Rhinoceros Algorithmic Design Manual

4. Análisis de curvatura La curvatura de una curva se analiza mediante el comando GráficoDeCurvatura (Menú Análisis: Curva > Activar gráfico de curvatura). El gráfico indica la curvatura de la curva, que es inversa al radio de la curvatura. Cuanto menor sea el radio de la curvatura en cualquier punto de la curva, mayor será el nivel de curvatura. El gráfico de curvatura se puede visualizar mientras arrastra los puntos de control. La curvatura cambia cuando se mue-ven los puntos de control de la curva. De este modo, se puede utilizar los botones del cuadro de diálogo Gráfico de curvatura para eliminar o añadir objetos de la visualización del gráfico. - Las curvas de Grado 1 no tienen curvatura ni aparece ningún gráfico. - Las curvas de Grado 2 tienen continuidad de tangencia internamente; los saltos del gráfico indican esta condición. Observe que sólo está escalonado el gráfico, no la curva. - Las curvas de Grado 3 tienen continuidad de curvatura; el gráfico no mostrará los saltos, pero puede mostrar picos altos y puntos bajos. La curva no tiene pinzamientos en estos lugares; el gráfico muestra un cambio abrupto pero no discon-tinuo en la curvatura. - En curvas de mayor grado, es posible tener niveles más altos de continuidad.Por ejemplo, una curva de Grado 4 es continua en el índice de cambio de curvatura; el gráfico no muestra picos altos. - Una curva de Grado 5 es continua en el índice de cambio del índice de cambio de la curvatura. El gráfico no muestra ninguna característica particular en las curvas de mayor grado, pero tenderá a ser suave.

Aumentar el grado de la curva con el comando CambiarGrado con Deformable=No no mejorará la continuidad interna, pero disminuir el grado repercutirá negativamente en la continuidad. Reconstruir una curva con el comando Reconstruir cambiará la continuidad interna.

5. Continuidad y Grado Crear una buena superficie depende a menudo de la calidad y continuidad de las curvas de entrada. En la creación de la mayoría de curvas y superficies destacan cuatro niveles de continuidad:

· Sin continuidad: los puntos finales o los bordes de las curvas o superficies no se tocan. Donde no hay continuidad, los objetos no pueden unirse.

· Continuidad de posición (G0): las curvas coinciden en los puntos finales, las superficies coinciden en los bordes. Hay un punto de torsión en el punto donde se tocan las curvas. En Rhino, las curvas se pueden unir en una sola curva, pero se creará un punto de torsión y la curva todavía se podrá explotar en dos subcurvas. Del mismo modo, dos superficies se pueden tocar en un borde común, pero tendrán un punto de torsión o una costura, una línea gruesa entre las superficies. A efectos prácticos, para determinar continuidad G0 sólo tendrán que coincidir los puntos finales de una curva o la última fila de puntos del borde de una superficie no recortada.

· Continuidad de tangencia (G1): Las curvas o las superficies se tocan y la dirección de las tangentes en los puntos finales o en los bordes es la misma. No se deberían ver pliegues ni bordes puntiagudos. La tangencia es la dirección de una curva en cualquier punto específico a lo largo de la curva Cuando dos curvas coinciden en sus puntos finales, la condición de tangencia entre ellos viene determinada por la dirección en que las curvas están exactamente orientadas en sus puntos finales. Si las direcciones son colineales, las curvas se considerarán tangentes. No hay pinza-mientos ni esquinas pronunciadas donde coinciden las dos curvas. Esta dirección de tangencia se controla mediante la dirección de la línea entre el punto de control final y el punto de control siguiente en una curva.

Para que dos curvas sean tangentes una con otra, sus puntos finales deben ser coincidentes (G0) y el segundo punto de control de cada curva debe estar en una línea que atraviese los puntos finales de la curva. Un total de cuatro puntos de control, dos de cada curva, deben estar en esta línea imaginaria.

· Continuidad de curvatura (G2): Las curvas o las superficies se tocan, sus direcciones tangentes son las mismas y el radio de curvatura es el mismo en el punto final. La continuidad de curvatura incluye las condiciones G0 y G1 mencionadas anteriormente y tiene la condición adicional de que el radio de la curvatura debe ser el mismo en los puntos finales comunes de las dos curvas.

· G3 y G4: la continuidad de curvatura es la condición más suave sobre la que el usuario tiene un con-trol directo, aunque también son posibles otras relaciones más suaves. Por ejemplo, continuidad G3 significa que no sólo se cumplen las condiciones de la continuidad G2, sino que además la velocidad de cambio de la curvatura es la misma en los puntos finales o bordes comunes de ambas curvas o superficies. G4 significa que la velocidad de cambio de la curvatura es la misma. Rhino dispone de herramientas para crear estas curvas y superficies, pero tiene menos para

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULOS BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI [O] LOGICS

[ 26 ]

Page 27: Rhinoceros Algorithmic Design Manual

revisar y verificar este tipo de continuidad que para G0-G2.

Para transformar una curva sin perder la continuidad de tangencia, se recomienda usar Tab para mantener la dirección en el nodo que se esté transformando.

La continuidad de curvatura en superficies se visualiza mediante el comando de análisis “zebra”. Otro relacionado y de gran utilidad es el análisis gaussiano de curvatura.

Ejemplo: Un polinomio es una función como y = 3·x3 –2·x + 1. El “grado” del polinomio es la mayor potencia de la variable. Por ejemplo, un grado de 3·x3 –2·x + 1 es 3; el grado de –x5 + x2 es 5, y así sucesivamente. Las funciones NURBS son polinomios racionales y el grado de las NURBS es el grado del polinomio. Desde el punto de vista de modelado NURBS, el grado –1 es el número máximo de “curvaturas” que puede haber en cada segmento.

[Fig 6. Curvas de distintos grados. Línea G1, G2: parábola, arco, círculo, bezier G3]

Una línea tiene grado 1. No tiene ninguna “curvatura”. Una parábola, una hipérbola, un arco y un círculo (curvas de sección cónica) tienen grado 2. Tienen una “curvatura”. Una Bézier cúbica tiene grado 3. Si se disponen sus puntos de control en forma de zig-zag, se obtienen dos “curvaturas.”

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULOS BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI[O]LOGICS

[ 27 ]

Page 28: Rhinoceros Algorithmic Design Manual

II. COMANDO HISTORY. USOS1. Introducción Como se ha comentado con anterioridad, el comando “historial” (history), graba el historial y actualiza los objetos con historial. Con las opciones de grabación de historial y actualización activadas, una superficie de transición se puede modificar editando las curvas de entrada. En general, se suele recomendar dejar la opción Grabar en No y utilizar el panel de la barra de estado Grabar historial para grabar el historial selectivamente, si bien un modelado consciente permite grabar cada paso que damos. Por otro lado, la grabación del historial utiliza recursos del ordenador y aumenta el tamaño de los archivos guardados. La información del historial se almacena en el archivo de trabajo de rhino.

2. Comandos que permiten la grabación de historial - Comandos de puntos: · Dividir - Comandos de curva desde objeto: · Intersección · Proyectar - Comandos de superficies: · ExtrusiónDeCrv · ExtrusiónDeCrvAlolargoDeCrv · ExtrusiónDeCrvAhusada · ExtrusiónDeCrvHaciaPunto - Comandos de superficies: · ExtrusiónDeSupEnPunto · ExtrusiónDeSupPorCrv · ExtrusiónDeSupAhusada · Transición · SupDesdeRed · RevoluciónPorCarril · Revolución - Comandos de Transformación · Matriz · MatrizPolar · Copiar · Rotar Copiar=Sí · Escalar Copiar=Sí · Reflejar Copiar=Sí · Fluir · FluirPorSup · Simetría

[Fig 7. Jerarquía: transformación de curva de control e influencia sobre la superficie extruida]

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULOS BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI [O] LOGICS

[ 28 ]

Page 29: Rhinoceros Algorithmic Design Manual

3. Uso del historial - El botón derecho del ratón en el panel Grabar historial permite cambiar las opciones: · Siempre grabar historial cambia el comportamiento predeterminado, de modo que cualquier comando que permita la grabación de historial siempre grabará el historial. Esta opción debe ser utilizada con cautela y sentido del modelo, ya que aumenta el tamaño del archivo y puede producir comportamientos inesperados. Para borrar el historial de determi-nados objetos o de todos los objetos, se utiliza el comando DepurarHistorial. · Actualizar descendientes hace que los objetos secundarios (“hijos”) se actualicen cada vez que el objeto prin-cipal cambia. De este modo aumenta el tiempo que se tarda en actualizar objetos complejos. Para ediciones muy complejas en los objetos principales, es mejor desactivar la actualización, hacer los cambios y volver a activar la actualización de des-cendientes para que esto sólo pase una vez. · Bloquear descendientes bloquea los objetos secundarios (“hijos”). Puesto que la edición directa de los objetos descendientes rompe la conexión con los objetos ascendientes, bloquear los objetos descendientes evita ediciones acci-dentales. Además, seleccionar objetos descendientes puede ser problemático si están en la misma posición que los objetos ascendientes. Los objetos descendientes bloqueados continuarán actualizándose cuando se editen los objetos ascendientes. · Aviso de interrupción de historial muestra un aviso si una operación interrumpe la conexión de un objeto descendiente con los objetos ascendientes. El comando Deshacer restaurará el historial. Además del panel de la barra de estado y el menú, la grabación, la actualización y el bloqueo del historial también se pueden controlar mediante el comando Historial.

4. Precauciones en el uso de historial - Opciones de activación de historial: · Siempre activado /Siempre desactivado · Activar para el siguiente paso/comando · Bloquear /Actualizar descendientes (recomendado) - Pasos en la cadena del historial: “entradas” y “salidas” · El comando debe tener la opción de Historial que se han enumerado anteriormente. · La grabación de historial debe estar activada cuando el comando se esté ejecutando. De manera predetermi-nada, la grabación de historial está desactivada y debe activarse cada vez que se ejecuta un comando para el que el usuario quiere grabar el historial. · La actualización del historial debe estar activada. Esta opción está activada de manera predeterminada. Cuando está activada, las ediciones en los objetos de entrada se reflejan inmediatamente en la salida actualizada. - Cualquier edición de las salidas “romperá” el historial y la conexión entre las entradas y las salidas se perderá. Rhino mostrará un diálogo de advertencia cuando esto suceda y el usuario podrá deshacer la acción para restaurar la conexión o continuar con la edición y aceptar la ruptura en el historial. - Se pueden seleccionar objetos con historial en el menú Seleccionar > Seleccionar objetos con historial

[Fig 8. Menú selección objetos con historial]

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULOS BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI[O]LOGICS

[ 29 ]

Page 30: Rhinoceros Algorithmic Design Manual

MODELADO TRIDIMENSIONAL E INFORMACIÓN PLANIMÉTRICA

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULO BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI [O] LOGICS

[ 30 ]

Page 31: Rhinoceros Algorithmic Design Manual

[ 31 ]

Page 32: Rhinoceros Algorithmic Design Manual

I. MODELADO 3D En el siguiente ejercicio modelaremos un edificio sencillo de un proyecto tipo de vivienda unifamiliar. Veremos asimis-mo las diferencias de modelasr con diferentes comandos de superficies, y su repercusión en la aplicación de jerarquía e his-torial. Por ejemplo, veremos la conveniencia de hacer “lofts” en lugar de extrusiones si prevemos muchos cambios en nuestro modelo, puesto que el primero nos permitirá, por ejemplo, cambios automáticos en las alturas de los forjados, si tenemos un edificio repetitivo [como puede ser el caso de uno de viviendas estandarizado].

Una de las mayores ventajas de trabajar con modelos tridimensionales es la obtención de dibujos en dos dimensiones de manera automática y coordinada para todo el equipo de trabajo, lo que permite mayor velocidad y coordinación de traba-jo. Aprenderemos técnicas básicas para la creación de información planimétrica, si bien dejaremos para el módulo avanzado otras tareas más arduas como es la obtención de planos con alzados. Para ello utilizaremos las herramientas que encontra-mos en “Barra Principal 1>Curva de Objetos>[...]”, a saber: sección y lneas de contorno entre otras. La herramienta líneas de contorno es especialmente útil para la obtención de plantas en edificios en altura, dadas su características.

A. Herramientas relacionadas con el tutorial - Modelado: las ya sabidas de curvas y superficies. Especial atención a activar historial a la hora de modelar con “lofts”. - Planimetría: · Sección: se encuentra en barra de herramientas “Principal1>[Menú desplegable de]Proyectar sobre superficie>Curva desde objeto>Sección”. Precisa solamente de la selección de los objetos 3D a cortar, así como de un plano de sección, definido por una línea auxiliar, bien explícita, bien implícita [definida por el comienzo y el fin de la misma]. Obvia-mente, a efectos de sección no es preciso definir la orientación de la misma, ya que no efectuaremos los alzados hasta más adelante.

[Fig 1. Principales herramientas de sección]

La herramienta sección efectúa la intersección entre los objetos seleccionados y el plano perpendicular al pla-no de trabajo que sea definido por los puntos dados de la línea de sección. Por tanto, esta herramienta puede usarse también para obtener plantas. Para ello, nos colocaremos en una vista cuyo CPlane o plano de trabajo actual sea vertical, de manera

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULOS BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI [O] LOGICS

[ 32 ]

Page 33: Rhinoceros Algorithmic Design Manual

que el plano de sección, perpendicular a éste, sea horizontal. Para hacer secciones quebradas, deberemos hacerlo mediante segmentos diferenciados.

· Líneas de contorno: se encuentra en barra de herramientas “Principal1>[Menú desplegable de]Proyectar so-bre superficie>Curva desde objeto>Contorno”. Tiene un funcionamiento similar a la herramienta de sección, y efectúa, de he-cho, una serie de secciones perpendiculares a una dirección dada y en un intervalo determinado. Esto es, podemos efectuar secciones de manera efectiva y sencilla, por ejemplo, mediante planos paralelos al Z=0 (es decir, horizontales), a intervalos iguales de 3 metros. Es una herramienta muy efectiva para la definición de edificios en altura.

Al igual que la herramienta sección, “contorno” efectúa secciones perpendiculares a cualquier dirección dada (definida por dos puntos), por lo que es, además, bastante útil en edificios de marcado carácter horizontal y que precisen de muchas secciones paralelas entre ellas.

[Fig 2. Esquema de pieza con la definición de secciones y plantas]

B. Trabajo de tutorial1. Abriendo el archivo del tutorial Como siempre, tienes dos opciones principalmente: por un lado, hacer doble click sobre el nombre del archivo (en explorador de windows); por otro, una vez en Rhinoceros, ir a Menú Archivo>Abrir. Existe la opción de importar archivos de otros tipos, además de insertar archivos.

2. Dibujando las líneas base En primer lugar, crea las capas que te permitan ser ordenado en tu trabajo. Al trabajar en 3D en un modelo de media complejidad, es conveniente crear capas correspondientes a “2D” y “3D”. Estas capas contendrán las subcapas “Base”, “Di-mensions”, “Curves”, “GroundPLine”, “FirstPLine”, 2DWalls, “2DGlass”, “2DStair”, “2DFloor”, “2DLandscape” y “3DWalls”, “3DGlass”, “3DLandscape”, “3DStair”, “3DFloor”, “3DSurface” respectivamente. Es posible que prefieras ir creando las capas a medida que avanzas en el modelo, pero no olvides colocar cada objeto en su capa correspondiente. Como en casos anteriores, comienza por dibujar la planta base en vista “perspectiva”. Si bien podríamos hacerlo direc-tamente sobre la vista “superior”, por ejemplo, vamos primero a dibujar las líneas base tal como se encuentran en planta, para luego levantar el modelo tridimensional. De nuevo, esta manera de trabajar facilita la migración desde la metodología de trabajo de AutoCAD. A medida que ganemos destreza en el dibujo iremos abandonando estas herencias, y dibujaremos de manera más libre.

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULOS BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI[O]LOGICS

[ 33 ]

Page 34: Rhinoceros Algorithmic Design Manual

Ten en cuenta las siguientes herramientas a la hora de dibujar en 2D: - En la barra de herramientas principal 1: · Intersección: marcarán algunos de los puntos base fundamentales a la hora de definir la geometría. - Consejo de dibujo: pulsa la tecla “Tab” (tabulador) para bloquear la dirección del cursor, vuelve a pulsar para desblo-quearla. Al bloquear el cursor, podrás dibujar más fácilmente. Además, activa “Smart Track” y las opciones de “Tracking” en la barra de estado, puesto que éstas te serán de utilidad para dibujar con precisión. Manten siempre activas “Punto”, “Fin”, y “Perpendicular”, así como “Tan” y “Cuad”, cuando estés tra-tando con circunferencias.

En principio, sólamente necesitamos dibujar en dos dimensiones, si bien el dibujo final es en tres dimensiones, ya que las plantas tienen distintas cotas. Para modificar el plano de trabajo puedes usar las herramientas correspondientes, y que encuentras en “Herramientas Estándar>Definir PlanoC>Definir plano de trabajo>Definir origen de PlanoC [...]”.

[Fig 3] Herramientas de CPlane.

El World CPlane es el plano de trabajo Z=0 (dicho de otro modo, el plano XY). En principio, si no hemos cambiado el plano de trabajo (PlanoC), dibujaremos sobre él en las perspectivas y en la vista superior, por lo que podemos usarlas indis-tintamente según nos resulte conveniente. Sobre la capa “Base”, dibuja la figura 4 como se indica en las acotaciones.

Sobre esta base podremos dibujar ya los muros, tratando de usar curvas cerradas -lo que facilitará a posteriori la crea-ción de muros y geometría tridimensional. Para las curvas, usaremos curvas de grado 3, en los puntos de intersección indica-dos [verás que se han creado unas circunferencias que intersecan con las curvas base, dando como resultado 2 puntos; estos dos puntos con el centro de la circunferencia nos valdrán para hacer las curvas].

Asimismo, podemos dibujar ya la escalera en planta. La escalera estará inscrita inicialmente en un rectángulo de di-mensiones 2m*7.2m. Podemos prever un espacio para el descansillo de 1m; el resto del espacio se ocupará con escalones. Para el segundo tramo de escaleras podemos rotar el rectángulo 11.3º en el sentido de las agujas del reloj, tomando como centro el punto medio de su lado derecho.

3. Muros Una vez tenemos la geometría base del modelo podemos pasar a dibujar los muros, teniendo siempre en cuenta lo siguiente: - Que sean polilíneas cerradas. - Que estén dibujadas en la posición final. - Que estén dibujados en sus respectivas capas. Dibujaremos las líneas que definen los muros en la subcapa 2DWalls dentro de las capas 2D.

Asimismo, dibujaremos una línea de contorno para extruir el suelo de las plantas baja y alta. De nuevo, lo haremos en la correspondiente capa. Si, por algún motivo, dibujamos objetos en capas incorrectas, siempre podemos cambiarlos a pos-teriori reasignando la capa en las propiedades.

Antes de proceder a la planta alta, es conveniente terminar la baja. Una vez tengas la baja terminada, procede a agrupar los objetos. Esto permite seleccionarlos a todos con un único clic sin que se constituyan en un bloque u objeto único.

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULOS BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI [O] LOGICS

[ 34 ]

Page 35: Rhinoceros Algorithmic Design Manual

5.00

6.40

3.60

10.0

05.

00

11.4

03.

6015

.00

4.75 1.25

6.00 6.00

12.00

6.00

12.00

R5.00

R2.50

4.002.00

11.31°

R5.00

R2.50

3.722.28

12.00

0.22 7.44 1.00 1.81 1.53

4.00

0.20

18.6

0

0.20

3.72

6.006.00

2.31

2.00 4.00

1.70

8.20

11.4

0

11.4

018

.60

2.00

7.20

11.31°

6.00

15.1

9

0.20

6.20

0.21

R9.24

R10.88

10.67

9.49

16.4

7

15.1

2

12.00

30.56

30.9

6

18.9

7

11.99 9.49

16.4

7

2.50

2.50

4.347.66

6.205.80

1.00 1.81 1.53

0.84 1.81 1.28

10.9

9

4.13

16.4

7

9.49

10.67

4.97

0.20

4.09

2.00

0.20

2.55

7.25

0.91

0.20 5.79

2.63

6.80

3.703.

000.

700.

703.

00

3.50

0.50

3.00

4.34

[Fig 4] Desarrollo de la planta en pasos sucesivos. E = 1:400

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULOS BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI[O]LOGICS

[ 35 ]

Page 36: Rhinoceros Algorithmic Design Manual

5.00 6.40 3.60 10.00 5.00

11.40 3.60 15.004.

751.

25

6.00

6.00

12.0

0

6.00

12.0

0

R5.

00

R2.

50

4.00

2.00

11.3

R5.

00

R2.

50

3.72

2.28

12.0

0

0.22

7.44

1.00

1.81

1.53

4.00 0.20

18.60

0.20

3.72

6.00

6.00

2.31

2.00

4.00

1.70

8.20

11.40

11.4018.60

2.00

7.20 11.3

6.00

15.19

0.20

[Fig 5] Planta baja, geometría base y muros. E = 1:200

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULOS BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI [O] LOGICS

[ 36 ]

Page 37: Rhinoceros Algorithmic Design Manual

6.20

0.21

R9.

24

R10

.88

10.67

9.49

16.47

15.12

12.0

0

30.56

30.96

18.97

11.99

9.49

16.47

2.50

2.50

4.34

7.66

6.20

5.80

1.00

1.81

1.53

0.84

1.81

1.28

10.99

4.13

16.47

9.49

10.67

4.97 0.20

4.09

2.00

0.20

2.55

7.25

0.91

0.20

5.79

2.63

6.80

3.70

3.00 0.70 0.703.00

3.50 0.503.00

4.34

[Fig 6] Planta alta, geometría base y muros. E = 1:200

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULOS BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI[O]LOGICS

[ 37 ]

Page 38: Rhinoceros Algorithmic Design Manual

4. Vidrios Los vidrios, a efectos de diseño tridimensional, podemos expresarlos de manera abstracta mediante una única línea, que posteriormente extruiremos para obtener el paño de vidrio. Dibuja las líneas en la capa “2DGlass”.

En este caso, nos es suficiente con líneas abiertas, que haremos muy sencillamente con cualquiera de las herramientas que tenemos a nuestra disposición y que ya hemos empleado en numerosas ocasiones. 5. Planta alta Una vez finalizada la planta baja, podemos proceder al dibujo de la planta alta. El procedimiento es prácticamente el mismo que el que hemos seguido para la palnta baja, por lo que no tiene mucha dificultad. De hecho, la única dificultad que podemos encontrar estriba en la necesidad de dibujar en un plano de trabajo horizontal situado a 3.70 metros de altura con respecto al plano de trabajo “World”. Para situar nuestro plano a dicha altura, es suficiente con mover el actual, es decir, definir un nuevo punto origen. Para ello, crea un punto a esa altura (es suficiente mover verticalmente uno previamente existente). Una vez tengas creado dicho punto, usa la herramienta “Definir Origen de Plano C” para cambiar el origen al punto deseado.

Ahora, procede de la misma manera que anteriormente para crear la planta alta. Para dibujar siempre en el nuevo CPla-ne, activa la opción “Proyectar”. De esta manera proyectarás el cursor al plano de trabajo actual, y podrás dibujar en el plano sin temor a equivocarte.

Para volver al plano de trabajo anterior, simplemente usa el comando “Plano de Trabajo Previo”.

[Fig 7 y 8] Vista de las lineas base desarrolladas hasta el momento, selección de objetos por capa.

6. Escalera Al igual que en el ejercicio anterior, para dibujar la escalera partiremos del dibujo en planta que hemos realizado con anterioridad. Es importante respetar el hueco de escalera a la hora de dibujar el forjado de la planta alta, y que definiremos con la misma huella que el total de la escalera en planta.

Dibujaremos la escalera en la capa correspondiente.

7. Creación de superficies Crear superficies sencillas en Rhinoceros es sencillo. Para este proyecto en particular, podemos generar todas las su-perficies empleando el mismo comando “extruir”, y que para curvas planas cerradas permite generar sólidos. Para usar el comando, sencillamente selecciona todas las curvas de la misma capa que vayan a tener la misma altura de extrusión y ve a “Sólido>Extruir curva plana cerrada”.

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULOS BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI [O] LOGICS

[ 38 ]

Page 39: Rhinoceros Algorithmic Design Manual

Crea cada uno de los elementos en su capa correspondiente, de manera que tengas un modelo ordenado. Esto no solamente es conveniente a efectos de organización, será imprescindible para poder asignar materiales por capa cuando pretendamos crear visualizaciones de nuestro modelo.

Puedes seleccionar todos los elementos [objetos] de una capa haciendo clic con el botón derecho sobre el nombre de la capa, y seleccionando la opción “selecionar objetos” del menú contextual desplegable, tal como se muestra en la figura 7. Cuando termines, deberías tener un modelo semejante al que se ve en la figura 9.

[Fig 9] Extrusión de las plantas [primer plano] y modelo acabado [fondo]

8. Obtención de información bidimensional a partir del modelo Vamos a aprender a utilizar las herramientas más sencillas para la creación de secciones y plantas a partir de modelos tridimensionales. Como recordatorio, diremos de nuevo que es suficiente con dominar la herramienta “Sección” y la herra-mienta “Contorno” para crear secciones independientes o conjuntos de las mismas, en cualquier dirección. Así pues, cual-quiera de las dos nos vale para hacer plantas y secciones, en función del plano de trabajo que seleccionemos en cada caso. Por ejemplo, para hacer una planta, tendremos cuidado de trabajar en una vista cuyo plano de trabajo sea vertical [la frontal, y derecha lo son]. Por el contrario, para hacer una sección, procuraremos definirla en una vista cuyo plano de trabajo sea horizontal, por lo que generalmente usaremos “Perspectiva” o “Superior”.

En el módulo medio y avanzado aprenderemos a hacer rutinas para automatizar la organización de planos, así como mareras de automatizar la creación de ciertas geometrías. El método de trabajo es, además, relativamente sencillo, dado que exportaremos los planos recién creados a AutoCAD mediante el comando de Rhino. Esto nos permitirá trabajar con dichas plantas y secciones de la manera tradicional, si es así como pretendemos hacerlo.

a. Secciones Primero abre el archivo correspondiente al ejercicio. Es un archivo que contiene una serie de viviendas unifamiliares y, aunque no esté terminado, nos vale a modo de ejemplo para realizar este ejercicio. Veremos además cómo detectar fallos de geometría a partir de las secciones y plantas del edificio, así como las opciones que debemos seleccionar para mejorar nuestra experiencia a la hora de crear y exportar plantas y secciones.

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULOS BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI[O]LOGICS

[ 39 ]

Page 40: Rhinoceros Algorithmic Design Manual

Desgraciadamente, Rhinoceros no incorpora un sistema de “Layout” u organización de planos automático, por lo que deberemos ser nosotros quienes, una vez obtenidos éstos, los exportemos y gestionemos de la mejor manera posible. Es muy recomendable agrupar todos los objetos de las secciones a la hora de trabajar con ellos, para facilitar nuestra selección. Recuerda que esto no significa que se constituyan en un objeto único, y que no son bloques, sencillamente un grupo de varios objetos.

Crea una capa que se llame “2DPlans”, con dos subcapas, “SectionLines” y “PlanLines”, que contendrán las líneas base para la creación de planos y secciones, si bien no contendrán la geometría propia de los mismos. Con la capa “SectionLines” activada, crea las líneas por donde se efectuarán las secciones en el plano de trabajo horizontal (esto es, en una vista de “Pers-pectiva” o “Superior”). Una vez las tengas terminadas, ejecuta el comando sección con las siguiente opciones:

“Comando: SecciónSeleccione los objetos para las secciones ( AsignarCapasPor=ObjetoDeEntrada UnirCurvas=PorPolisuperficie AgruparObjetosPorPlanoDeSección=Sí )”

Estas son las opciones más comodas a la hora de manejar los nuevos objetos creados, ya que creará polilíneas por cada objeto de sección, y agrupará todas en un único grupo por plano de sección. Usa las mismas opciones para las plantas. Verás que hay líneas que no forman polígonos cerrados, éstas corresponden a superficies individuales o a polisuperficies abiertas. En principio, esto no debe ser problema, sin embargo, puede ser significativo de error en la geometría base si tratamos de muros, forjados, columnas, u otros elementos que deban ser considerados como sólidos cerrados. b. Plantas Para las plantas, todas las consideraciones de las secciones son válidas. la única diferencia a la hora de aplicar el co-mando estriba en que estamos haciendo secciones horizontales, como se ha dicho repetidamente. Es recomendable dibujar rectángulos que contengan el modelo a la altura que vamos a efectuar la sección para la planta.

Así pues, en la capa “PlanLines”, dibuja un rectángulo suficientemente grande como para abarcar todo el modelo [este es un paso no obligatorio, que sirve como guía para el diseñador]. Copia este rectángulo verticalmente tantas veces como desees en las alturas correspondientes a las secciones. Una vez hecho esto, puedes proceder a efectuar las secciones, utilizan-do una vista paralela y los rectángulos como guía.

Consejo: es posible que quieras mantener la asociatividad de la geometría a la sección. Para hacer esto, crea superfi-cies planas en tus rectángulos, e interseca éstas con los objetos que desees. Siempre que hayas utilizado el historial, dichas secciones cambiarán con la geometría origen, lo que puede ser útil si el proyecto no está finalizado. Sin embargo, verás que si seleccionas todos los objetos e intentas intersecar éstos con tus planos, Rhinoceros calculará las intersecciones entre cada uno de los objetos, por lo que puede ser algo incómodo seguir este método.

c. Plantas o secciones a intervalos iguales Por último, es posible que quieras hacer secciones a intervalos iguales, bien para hallar plantas de un edificio en altura (rascacielos), bien para cualificar una serie de edificaciones que se desarrollen horizontalmente, como es el caso del dibujo que se trata aquí. Para ello, emplearemos el comando “Contorno”, que crea líneas de contorno a intervalos iguales y perpendiculares a una dirección determinada. Daremos una dirección vertical para plantas, y la que parezca conveniente para secciones. Así pues, crea una línea paralela al eje X, desde el punto que quieras contar como base para los intervalos. La longitud de la línea no importa. Verás que el comando solicita: · “Punto base”: primer punto de la dirección. · “Dirección”: un punto que defina, junto al punto base, la dirección perpendicular a los planos de sección. · “Distancia”: la distancia a la que se realizarán las secciones, comenzando a contar desde el punto base.

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULOS BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI [O] LOGICS

[ 40 ]

Page 41: Rhinoceros Algorithmic Design Manual

[Fig 10] Secciones superpuestas sobre el modelo

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULOS BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI[O]LOGICS

[ 41 ]

Page 42: Rhinoceros Algorithmic Design Manual

VISUALIZACIÓN BÁSICA CON VRAY

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULO BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI [O] LOGICS

[ 42 ]

Page 43: Rhinoceros Algorithmic Design Manual

[ 43 ]

Page 44: Rhinoceros Algorithmic Design Manual

I. VISUALIZACIÓN, RENDERIZADO CON VRAY El renderizado permite mostrar un modelo como si fuera una foto. Rhino incluye un muy simple motor de renderizado no fotorralístico, dado que carece de propiedades físicas y de emisión de luz. Asimismo, no dispone de iluminación global ni calcula emisión y rebote de rayos en la escena. Además el editor de materiales básicos de rhinoceros es muy limitado, puesto que dispone únicamente de las siguientes opciones: - Color, luces, proyección de sombras y antialias. - Texturas simples - Transparencia y otros acabados - Renderizado de líneas e isolíneas. Para acceder al renderizado: Menú Estandar>Menú Renderizar

1. Menu de Renderizado Rhino En menu Renderizado>Renderizador actual>Renderizado de Rhino Las opciones de renderizado, así como las animaciones, están disponibles independientemente del motor de renderi-zado seleccionado.

[Fig 1. Menu de renderizado]

- Propiedades de renderizado · Resolución · Antialias · Luz frontal y luz de fondo: controlan la iluminación del modelo · Miscelánea: selecciona qué objetos se renderizan. Solamente puede asignarse materiales a objetos tridimen-sionales sólidos, superficies o polisuperficies.

[Fig 2. Propiedades de renderizado]

RENDER...PROPIEDADES DEL RENDERIZADO

CONFIGURAR ANIMACIÓN...

PREVISUALIZAR ANIMACIÓN...

GRABAR ANIMACIÓN...

PREVISUALIZAR RENDERIZADO

CONFIGURAR RENDERIZADO

CONFIGURAR MALLA DE RENDERIZADOEXTRAER MALLA DE RENDERIZADO

GUARDAR IMAGEN DE RENDERIZADO

HERRAMIENTAS DE ANIMACIÓN...

ESTUDIO DE ANIMACIÓN SOLAR DE UN DÍAESTUDIO DE ANIMACIÓN SOLAR ESTACIONAL

ANIMACIÓN DE VISTA AÉREA

ANIMACIÓN DE TRAYECTORIA

ANIMACIÓN DE PLANO GIRATORIO A 360º

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULOS BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI [O] LOGICS

[ 44 ]

Page 45: Rhinoceros Algorithmic Design Manual

- Herramientas de animación y estudios de soleamiento · Animación de soleamiento: se define mediante localización (longitud, latitud), ángulo del modelo respecto al norte (en caso de que esté el modelo girado), día y horas de animación (en caso de ser estacional día y hora durante el año), y opciones de guardado (tipo de archivo, vista, nombre y tipo de renderizado) · Animación con recorrido: selecciona recorrido de cámara y recorrido de objetivo mediante dos curvas.

[Fig 3. Vistas de renderizado en pasos sucesivos]

2. Asignación de materiales y luces - Los materiales y luces se pueden asignar independientemente del motor de renderizado. El editor de materiales por defecto aplica materiales “Básicos”, mientras que si se usa un Plug-In, puede asignarse “por Plug-In”. - Para asignar material a una capa, ve a la descripción de la misma en la barra de capas, y haz clic sobre el icono circular. Esto abrirá el menú de asignación de materiales. Las capas con materiales asignados mostrarán el icono de material con un filete negro. - Luces: menú Estandar>Luces. Los principales tipos de luces son: . Puntual u omnilight (emite rayos de luz en todas las direcciones). . Direccional: luz de rayos paralelos a un vector, la luz se emitirá independientemente de dónde se coloque la luz en el modelo. . Foco: luz que emite rayos concéntricos desde un punto de origen. . Luz rectangular: emite rayos perpendiculares al plano que la define. . Lineal: emite luz a lo largo de una recta.

REN

DER

BA

SE S

IN A

SIG

NAC

IÓN

DE

MAT

ERIA

LES

NI L

UCE

S

REN

DER

BA

SE, M

ATER

IALE

S Y

LUZ

DIR

ECCI

ON

AL

MATERIAL CON MAPEADO TRANSPARENTE

MATERIAL CON BRILLO

REN

DER

BA

SE, L

UZ

AM

BIEN

TAL

CAM

BIA

DA

DE

COLO

R

REN

DER

BA

SE, F

ON

DO

CA

MBI

AD

O D

E CO

LOR

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULOS BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI[O]LOGICS

[ 45 ]

Page 46: Rhinoceros Algorithmic Design Manual

- Las propiedades de la luz pueden editarse bien mediante el panel de propiedades, seleccionando la luz y en la pesta-ña “luz”, bien mediante “Editar propiedades de luz” en el menú “Luces”. · Activar/desactivar: calcular o no los rayos de luz emitidos por la fuente seleccionada. · Intensidad: ajusta la intensidad de los rayos, así como la de las sombras · Color: ajusta el color de la iluminación. - Como norma general, deberá evitarse tener demasiadas luces en el modelo, puesto que ésto podría disminuir el ren-dimiento del mismo, así como prolongar el tiempo de cálculo innecesariamente.

[Fig 4. Menu de asignación de materiales y propiedades de luz]

- Mapeados en materiales: proyectan sobre la geometría del objeto los píxeles de la imagen seleccionada como mapa. Existen diferentes mapeados de textura (“Gizmos”), que no trataremos aquí. Estos pueden servir para: · Dar el color base al objeto (mapeado de textura) · Producir transparencias en la geometría sin que ésta tenga que ser modificada o modelada (mapeado de transparencia). · Dotar al objeto de apariencia rugosa (mapeado de relieve)

MENU MATERIALES

EDITOR DE MATERIALES

1PROPIEDADES BASICAS

2TEXTURA DE COLOR

3MAPEADO DE TRANSPARENCIA

(CANAL ALPHA)

4RELIEVE DE TEXTURA (BUMP)

5ENTORNO

PROPIEDADES DE LUZ DIRECCIONAL

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULOS BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI [O] LOGICS

[ 46 ]

Page 47: Rhinoceros Algorithmic Design Manual

3. Menu de VRay En menu Renderizado>Renderizador actual>VRay para Rhino. VRay e s un motor de renderizado con Iluminaciòn Global (Global Ilumination, GI), lo que permite la rápida puesta a punto de escenas sin necesidad de muchos retoques o configuración de luces. VRay calcula la iluminación del modelo me-diante rebotes de rayos de luz, por lo que, en general, toda escena debe estar iluminada. - El menu de VRay da acceso a: · Opciones generales · Editor de materiales · Visualización de la pantalla de renderizado · Configuración de luz e iluminación mediante simulación de posicionamiento solar · Creación de un plano infinito

[Fig 5. Barra de herramientas de VRay para Rhino]

4. Opciones generales VRay

[Fig 6. Principales pestañas de las opciones generales en VRay]

1MATERIALES

RENDERLUCES

2CONFIGURACIÓN

DE RAYOS Y CÁLCULO

3OPCIONES DE OUTPUT

TAMAÑOARCHIVO

ANIMACIÓN

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULOS BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI[O]LOGICS

[ 47 ]

Page 48: Rhinoceros Algorithmic Design Manual

Las principales opciones se encuentran en: - Global Switches: · En “Materials”, la opción “Override materials” permite acondicionar la luz general de una escena, sustituyendo los materiales asignados a los objetos por el seleccionado. · En “Render”, activa “Low thread priority”, si quieres que el ordenador trabaje en otros procesos mientras ren-derizas. Renderizar, como hemos dicho, requiere muchos cálculos y un procesador muy potente. · En “Lighting”, “Show GI only” desactiva momentaneamente las luces del modelo, permitiendo ver sólamente la iluminación global. Esto es especialmente útil en iluminación de interiores, donde los detalles de esquinas son de especial relevancia. Las “Default Lights” son internas de VRay, y no pueden manejarse por el usuario. · El resto de opciones podemos dejarlas por el momento - Output: · Establece las opciones de salida del renderizado: tamaño de vista, preguardar el render en un archivo, o ac-tivar el modo de animación (dejamos esto por el momento). - Opciones de algoritmos de cálculo: · Profundidad y nivel de malla influyen en la densidad del mallado para el renderizado. · “Region Division” divide la pantalla en cuadros del tamaño especificado, lo que influye en la velocidad y pre-cisión del cálculo del render. Así pues, hay tres elementos específicos de VRay que debemos tener en cuenta: - Iluminación indirecta: sencillamente luz que no proviene de una fuente de luz, se refiere generalmente a Iluminación global (GI) y luz rebotada. · GI es sencillamente una cúpula de luz que se emite alrededor de la escena, y facilita enormemente la confi-guración de iluminación. · La luz rebotada permite a VRay crear renders de alta calidad, y es “energía” rebotada de una superficie. - Sol y cielo (Sun and sky): es un modelo físico para la simulación de los efectos de sol y cielo sobre el modelo. General-mente, éstos serán muy brillantes, lo que es una buena configuración para renders de exteriores. Por ello, debemos conocer las opciones de cámara (especialmente los de la cámara física) para corregir la exposición. - Cámara física (Physical Camera): está modelada según una cámara real y puede usarse para controlar la exposición de una escena. Una buena exposición significa que la imagen no es demasiado oscura ni está quemada. Esto nos permite la oportunidad de establecer nuestra iluminación como sería en el mundo real, y ajustar la cámara hasta que obtengamos los resultados deseados.

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULOS BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI [O] LOGICS

[ 48 ]

Page 49: Rhinoceros Algorithmic Design Manual

III. EJERCICIOS TUTORIALES Inicialmente es necesario preparar las condiciones de luz del modelo, posteriormente las condiciones de los materiales y su propia caracterización influirán sobre la luz, una vez que los settings alcanzados sean satisfactorios para los materiales. Para ello, bien activaremos la casilla de “sustituir materiales” en VRay, bien asignaremos a todos los objetos un material de color blanco, que nos permita ver y estudiar los efectos de iluminación y sombras.

1. Preparación básica de iluminación global: Irradiance Map y Quasi Monte-Carlo En este ejercicio veremos cómo emplear los principales settings de VRay. Con estas opciones, lograremos un efecto de maqueta sin luces, con iluminación global, y muy rápido.

[Fig 8. Render 1 (override materials), tiempo 5 segundos]

[Fig 9. Render 1b (sin override materials), tiempo 20 segundos][Fig 7. Ajustes básicos, efecto de maqueta, 4 prepasos]

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULOS BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI[O]LOGICS

[ 49 ]

Page 50: Rhinoceros Algorithmic Design Manual

Para ello evitaremos tener materiales asignados en la escena. Si tuviéramos materiales, podremos activar la opción “Override Scene Materials”, en Global Switches. Ajusta VRay de la siguiente manera (activa low thread priority para trabajar en otras tareas simultáneamente): - Global Switches: · Max Depth = 5 · Override Materials activado · Lights desactivado · Default lights desactivado · Show GI only desactivado - Environment (para iluminación global básica): · GI Skylight activado, valor 1, sin mapa · Background activado, valor 1, sin mapa - Irradiance Map (4 prepasos) · Min rate = -3 · Max rate = 0

2. Estudio de luz ambiental Una vez obtenidos los resultados deseados, podemos entender mejor cómo funciona la iluminación global (a partir de ahora GI). GI es básicamente una “cúpula” de luces que enfocan el modelo. El multiplicador (valor) controla la cantidad de luz del mismo (cuanto mayor más brillo), y el mapa el tipo de iluminación. Por ahora, dejamos GI sin mapa (letra m minúscula). - Cambia sólamente el multiplicador de GI a 2 y renderiza. El resultado debe ser notablemente más brillante, casi que-mado. - Cambia ahora el brillo del material de VRay a un valor de la mitad. El resultado debe ser el mismo que incialmente. Esto explica la relación de brillo con luces y materiales. - Cambia ambos a su valor inicial. El resultado deber ser el mismo.

[Fig 11. GI =2, Brillo sin cambiar]

[Fig 12. GI=2, Brillo = 127]

[Fig 13. GI=1, Brillo = 255][Fig 10. Ajustes básicos, efecto de maqueta, 4 prepasos]

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULOS BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI [O] LOGICS

[ 50 ]

Page 51: Rhinoceros Algorithmic Design Manual

3. Ajuste inicial de luz ambiental: comprobaciones Para comprobar que la luz ambiental en exteriores es correcta (es decir, que incialmente tiene un carácter neutro), podemos crear un material sencillo con un color reconocible, asignarlo a objetos de la escena, y ver si dichos colores son semjantes. Si al renderizar, los objetos tienen un color muy parecido al “difuso” que hemos asignado, estamos en buena dis-posición de comenzar. - Asegúrate que los valores de skylight son los siguientes: R255, G255, B255, Brillo 255 - Crea un nuevo material “Default” y llámalo “SimpleRed” - Asignale los siguientes valores: R191, G19, B19 - Asigna el material a todos los objetos a renderizar excepto al suelo - Crea otro material “Default” y llámalo “SimpleWhite” - Asignale los siguientes valores: R230, G230, B230 - Asigna el material al suelo - Renderiza y compara el valor obtenido en el modelo y el color original - Cambia ahora “SimpleRed” con los siguientes valores: R255, G100, B100 - Renderiza de nuevo y compara el valor obtenido en el modelo y el color nuevo

[Fig 14. Valores para el control de la iluminación]

[Fig 15. Comparación de los resultados obtenidos para ambos colores. Observamos la semejanza entre el color seleccionado y el renderizado ]

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULOS BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI[O]LOGICS

[ 51 ]

Page 52: Rhinoceros Algorithmic Design Manual

8. Materiales El editor de materiales consta de (i) visor de texturas, (ii) lista de materiales, y (iii) visor de capas del material. Los materiales de VRay se describen por capas, como se ha mostrado anteriormente. Las capas se superponen a modo de filtros semitransparentes, de manera que los efectos de las mismas tienen carácter acumulativo. Las capas son las siguientes: - Emisivas: emiten luz - Reflexión: definen cómo el material refleja la luz, así como la intensidad de dicha reflexión. - Difusa: color base del material - Refracción: para objetos que refractan luz, vidrios y materiales traslúcidos. Además, hay un segundo nivel de control del material, donde se incluyen los “mapas”, o texturas que modifican el as-pecto del material sobre aquél conseguido a través de las distintas capas.

8.1 Capas Cada material puede tener tantas capas de cada tipo como se requiera, si bien normalmente no es necesario tener más de una de cada tipo (e incluso menos si los materiales son opacos). Para añadir una capa al material, haz clic con el botón derecho del ratón sobre el tipo de capa que necesites añadir, se-lecciona “añadir capa”. Puedes cambiar el nombre de la capa o eliminarla utilizando el menú contextual que aparece al hacer clic sobre el nombre de la capa con el botón derecho.

[Fig 16. Capas de materiales]

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULOS BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI [O] LOGICS

[ 52 ]

Page 53: Rhinoceros Algorithmic Design Manual

- Difusse layer: capa base. · Color: Asigna bien un color, bien una textura al material. · Transparencia: Asigna transparencia al material, con un valor de 255 a 0 (de blanco a negro, o de opaco a transparente) - Reflection layer: capa que añade reflexión al material. · Por defecto esta capa tiene un mapeado fresnel que añade la cantidad de reflexión del material, basándose en el ángulo de incidencia de la luz y de la cámara respecto al objeto. Si este mapeado se elimina, entonces la reflexión es constante en toda la superficie del material. Como el color de la reflexión es blanco, entonces el material completo es reflec-tante, lo que puede ser un buen ajuste para espejos o materiales cromados. · Mapeados fresnel: si se selecciona “ninguno”, entonces obtenemos, como hemos dicho, la reflexión de un material cromado o espejo. Veamos ahora más específicamente el funcionamiento del mapeado fresnel. Cuanto mayor sea el valor del Fresnel IOR, mayor reflexión tendrá el material, permitiendo texturas parecidas a metal. Los objetos reflejan también el en-torno, por lo que es posible que aparezcan manchas de color negro o blanco, en función del color seleccionado en GI.

COLOR DE FONDO(re�exión total del material)

[Fig 17. Capa de reflexión sin mapeado: material cromo/espejo]

[Fig 18. Material cromado, no reflection map]

[Fig 20. Highlight Glossiness 0.75, Reflection Glossiness 0.9 ]

[Fig 19. Material con reflexión, Fresnel IOR 1.55]

[Fig 21. Escena sin planos de contorno, esfera refleja fondo]

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULOS BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI[O]LOGICS

[ 53 ]

Page 54: Rhinoceros Algorithmic Design Manual

Las reflexiones Fresnel son un fenómeno natural que describe la apariencia reflectiva de un material respecto del punto de vista del observador. Como una ventana de vidrio, hay materiales reflectantes que necesitan de un amplio ángulo entre la normal de la superficie y el observador para comenzar a reflejar. Así, una ventana vista de frente no refleja, mientras que vista casi en paralelo, refleja completamente. Un índice IOR alto significa que el ángulo entre el observador y la superficie es bajo, y que el material reflejará pronto. Un índice IOR bajo implica que dicho ángulo debe ser mayor. Lo más recomendable es tener un índice IOR igual al índice del material real en la naturaleza. · Otros parámetros: Reflection glossiness permite crear un aspecto mate en el material, de manera que cuanto menor sea el índice, menor será la reflexión, y, por tanto, mayor su carácter mate. El valor por defecto es 1, lo que significa que las reflexiones son perfectamente nítidas. Un valor 0 equivaldría a no tener reflexión ninguna, igual a no tener una capa de reflexión. General-mente, los valores más apropiados oscilan entre 0.6 y 1. Reflection filter es un color aplicado a las reflexiones, cuya magnitud dependerá de la fuerza de las propias reflexiones en la superficie. - Refraction layer: capa que añade refracción a un material traslúcido o transparente.

· Para crear refracciones, añade una capa de refracción a tu material. · Ajusta el Fog Color para que sea igual al del difuso, si el material es 100% transparente, el Fog Color definirá el color final del mismo. · Ajusta la intensidad del color mediante el multiplicador de Fog Color, generalmente entre 0.1 y 0.5. · Activa “Affect Shadows” para crear sombras más realistas.

- Emissive layer: capa que añade emisión de luz a un material. · Color emisivo: el color de la luz que va a emitir el objeto. · Color de transparencia: Permitirá ver el color de las capas inferiores, si la capa no es 100% opaca. · Intensidad: cuanto más alta, más cerca estará el objeto de ser renderizado blanco. · Prueba los siguientes valores y ajusta la intensidad: Emissive color R200, G161, B82 Emissive transparency R100, G100, B100 Diffuse color R155, G155, B155 (gris) Diffuse transparency R0, G0, B0 (opaco)

[Fig 22. Material transparente] [Fig 23. Transparente, Fog R125,G37,B37, multiplicador 0.1]

[Fig 24. Transparente, glossiness 0.75, no affect shadows] [Fig 25. Transparente, glossiness 075, affect shadows]

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULOS BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI [O] LOGICS

[ 54 ]

Page 55: Rhinoceros Algorithmic Design Manual

8.2 Crear materiales de arquitectura - Hormigón:

· Tendrá una capa difusa y mapeados para influenciar las texturas.· Diffuse: busca una imagen de mapa de bits para la textura del hormigón, y utilízala como diffuse map. La transparencia del material en esta capa es 0, así que no es necesario modificar el valor por defecto.· Bump Map: en photoshop, abre la textura que has utilizado para el hormigón. Modifícala hasta que sea en escala de grises o blanco y negro. Guarda la textura con el mismo nombre, pero empleando el sufijo “_bump”, por ejemplo, u otro identificador a conveniencia. Aplica la textura con los mismos parámetros que hayas utili-zado en la textura de base, pero con menor intensidad, por ejemplo 0.15.· Ajusta la luz hasta conseguir el efecto y brillos deseados.

- Madera: · Diffuse: busca una imagen de mapa de bits para la textura de la madera, teniendo en cuenta que los bordes no deben tener discontinuidades. Trabaja la textura en photoshop si es necesario. Igual que para el hormigón, la transparencia para esta capa es 0.· Bump Map: en photoshop, abre la textura que has utilizado para la madera. Modifícala hasta que sea en esca-la de grises o blanco y negro, y marque las juntas de la tarima. Esto le dará un aspecto más realista. De nuevo, guarda la textura con el mismo nombre, pero empleando el sufijo “_bump”, por ejemplo, u otro identificador a conveniencia. Procede a modificar la intensidad igual que para el hormigón.· Reflexión: es posible que quieras crear un acabado de barniz. Para ello, añade una capa de reflexión, y ajusta su IOR, y “Glossiness”. Los valores del ejemplo son: Highlight y Reflection Glossiness 0.7, IOR 1.125.

- Vidrio transparente: · Diffuse: La transparencia para esta capa es 100.· Reflexión: ajusta el mapa de reflexión a Fresnel, con valor 1.55, que es el valor real para vidrio. Puedes además jugar con la reflexión del material y su brillo mediante su “highlight glossiness” y su “reflection glossines”. Cam-bia Highlight glossiness a un valor de 0.87 para obtener el efecto del ejemplo.· Refracción: para un material tan transparente, no usaremos refracción.· Opciones: asegúrate que el material es “double sided” (esto aplica a todos los transparentes) y que no tiene reflexiones en su cara trasera (“backface reflections” desactivado) para evitar efectos de brillo extraños.· Mapas: no usaremos ninguno.

- Vidrio translúcido: · Diffuse: La transparencia para esta capa es 100.· Reflexión: ajusta el mapa de reflexión a Fresnel, con valor 1.55, que es el valor real para vidrio. Puedes ade-más jugar con la reflexión del material y su brillo mediante su “highlight glossiness” y su “reflection glossines”. Cambia Highlight glossiness a un valor de 0.8 para obtener el efecto del ejemplo, que es ligeramente “mate.”· Refracción: añade una capa de refracción. Ajusta el valor de brillo “Glossiness” por debajo de 1, por ejemplo 90.8 ó 0.75. Cambia el IOR a 1.55, y el fogColor al deseado. Un valor alto del Fog Multiplier hará que el material sea más opaco. En función del color, este efecto también podrá cambiar.· Opciones: asegúrate que el material es “double sided”.· Mapas: no usaremos ninguno.

[Fig 26. Intensidades 1, 0.5] [Fig 27. Intensidad 3,0.5] [Fig 28. Intensidad 3,1]

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULOS BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI[O]LOGICS

[ 55 ]

Page 56: Rhinoceros Algorithmic Design Manual

[Fig 29. Textura de hormigón]

[Fig 30. Textura de madera con brillo satinado de barniz]

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULOS BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI [O] LOGICS

[ 56 ]

Page 57: Rhinoceros Algorithmic Design Manual

[Fig 31. Textura de vidrio transparente con una luz direccional añadida al modelo]

[Fig 32.Textura de vidrio translúcido con una luz direccional añadida al modelo]

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULOS BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI[O]LOGICS

[ 57 ]

Page 58: Rhinoceros Algorithmic Design Manual

MODELADO AVANZADO EN 3DAyudas: bloques, worksessions, sectionTools

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULO BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI [O] LOGICS

[ 58 ]

Page 59: Rhinoceros Algorithmic Design Manual

[ 59 ]

Page 60: Rhinoceros Algorithmic Design Manual

I. NOCIONES BÁSICAS En Rhinoceros v4 las ayudas al modelado son relativamente rudimentarias. Tanto los bloques como las sesiones de trabajo [worksessions, el equivalente a referencias externas de AutoCAD] funcionan por medio de vinculación, por lo que no ofrecen demasiadas diferencias. Además, el programa no permite por defecto la edición de bloques “in situ”, aunque sí existe una extensión que permite al usuario esta funcionalidad. Esta extensión ha sido mejorada sustancialmente en Rhino v5. Otras ayudas permiten la edición de secciones automáticas, mediante una extensión denominada “Section Tools”, que ya está incluida como herramienta per sé en Rhinoceros v.5. II. DESCARGA DE HERRAMIENTAS Y EXTENSIONES Puedes decargar las extensiones gratuitas directamente desde la página de Rhino Labs de McNeel http://wiki.mcneel.com/labs/home. Verás que la mayoría de ellas están ya incluidas en la WIP de Rhinoceros 5.0. Para estos ejemplos necesitarás las extensiones “Section Tools” y “Block Editor”. Descarga el contenido en una carpeta temporal, y extráelo. Verás que los ar-chivos comprimidos incluyes archivos *rhp [rhino plugin] y *.tb [rhino toolbar]. Deberás copiar los archivos *rhp en la carpeta de instlación de rhino, dentro de la carpeta “Plugins”; mientras que las toolbars asociadas a dichos plugins deberán estar en la carpeta donde tengas guardadas las barras de herramientas. Para cargar el plugin ve a Herramientas>Opciones>Plugin>Cargar... y selecciona el *rhp correspondiente. Para acceder a los comandos del plugin, incluye la barra de tareas en la que uses por defecto. Accede a ella mediante Herramientas>Opciones de barras de herramientas.

1. Edición de bloques a. Por defecto Como hemos dicho la edición de bloques se hace mediante archivos referenciados. La ventaja que ofrece el trabajar con bloques es la posibilidad de cambiar o actualizar todas las instancias del bloque de forma automática.

Las distintas opciones incluyen: - Ver propiedades de bloque - Exportar bloque: exportar bloque a archivo. Elegir el tipo de vínculo: · vinculado · vinculado y embebido · embebido

[Fig 1. Diálogo del gestor de bloques - blockmanager]

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULOS BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI [O] LOGICS

[ 60 ]

Page 61: Rhinoceros Algorithmic Design Manual

- Eliminar: eliminar bloque del modelo. - Actualizar: actualizar todos los bloques del modelo de acuerdo a los cambios en el archivo original - Utilizado por: muestra si el bloque está anidado en alguna definición de bloque - Recuento: muestra el número de instancias del bloque en el modelo actual b. Con herramienta EditBlock o InPlaceBlockEdit Esta herramienta permite la edición de bloques inSitu, por lo que no es necesario guardar bloques en archivos independientes. Una vez instalado el plugin, y, accediendo mediante la barra de herramientas, puedes entrar en el modo de edición, lo que permite añadir o sustraer objetos del bloque, así como modificarlo de diversas maneras. Una vez hayas termi-nado los cambios, puedes confirmar [aceptar] o cancelar para descartarlos.

La herramienta BlockEdit para Rhinoceros v4 no funciona con bloques que hayan sido escalados de manera no uniforme.

2. Sesiones de trabajo - worksessions o referencias externas Las worksessions son listas de archivos independientes que el usuario puede visualizar en su modelo, mediante un sencillo sistema de vínculos. El archivo de worksession debe guardarse también como *3dm si se quiere modelar en él. El conjunto de archivos se guardará en un archivo tipo *rws. La sesión de trabajo es, en pocas palabras, un gestor de datos asociados.

En este sentido, las sesiones de trabajo funcionan como referencias externas, que pueden ocultarse o mostrarse, inde-pendientemente de su vinculación. Las opciones principales de los datos asociados son: 1. Asociar... : asociar archivos de otros modelos al actual. Se ven las capas del original en gris. 2. Desasociar: desvincular el archivo seleccionado. 3. Activar: mostrar el archivo seleccionado. 4. Actualizar todos 5. Información de bloqueo: muestra si un archivo está bloqueado [en uso] por algún usuario Las opciones de las sesiones son las siguientes: 1. Abrir: abre una sesión de trabajo 2. Guardar: guarda una sesión de trabajo 3. Guardar como: guarda la sesión actual con otro nombre

[Fig 2. Workflow de edición de bloque in situ]

[Fig 3. Menú de edición de sesión de trabajo]

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULOS BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI[O]LOGICS

[ 61 ]

Page 62: Rhinoceros Algorithmic Design Manual

3. Herramientas de sección- section tools Las herramientas de sección permiten automatizar la creación de planos bidimensionales, tanto plantas como seccio-nes, así como modificarlas de manera dinámica. Así pues, SectionTools permite añadir objetos a secciones, modificar los ob-jetos ya existentes, y actualiza el/los corte/s automáticamente. Asimismo, ofrece una variedad de visualizaciones de sección, y herramientas de vistas para facilitar la alineación de las mismas al plano de corte.

Los comandos principales de la herramienta de secciones son: - Crear única sección por dos puntos

- Crear array de secciones a intervalos iguales y a partir de un punto base. Este comando incluye una serie de opciones:

Pick base point <0.00,0.00,0.00> ( Dir=X_Axis Replace=Yes Name=Sec2 NumOfSections=10 Spacing=1 Flip=Yes Reverse=No BothSides=No SolidMode=Hatch HPattern=Trama1 HRotation=0 HScale=1 AssignAttributes=ByObject ): · dirección por defecto: eje X, eje Y, o introducir por usuario · reemplazar secciones existentes · prefijo del nombre de las secciones para su numeración automática · número de secciones · espaciado entre secciones · invertir dirección de sección · revertir · ambos lados · modo sólido [tipo de representación si se intersectan sólidos]. Puede ser ninguno, sombreado, sóli do, o ambos. · HPattern, HRotation, HScale [si modo sólido es sombreado, tipo de sombreado, rotación y escala] · asignación de atributos: por capa o por objeto · etiquetas: controla si las líneas de sección y los objetos de las secciones están etiquetados. - Cargar secciones de archivo - Mover sección: mediante selección en el menú correspondiente. - Actualizar secciones: actualiza las secciones del modelo tanto en 3D como en layout 2D. - Crear layout de sección: coloca la sección en 2D para su posterior exportación a otros programas.

Crear sección

Layout de secciones

Vistas de secciones

CPlanes asociados

Ediciónde secciones

Creación y edición de secciones

Crear array de seccionesCargar secciones de archivo

Ver seccionesLimpiar vistas de secciones/

limpiar una vista

Imprimir visualización

Ajustar vista a sección

Crear 2d de la sección

Ajustar plano de trabajo a sección

Dirección de secciónEditar sombreado de secciones

Editar lista de objetos de secciones

Actualizar todas las seccionesMover sección

Crear layout de secciónLayout de todas las secciones

Crear informe de secciones

Ejemplos de scripting [secciones variables]

[Fig 4. Menú de herramientas de sección]

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULOS BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI [O] LOGICS

[ 62 ]

Page 63: Rhinoceros Algorithmic Design Manual

- Crear layout de todas las secciones: crea automáticamente un conjunto de secciones en 2D. No se actualiza-rán estas secciones con cambios en el modelo. - Ver secciones: activa las secciones en el modelo en una vista determinada. Dicha visualizavión dependerá del tipo seleccionado, sombreado, sólido, o ambos. El tipo sólido se visualiza mediante superficies. La parte del modelo que quede detrás de la sección se ocultará, y dicha configuración se guardará para reliazar operaciones de dibujo 2D, pero no de renderizado. Es decir, aunque el comando oculta parte del modelo [como lo haría un plano delimitador o clipping plane], el renderizado con VRay muestra de todos modos el modelo completo. El renderizado por defecto de Rhino, así como todos los motores de renderizado que son compatibles con el RDK [Render Development Kit], muestra el modelo seccionado, tal como se ve en las figuras a continuación.

- Ajustar vista a sección: hace coincidir la vista [sea proyección paralela o perspectiva] con la sección, lo que favorece la creación de planos en 2d con alzados. - Ajustar CPlane a sección: exactamente igual que al ajustar la vista, alinea el plano de trabajo a la sección co-rrespondiente. - Crear 2D de la sección crea un dibujo en 2d de la vista, teniendo en cuenta las partes ocultas. Este comando es básico para obtener secciones completas del modelo con proyecciones. El comando, al igual que el estándar de “Make2d”, permite realizar varios tipos de dibujos, incluyendo vista actual, y opciones de 4 vistas. Además, “stMake2D” realiza los dibujos a la misma escala del modelo, siendo responsabilidad del diseñador determinar la exactitud del mismo, así como los ajustes de escala que deban hacerse, si procede.

- Editar lista de objetos de secciones: permite añadir o eliminar objetos de las secciones, que se actualizarán correspondientemente. Esta herramienta es de utilidad a la hora de cambiar el modelo en etapas sucesivas de diseño, o si, en función de qué tipo de presentación o documentación debe presentarse, es necesario incluir elementos no constructivos tales como mobiliario o semejante. - Editar sombreado de secciones activa o desactiva el sombreado en las secciones. - Dirección de sección cambia la dirección de la vista de la sección. - “_CheckNewObjects” busca objetos nuevos para la sección.

[Workflow de herramientas de sección en el modelo NURBS de la nueva sede Arnaiz]

[Fig 6. Resultado del comando crear 2D con la herramienta de gestión de secciones. Proyecto: sede Arnaiz & Partners]

[Fig 5 a. Modelo completo] [Fig 5 b. Realizando la sección] [Fig 5 c. Vista de sección] [Fig 5 d. Render de rhino]

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULOS BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI[O]LOGICS

[ 63 ]

Page 64: Rhinoceros Algorithmic Design Manual

- Ejemplos de scripting: con unos mínimos conceptos de programación podemos crear secciones o conjuntos de secciones en función de nuestras necesidades. Así pues, el código que sigue crea secciones a distintas distancias y en distintas direcciones. Veamos exac-tamente qué hace y cómo lo hace [para más información, lee primero el capítulo dedicado a código y automatización de procesos]. Fíjate que este código lo obtenemos directamente del botón.

Los pasos a seguir se describen a continuación: · Ejecutar el script entre las líneas 3 y 20. La línea 1 manda ejecutar el script ente paréntesis.

· Call Main() en la línea 3 manda ejecutar todo el código que se encuentra entre las líneas 4 y 20, y que perte-necen al mismo bloque de código [todo aquello que está entre “Sub Main()” y “End Sub”]. · En las líneas 5 a 11 declaramos e inicializamos [de nuevo, lee el capítulo dedicado a código] las variables y constantes que vamos a utilizar posteriormente. Las partes de código que siguen los apóstrofes (‘) son comentarios para lectura humana, y el compilador los ignorará. De esta manera sabemos que Num es el número de secciones y spacing se refiere a la distancia entre las mismas. Hemos explicado anteriormente que, a la hora de hacer secciones, el programa requiere un punto base. El punto base tiene unas coordenadas (x,y,z), que, en este caso, se almacenarán en las variables de igual nombre. · Las líneas 12 y 19 marcan el comienzo y el cierre de una estructura de control de flujo. Esto es, una estructura que en este caso, repetirá en bucle todo aquello que esé contenido entre dichas líneas. De esta manera podemos crear varias secciones sin necesidad de escribir tantas líneas como secciones. La variable i cambiará en cada iteración, permi-tiendo a las secciones desplazarse en el espacio de acuerdo a los valores tomados por ésta. - La línea 13 incrementa el valor de “y” para desplazar el punto base de la sección en cada iteración. - arrPt almacena la información de las componentes del punto. - En la línea 15 se escribe la ordenque Rhino deberá ejecutar a continuación: el comando de crear sección con el punto base que acabamos de alamacenar. - La línea 17 ejecuta dicha orden accediento a la línea de comandos directamente - La línea 18 deselecciona todos los objetos para poder comenzar la nueva iteración limpiamente.

Puedes probar a cambiar algunos de los valores numéricos para ver qué ocurre y así tener un conocimiento algo más preciso sobre el modo de actuación del comando.

SectionTools cuenta con otro ejemplo de creación de secciones, en este caso mediante una matriz polar. Deja-remos este ejemplo para tu propio interés por la investigación.

123456789101112131415161718192021

! -_Runscript( Call Main() Sub Main() Dim y, arrPt, i ‘Base point (x,y,z) Const x = 0 y = 2 Const z = 0 Const Num = 10 ‘Number of Sections Const Spacing = 0.5 ‘Spacing between sections For i=0 To Num y = y + i*Spacing arrPt = Array(x,y,z) str = “stCreate _Enter “ & Rhino.Pt2Str(arrPt) & “ _Enter” ‘Call command line Call Rhino.Command( str ) Rhino.UnselectAllObjects() Next End Sub )

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULOS BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI [O] LOGICS

[ 64 ]

Page 65: Rhinoceros Algorithmic Design Manual

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULOS BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI[O]LOGICS

[ 65 ]

Page 66: Rhinoceros Algorithmic Design Manual

MODELADO AVANZADO EN 3DSuperficies y sólidos: “lofting”

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULO BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI [O] LOGICS

[ 66 ]

Page 67: Rhinoceros Algorithmic Design Manual

[ 67 ]

Page 68: Rhinoceros Algorithmic Design Manual

I. MODELADO DE UNA ESCALERA SOBRE UNA SUPERFICIE En módulos previos hemos aprendido a diseñar y modelar escaleras muy simples por medio de técnicas de loft. Nos ha quedado meridianamente claro que Rhinoceros es una herramienta muy potente que permite dibujar y modelar formas complejas, pero no hemos explorado suficientemente su potencial a este nivel. En este tutorial vamos a profundizar en téc-nicas de creación de superficie mediante lofts, así como aprenderemos ciertos comportamientos de superficies, superficies cortadas, y sus puntos de control. II. ABRIENDO EL ARCHIVO El modelo finalizado deberá parecerse al de la figura 1, y es semejante al diseño de Contemporary Architecture Practice para la tienda principal de Reebok en NYC, la llamada “Reebok flagship store”. Verás que hay dos posibles modelos de escale-ra, la figura 1 muestra el modelo sombreado de una tipología híbrida de escalera y asientos, que se adapta orgánicamente a la forma de la superficie. Encontrarás el modelo en el archivo adjunto.

III. TRABAJOS PREVIOS CON LA SUPERFICIE El primer paso es crear una superficie suficientemente grande como para albergar el modelo. Comenzaremos por una superficie de 13*15 unidades [metros, por ejemplo], de la cual extraeremos un pedazo, sobre el cual dibujaremos los escalo-nes.

Reducir super�cie recortada/recortada en borde

[Fig 1. Modelo finalizado. Vista sombreada, visualizaciones renderizadas de dos metodologías distintas]

[Fig 2. Reducir superficie recortada]

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULOS BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI [O] LOGICS

[ 68 ]

Page 69: Rhinoceros Algorithmic Design Manual

Para conseguir una buena superficie base, hemos de reconstruirla primero. Para ello, usa el comando “reconstruir” o “_rebuild”, y asegúrate de tener suficientes puntos de control tanto en U como en V. El grado de la superficie al reconstruirla deberá ser 3 para poder tener perfiles curvos. Una vez hayamos obtenido una superficie satisfactoria, podemos continuar a su reconstrucción con más puntos de control. Aumentar los puntos de control no cambiará la geometría, reducirlos sí.

De la superficie total queremos solamente una parte o parche, donde aplicaremos la nueva geometría. Define la parte que necesites mediante isocurvas en las dos direcciones, usando el comando “extraer isocurva”. Usa estas isocurvas para re-cortar la superficie. En general [y por tanto en este caso] Si enciendes los puntos de control de una superficie recortada, verás que coinciden exactamente con aquéllos de la superficie sin recortar. Usa el comando “_shrinkTrimmedSrf” [shrink trimmed surface ó reducir superficie, ver figura 2]. Para este modelo emplearemos unas 25 curvas en sentido ascendente, por lo que deberemos tener 25 en dicho sentido [en la superficie ya recortada]; recuerda que U y V dependen de cómo se haya creado la curva.

Para recortar la superficie usa el comando “recortar” o “_trim”, éste funciona para superficies exactamante igual que para otro tipo de geometría.

IV. AJUSTE DE LA SUPERFICIE RECORTADA Y CURVAS BASE Una vez recortada y reducida la superficie asegúrate de tener suficiente número de líneas en U y en V como para con-seguir 25 líneas base. Una vez conseguido ésto, extrae las curvas mediante el comando “-ExtractWireframe”. Es posible que tengas que activar la visualizacion de isocurvas. 1. Ordena y modifica las curvas a. Escoge una de cada 5 curvas comenzando por la segunda y cambia el color. Haz lo mismo con la siguiente curva hacia arriba, eligiendo un color distinto. La primera que has escogido marcará el nivel del escalón; deberemos ajustar el resto a la altura de ésta. b. Reconstruye todas las curvas con 13 puntos de control, y con grado 3. Activa los puntos de control de las primeras curvas a las que has cambiado el color, selecciona los 7 puntos interiores, y muévelos sobre la curva inmediatamente ante-

[Fig 3. Superficie recortada - trimmed surface]

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULOS BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI[O]LOGICS

[ 69 ]

Page 70: Rhinoceros Algorithmic Design Manual

rior, manteniendo la altura de los mismos. Activa la caja “proyectar” que encuentras en la barra de estado para desplazar los puntos a su misma altura. Desactiva los puntos de control de estas curvas. Activa los de la curva siguiente en sentido ascendente. Selec-ciona los 5 centrales y superponlos con aquéllos de la curva anterior. Los puntos inmediatamente a la izquierda y la derecha de los 5 puntos centrales son algo más libres, puedes moverlos en vertical hasta tener la misma altura. Haz esto con todas las curvas hasta que termines con el grupo al que has cambiado el color. 2. Finaliza las otras curvas. Perfecto, ya solamente quedan dos curvas por escalón. Esta parte puede ir un poco más rápida, ya que no ne-cesitaremos desplazar los puntos más que en vertical. De nuevo, activa los puntos de control de las curvas [F10] y selecciona, curva por curva, los 5 puntos centrales. Mueve éstos en vertical hasta alcanzar el nivel de los puntos movidos de las otras curvas. Cuando hayas terminado, repite la operación con el último grupo de curvas, puedes desplazar sus puntos cen-trales donde estimes oportuno, siempre teniendo en cuenta que no pueden sobresalir por encima de la plataforma superior. 3. Crea la superficie final. Para crear la superficie final, selecciona todas las curvas en orden y ejecuta el comando “_loft” [superficie de transición]. Veamos ahora sí, las diferentes opciones algo más a fondo: - Tipo de transición · normal · suelta: crea una superficie que no necesariamente para por las curvas que definen la transición

· ajustada: la superficie pasa exactamente por las curvas que definen las transición. · secciones rectas: superficie o polisuperficie que pasa por las curvas que definen la transición. Las isocurvas tendrán segmentos rectos. En este caso verás que los extremos de las superficies no coinci-den con el contorno original, ya que estará segmentado. Es importante tener en cuenta este extremo a la hora de recolocar la escalera en su sitio dentro de la superficie recortada, ya que aparecerán pe-queños espacios entre ellos. · desarrollable: crea una superficie desarrollable. Las superficies que tienen doble curvatura no son desarrollables.

· uniforme

- Transición cerrada: crea una superficie cerrada. Esta opción no es posible para superficies desarrollables. - Igualar tangente: iguala la tangente de la superficie en sus extemos, para crear continuidad con superficies adyancentes. - Reconstruir: simplifica el resultado con el número de puntos de control introducido.

[Fig 4. Diferencias entre las diferentes metodologías de transición; de izquierda a derecha y de arriba a abajo: a. ajustada b. uniforme c. secciones rectas d. suelta e. normal]

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULOS BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI [O] LOGICS

[ 70 ]

Page 71: Rhinoceros Algorithmic Design Manual

4. Combina el modelo Por último, coloca la superficie de la escalera en la superficie original para obtener el modelo completo. Sencillamente desplaza la superficie base a la posición donde tengas la escalera recién creada. Deberás obtener un resultado semejante al de la figura 1.

V. HAZ EL MODELO UN POCO MÁS COMPLEJO En efecto, hemos llegado a un nivel superior de complejidad respecto a anteriores ejemplos. Sin embargo, por muy in-teresante que sea el modelar una escalera directamente sobre la superficie, y aunque nos ofrezca continuidades geométricas de todo tipo, es posible que a nivel de desarrollo arquitectónico sea más deseable poder contar con geometría “construible”.

La figura 5 muestra un tipo de escalera semejante al anterior, pero con geometría que podríamos entender más “cons-truible” o “arquitectónica”. Esta geometría no proviene del ejemplo anterior, sino que ha tenido que diseñarse de nuevo para evitar problemas de lógica interna. Verás que los primeros pasos [la creación de la geometría base] son exactamente iguales que en el ejemplo anterior, por lo que podríamos partir directamente de la geometría de las isocurvas del ejemplo anterior.

1. Construye la geometría base. Si no conservas la geometría de la superficie del ejemplo anterior o estás accediendo directamente a esta parte del ejercicio, sigue las indicaciones del punto III para crear la base de tu geometría.

2. Extrae las isocurvas de la geometría De nuevo, sigue con el proceso que encuentras en el ejercicio previo. Si lo tienes, puedes saltar directamente al siguien-te punto. En este caso, es suficiente con obtener tantas isocurvas como escalones necesites; el ejercicio lo hemos preparado con 12 escalones.

[Fig 5. Modelo avanzado mostrando análisis de geometría por mapa]

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULOS BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI[O]LOGICS

[ 71 ]

Page 72: Rhinoceros Algorithmic Design Manual

3. Prepara las curvas base Copia las isocurvas una cierta distancia hacia abajo en vertical, en el ejemplo son 0,1m. Esto será el espesor del escalón en la zona central de la huella. Es muy recomendable que agrupes las líneas bien dos a dos [esto es, por parejas, la original y la copiada]; bien por originales y finales [esto es, todas las originales en un grupo, y todas las finales por otro].

En todo caso, asegúrate de reconstruir las curvas con grado 3 y al menos 13 puntos de control, si pretendes seguir exactamente el ejemplo. Un número parecido de puntos de control será aceptable, pero influirá decisivamente en el diseño de cada una de las piezas de los escalones. En la figura 6 mostramos las curvas base con los puntos de control numerados, para facilitar el seguimiento del ejercicio.

4. Crea la base para el loft de los escalones Copia las isocurvas una cierta distancia hacia abajo en vertical, en el ejemplo son 0,1m. Esto será el espesor del escalón en la zona central de la huella. Considera la curva original [el la figura 6 en azul] la curva A, y la que has copiado, la curva A’. Las siguienes serán B y B’ respectivamente. Puedes ver en el gráfico que la escalera está modelada con dos únicas curvas, que crean un loft. De esta manera obtenemos una superficie, que podemos extruir horizontalmente para obtener la pisa o huella del escalón.

1ORIGINAL CURVE

COPIED CURVE

23

4

56

7

8

9

10

11

1213

12

34

56

7

8

9

10

11

1213

GEOMETRY BASE LINE 1

GEOMETRY BASE LINE 2

EXTRUSION DIRECTION

LOFTED SURFACE

GEOMETRY BASE LINE 1’

GEOMETRY BASE LINE 2’

[Fig 6. Geometría base con la numeración de los puntos de control]

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULOS BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI [O] LOGICS

[ 72 ]

Page 73: Rhinoceros Algorithmic Design Manual

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULOS BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI[O]LOGICS

[ 73 ]

Page 74: Rhinoceros Algorithmic Design Manual

METODOLOG[U]ÍA EN PROYECTOS COMPLEJOS

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULO BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI [O] LOGICS

[ 74 ]

Page 75: Rhinoceros Algorithmic Design Manual

[ 75 ]

Page 76: Rhinoceros Algorithmic Design Manual

I. DEFINICIÓN DE PROYECTO COMPLEJO Un proyecto complejo puede ser aquél que cumpla cualquiera de los siguientes requisitos: - Que precise más de una persona para sua realización - Que, aunque pueda ser realizado por una persona, tenga una alto nivel de detalle - Que, aun no teniendo un alto nivel de detalle, tenga una complejidad formal o estructural alta, bien sea por su confi-guración formal, bien por cualquier otro tipo de situación o implicación. En cualquiera de los casos anteriores, es posible que necesites repartir el trabajo, para lo que, en Rhinoceros, necesita-rás partir el modelo y contar con una worksession que tenga todos los subarchivos.

Busca siempre partir el modelo de la manera más lógica posible. Aquí propongo una, que puede servir de ejemplo para un proyecto de vivienda en un bloque de manzana, en el cual tenemos varios edificios que repiten de un modo u otro un bloque básico de viviendas con dos o tres dormitorios. Las viviendas se organizan en torno a un núcleo central de escaleras. Este puede ser considerado un caso típico. En este caso, tenemos una posible distribución jerárquica del trabajo: - Trabajo en modelado sobre bloques de ventanas, puertas, mobiliario, que puedan ser accesibles desde TODOS los demás modelos. - Modelado de las plantas de viviendas como bloques que podamos insertar en la siguiente jerarquía de dibujo. Estos se servirán del mobiliario y deberán estar coordinados con él. - Modelado de edificio: será principalmente la coordinación del orden de las viviendas y las zonas comunes. Se procu-rará tratar las zonas comunes como un bloque único para cada edificio. - Modelado de zonas comunes de parque, etcétera. - Finalmente la coordinación de todos los submodelos de manzana o bloque completo. Será, en realidad, un archivo en el que no se dibujará, sino que se insertarán cada una de las partes de que consta, en este caso, los archivos de los edificios.

Este trabajo es jerárquico y requiere de una gran coordinación, pero permite ahorrar mucho trabajo si se mantiene ordenado.

[Fig 1. En sentido inverso de agujas del reloj: manzana, edificio, vivienda y bloque; todos los elementos que conforman la jerarquía de archivos y de trabajo del proyecto]

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULOS BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI [O] LOGICS

[ 76 ]

Page 77: Rhinoceros Algorithmic Design Manual

II. TRABAJO MULTIUSUARIO Rhinoceros v4 solamente permite el trabajo multisusuario en archivos distintos. Esto es, para que trabajen varias per-sonas simultáneamente en un proyecto, deberemos dividir el proyecto en partes. Para un proyecto con más bloques que plantas, se dividirá por bloques; para otro con más plantas que bloques, por plantas.

Siguiendo con el ejemplo propuesto, a la división del proyecto de esta manera, seguirá una consecuente división de equipo de trabajo: - Persona responsable de realizar los bloques de ventanas, puertas, escaleras, mobiliario. - Persona responsable de la planta de vivienda, así como del uso de los bloques anteriores. - Persona responsable del edificio, que insertará todos los bloques correspondientes, y coordinará el modelado de los mismos en función de la finalidad última del proyecto. - Persona responsable del modelado de zonas exteriores. - Persona coordinadora del proyecto completo, quien estará a cargo de obtener y gestionar todas la información 2D del proyecto, para su inclusión en posibles tareas de delineación y presentación, en su caso.

Así pues, el proyecto tendrá una distribución jerárquica de bloques, archivos [con historial] y worksessions, o grupos de archivos.

III. ESQUEMA ORGANIZATIVO Y DISTRIBUCIÓN DE TRABAJO El esquema organizativo debe referirse, al menos, a los siguientes puntos: - Relaciones de dependencia de archivos - Relaciones con bloques, accesibilidad - Capas

1. Relaciones de archivos Es fundamental también tener en cuenta las relaciones de los archivos entre sí. Se mantendrá siempre una versión actualizada con un nombre único e invariable, y que se irá actualizando según el trabajo desarrollado. Por tanto, se crearán archivos de trabajo independientes que, una vez concluidos, sustituirán a la versión actualizada, de manera que todos los usuarios tengan acceso a ella.

2. Bloques Estas consideraciones son también válidas para todo tipo de archivos que se precisen en la realización del trabajo, lo que incluye, obviamente, los archivos de bloques. Se tendrá especial cuidado con la edición de bloques in situ, puesto que modifican el original. Todo cambio en estos archivos se gestionará con el responsable de los bloques.

Se procurará vincular exclusivamente los bloques, lo que nos permite reducir el tamaño del archivo. Si se incrustaran [lo que no es inconveniente en proyectos pequeños], la geometría de los mismos pasaría a formar parte de la del modelo, por lo que los archivos crecerían en tamaño.

Todos los bloques usados en el proyecto deberán estar contenidos y estructurados dentro de una carpeta de bloques en el proyecto, independientemente del uso que se de a librerías comunes. Esto facilita el archivado del proyecto con toda la documentaición necesaria.

3. Régimen de capas Por último, debe establecerse un régimen de capas coherente para todo el proyecto y en todos los proyectos, de ma-nera que pueda usarse un único ctb para todos ellos. Algunas normas útiles pueden ser: - Crear supercapas 2D y 3D.

- Las capas nunca tendrán nombres no descriptivos de las realidad, como “fina” o semjante. Si cualquier colaborador abre un archivo y encuentra ese nombre de capa, no sabrá si se refiere a una proyección, o simplemente vidrio, mobi-liario o cualquier otro elemento, constructivo o no.

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULOS BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI[O]LOGICS

[ 77 ]

Page 78: Rhinoceros Algorithmic Design Manual

- Uso de prefijos que indiquen el tipo de geometría: · Prefijo opción · Prefijo trabajo 2D o 3D: _2d, _3d. · Prefijo tipo de geometría: _c: curvas _s: superficies _pl:polilíneas _ps:polisuperficies y sólidos _m: mallas [habitual en modelado de terreno o en fabricación] _p: puntos [poco habitual] - Nunca dibujar en “supercapas”, éstas no deberán exportarse a AutoCAD, y sirven sólo como organización interna. - Establecer criterios para el uso de las mismas capas, con mismo nombre y mismos colores en todos los archivos.

IV. PRECAUCIONES INICIALES AL TRABAJAR CON ARCHIVOS DE AUTOCAD En la gran mayoría de ocasiones, especialmente al comenzar a usar Rhinoceros, nos encontramos con que dibujamos más comodamente en AutoCAD en 2D. Si bien esto es un paso a salvar -ya que el modelado en 2D de Rhino es más cómodo- , no está de más dar un par de consejos sobre la importación de archivos desde AutoCAD.

Efectúa siempre las siguientes consideraciones: - Orden de capas en ACAD: comprueba que las capas cumplen con los requisitos descritos en el punto anterior. - Ordena las capas bajo una subcapa “origen” en la supercapa “2d”, si es necesario. - Oculta las capas innecesarias. Puedes guardar el estado de las capas si lo necesitas.

- Borra los objetos duplicados. Usa la herramienta “seleccionar duplicados” [en la barra de herramientas de selección], y borralos. Es mucho más sencillo hacerlo en Rhino que en AutoCAD.

- Asegúrate que comprobar que todas las curvas de muros están cerradas. Puedes hacerlo por pasos: · Selecciona todos los muros · Oculta el resto de objetos · Selecciona las curvas abiertas · Corrige dichas curvas- Cierra las curvas que no lo están:

· Selecciona todas, usa el comando “unir” [join], y repite los pasos anteriores · Usa el comando “SelChain” para seleccionar todas las curvas que sean consecutivas, y usa el comando join. · Crea una región mediante unión de curvas. Para ello, ve a herramientas para curvas>booleana de curvas. - Comprueba objetos y geometría errónea o defectuosa “Bad Objects” - Purga el modelo usando el comando “purge”

V. ESTRUCTURA DE CARPETAS Y ARCHIVADO DE MODELOS Una estructura típica de carpetas podría ser: - CarpetaReferencia ·Fase: 1_Modelo: #3D_Rhino: ##Bloques ###Puertas [...] ##Unidades_Vivienda ##Edificios ##EspacioExterior ##Manzana [##Fabricación] [##Otros] ##[...] #2D_Rhino

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULOS BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI [O] LOGICS

[ 78 ]

Page 79: Rhinoceros Algorithmic Design Manual

##Plantas ##Alzados ##Secciones [##Fabricación] [##Otros] ##[...] #2D_CAD ##Plantas ##Alzados ##Secciones [##Fabricación] [##Otros] ##[...] #ArchivosBaseRender ##Texturas ##Materiales ###Cerámica ###Metal ###[...] ##PresetsProyecto #ArchivosBaseCAD ##SectionTools secciones proyecto ##CTBs proyecto ##[...] 2_Documentos escritos: 3_Archivo: Fecha_ZIP 1_Modelo: #3D_Rhino: ##Bloques ###Puertas [...] ##Unidades_Vivienda ##Edificios ##EspacioExterior ##Manzana [##Fabricación] [##Otros] ##[...] #2D_Rhino ##Plantas ##Alzados ##Secciones [##Fabricación] [##Otros] ##[...] #2D_CAD ##Plantas ##Alzados ##Secciones [##Fabricación] [##Otros] ##[...]

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULOS BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI[O]LOGICS

[ 79 ]

Page 80: Rhinoceros Algorithmic Design Manual

#ArchivosBaseRender ##Texturas ##Materiales ###Cerámica ###Metal ###[...] ##PresetsProyecto #ArchivosBaseCAD ##SectionTools secciones proyecto ##CTBs proyecto ##[...] 4_Otros documentos

VI. UN MODELO DE TRABAJO DISTINTO 1. Análisis inicial El trabajo tradicional con AutoCAD tiene una serie de desventajas que podemos solverntar con Rhinoceros, todas ellas gracias al uso de geometría 3D. De esta manera, se puede pasar de un modelo de producción basado en gran cantidad de archivos a otro basado en uno solo, del que se desprende toda la documentación 2D.

Como parece evidente, este nuevo sistema de gestión de la información desembocará en un nuevo modelo de estruc-tura de empresa, que reflejará las responsabilidades asociadas a las relaciones de interdependencia de los modelos, dando prioridad y mayor relevancia a las instancias más altas del mismo. Las figuras 2 y 3 muestran los modelos de gestión de infor-mación, la figura 5, el nuevo modelo de equipos que de éste se desprende.

GESTIÓN DEL MODELO DE INFORMACIÓN-ARQUITECTURA-

DISEÑO 2D

VISUALIZACIÓN DISEÑO 3D

3DMax

DELINEACIÓN

AutoCAD

CALCULO Y CERTIFICACIONENERGÉTICA

LIDER

ECOTEC

...

-

...

-

LIBRO DE EDIFICIO

-

PLIEGO DE CONDICIONES

-

Diseño manual ACAD

MODELO 2D GESTIÓN

PROYECTO BÁSICO

PROYECTO EJECUCIÓN

Diseño manual ACAD

RESPONSABLE PROYECTO

DISEÑOEQUIPO VISUALIZACIÓN

DIS

EÑO

GES

TIÓ

N

-

ArquitectoDelineante

DELINEACION

MEDICIONES PRESUPUESTO

OTRA PRODUCCIÓN

GESTIÓN RESIDUOS CÁLCULO RUIDO CONTROL CALIDAD

- excel automatizado -

PLANTILLAS

MODELO ACTUALDE GESTIÓN INFORMACIÓN

27 JUNIO 2011

[Fig 2. Modelo de gestión de información actual]

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULOS BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI [O] LOGICS

[ 80 ]

Page 81: Rhinoceros Algorithmic Design Manual

2. Mejoras en el trabajo El sistema de información y de equipos propuesto pretende alcanzar las siguientes mejoras: - Mejora del diseño. - Reducción de costes en el trabajo de diseño. - Libertad e interactividad total en el diseño. - Reducción de plazos de entrega. - Inclusión de lógicas espaciales y estructurales. - Inclusión en una plataforma de condiciones medioambientales: soleamiento y orientación, vientos, pendientes. - Automatización virtual del proceso constructivo e integración de características materiales (característica avanzada). La implantación y uso de estas herramientas se determinará mediante el análisis crítico de: - Tipos de proyecto. - Ayudas al proceso de diseño existente. - Generación automática de documentos en las distintas fases de proyecto. - Elección de programa particular y específico contra la opción de implantar uno más generalista. - Tamaño de la producción y necesidad de comunicación con otras empresas. - Existencia de software base (utilización de AutoCAD, Presto). - Previsión temporal y de coste de la formación e implantación.

En la mayoría de los casos, la problemática del enfoque de trabajo en diseño arquitectónico pasa por:- Los inputs de trabajo para delineación son confusos y vagos en ocasiones, obligando a los delineantes a tomar deci-siones de proyecto. - La organización de diseño arquitectónico suele ser poco eficiente. Se detecta que la falta de jerarquía en los equipos provocan excesiva dependencia del Responsable en asuntos de baja relevancia relacionados con el diseño y la pro-ducción.

GESTIÓN DEL MODELO DE INFORMACIÓN-ARQUITECTURA-

Presto / *.bc3

MODELO 3D DISEÑO

VISUALIZACIÓN

-

CÁLCULO Y DERTIFICACIÓNENERGÉTICA

DELINEACIÓN

-

...

-

...

-

...

-

LIBRO DE EDIFICIO

-

PLIEGO DE CONDICIONES

-

Diseño Paramétrico y Generativo

MODELO 3D GESTIÓN

BIM (Building Information Modeling)

RESPONSABLE PROYECTO

DISEÑO

DIS

EÑO

GES

TIÓ

N

GESTIÓN

-

Responsable diseño

Fases iniciales y Proyecto BásicoProyecto Ejecución

MEDICIONES PRESUPUESTO- -

OTRA PRODUCCIÓN

GESTIÓN RESIDUOS CÁLCULO RUIDO CONTROL CALIDAD

- excel automatizado -

PLANTILLAS

PROPUESTA DE MODELO DE GESTIÓN INFORMACIÓN

27 JUNIO 2011

CARGA DE TRABAJO-TIPOS DE PROYECTO-

-

-%--%

-

-%--%

[Fig 3 Modelo de gestión de información final]

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULOS BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI[O]LOGICS

[ 81 ]

Page 82: Rhinoceros Algorithmic Design Manual

- No suelen existir responsables intermedios de diseño. - El perfil y conocimientos de diseño del arquitecto son insuficientes.- No se potencian suficientemente los conocimientos y experiencia de gestión de los arquitectos.- Ineficiencia y redundancia en el desarrollo de la producción [el arquitecto y el delineante trabajan simultáneamente en un mismo proceso que podría ser desarrollado por un único profesional].- No existen o no se aplican protocolos unificados de gestión interna y externa de archivos [capas, nombres, carpetas].- La comunicación entre los profesionales implicados es deficiente –inexistencia de protocolos de comunicación.

Por su parte, el trabajo exclusivo en AutoCAD implica: - Complicaciones de comunicación documental entre arquitectos y delineantes. - Complicaciones de comunicación documental entre delineantes. - Bajo nivel de diseño y estudios previos [o ausencia de los mismos]. - Duplicidad de trabajo en la visualización.

3. Conclusiones Claramente, se hace necesaria la formación y remodelación del perfil del arquitecto, así como la especificación de sus roles en el diseño y posteriores trabajos de delineación. El proceso de diseño se puede beneficiar del uso de programas espe-cíficos, como Rhinoceros, mientras que el desarrollo de proyectos de ejecución lo haría de la implantación de sistemas BIM, cuyo desarrollo no corresponde a las expectativas de este manual.

Parece claro, asimismo, que debe eliminarse la dualidad en el diseño mediante la mejora de los inputs de los delinean-tes [mejora de los outputs de los arquitectos]. Así pues, los arquitectos deberán trabajar digitalmente en modelos tridimen-sionales. De este modo. - Se eliminará la dualidad en el diseño. - Se eliminará el problema de toma de decisiones de diseño.

WORKFLOW DISEÑO ARQUITECTURA-PROYECTOS-

JEFE DE EQUIPO

[TEAM LEADER]

DIRECTOR DE PROYECTO

[PROJECT MANAGER]

-

RESPONSABLE CLIENTE

-

-

CRM

PRM

GESTOR

TÉCNICO

DELINEACION

RESPONSABLEDavid Díaz/David Vega

pool

nue

MULTIMEDIA

RESPONSABLEPrudencio F.

pool

nue

DISEÑO EJECUCIÓN

SEGURIDAD Y SALUD

renderizadodiseño

producciónpropia

planimetriadiseño

DOCUMENTACION ESTUDIOS PREVIOS

ANTEPROYECTO PROYECTO BASICO

PROYECTO EJECUCION

3D - MULTIMEDIA

JEFE DE EQUIPO

[TEAM LEADER]-

J. EQUIPO

[TEAM LEADER]-

DIRECCIÓN DE OBRA

J. EQUIPO

[TEAM LEADER]-

EFICIENCIA ENERGETICA

J. EQUIPO

[TEAM LEADER]-

ESTADO PROPUESTO

12 SEPTIEMBRE 2011

[Fig 4 Modelo actual de equipos]

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULOS BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI [O] LOGICS

[ 82 ]

Page 83: Rhinoceros Algorithmic Design Manual

- Se mejorará el rendimiento de los delineantes. - Se mejorará el control y la complejidad del diseño. - Se minimizará [o eliminará por completo] el impacto en el trabajo de los delineantes durante el proceso de diseño.

WORKFLOW DISEÑO ARQUITECTURA-PROYECTOS-

JEFE DE EQUIPO

[TEAM LEADER]

DIRECTOR DE PROYECTO

[PROJECT MANAGER]

-

RESPONSABLE CLIENTE

-

-

CRM

PRM

GESTOR

TÉCNICO

DELINEACION

RESPONSABLEDavid Díaz/David Vega

pool

nue

MULTIMEDIA

RESPONSABLEPrudencio F.

pool

nue

DISEÑO EJECUCIÓN

SEGURIDAD Y SALUD

renderizadodiseño

producciónpropia

planimetriadiseño

3D - MULTIMEDIA

JEFE DE EQUIPO

[TEAM LEADER]-

J. EQUIPO

[TEAM LEADER]-

DIRECCIÓN DE OBRA

J. EQUIPO

[TEAM LEADER]-

EFICIENCIA ENERGETICA

J. EQUIPO

[TEAM LEADER]-

ESTADO PROPUESTO

12 SEPTIEMBRE 2011

[Fig 5 Modelo propuesto de equipos]

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULOS BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI[O]LOGICS

[ 83 ]

Page 84: Rhinoceros Algorithmic Design Manual

MODELADO AVANZADO EN 3DMallas y fabricación de maquetas 3D

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULO BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI [O] LOGICS

[ 84 ]

Page 85: Rhinoceros Algorithmic Design Manual

[ 85 ]

Page 86: Rhinoceros Algorithmic Design Manual

I. CONCEPTOS INICIALES: MODELADO DE UNA ESCALERA COMPLEJA A estas alturas deberías estar perfectamente familiarizado con el proceso de modelado de superficies. De nuevo, el archivo del tutorial se basa en esta técnica, si bien podría modelarse con sólidos. Si decides seguir las recomendaciones del tutorial para el modelado, perfecto. En cualquier caso, las notas referentes a la fabricación digital son aplicables a todo tipo de modelos, puesto que habrá de trabajarse con mallas.

En este tutorial no vamos a ver cómo prepar archivos para cada uno de los métodos de fabricación más conocidos: laser cutting, CNC milling, casting, y 3D printing [impresora cortadora láser, fresadora CNC, moldeado, impresión 3D]. Puesto que ésto podría ocuparnos un curso completo, vamos a fijarnos en cómo usar impresoras 3D, o, mejor dicho, cómo preparar los archivos para los fabricantes. Esto nos servirá para estudiar las herramientas de mallado.

Así pues, no te preocupes en exceso por el modelado con mallas, de hecho, el mallado es el último paso del proceso de modelado, pero el primero de la fabricación digital. El proceso completo incluye, en condiciones normales: - Modelado [diseñador]. - Comprobación inicial del modelo: verificación de polisuperficies abiertas. - Verificación de posibles problemas de geometría en la conversión a escala [elementos demasiado finos, menores de 2 mm a escala de maqueta]. - Transformación en malla [diseñador]: en este paso es importante respetar la complejidad inicial de la geometría lo más fiel y perfecta posible, por lo que habrá que ajustar los parámetros de conversión de forma acorde. Hablaremos de esto a continuación. - Revisión de la geometría mallada. - Comprobación final de la escala del modelo - Colocación óptima del modelo para ahorro de material - Selección del material y envío al fabricante II. ABRIENDO EL ARCHIVO El archivo contiene una escalera modelada mediante superficies NURBS, así como la misma escalera en malla. Veamos a continuación el trabajo de modelado.

III. MODELADO Como hemos dicho, no nos detendremos demasiado en el proceso de modelado. En este caso la escalera se diseña como un elemento tectónico unitario con cierto carácter escultural. Para ello, ten en cuenta los siguientes pasos: 1. Levantar el perfil de la escalera en 3D 2. Extruir los escalones como en un caso normal 3. Diseñar las barandillas y el perfil como elementos sólidos

En este caso, hemos modelado una escalera de dos tramos. Para el modelado de los sólidos de las barandillas, hemos elegido crear una serie de curvas cuya combinación nos dará las superficies giradas que puedes ver en el modelo. Crea estas superficies a partir de curvas de la siguiente manera: - Crea una curva con al menos 4 puntos de control para cada barandilla, de manera que los dos primeros y los dos últi-mos sean horizontales a la altura correspondiente. - Asegúrate de que los puntos están al menos 0.9 metros por encima de los escalones. La curva deberá tener forma de “S”. - Repite esta curva para la otra barandilla. - Ahora crea una curva para la base de la escalera. Utiliza los dos primeros puntos de control de una curva para los dos primeros de la curva base y los dos últimos de la otra curva de barandilla para los dos últimos de la nueva curva, de manera que tengas una “S” tanto en alzado como en planta. - Ahora copia las curvas de barandilla en vertical y hacia abajo una distancia suficiente como para envolver toda la escalera. Aproximadamente debería ser suficiente con 1.2 metros. - Numera las curvas: A y A’, por ejemplo, para las curvas inferior y superior de una barandilla. B y B’ serán, a estos efectos, la superior e inferior de la otra barandilla, y C, la que hemos creado en diagonal. Si bien el modelo no es exactamente de este modo, será suficiente crear las superficies así para nuestro ejercicio.

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULOS BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI [O] LOGICS

[ 86 ]

Page 87: Rhinoceros Algorithmic Design Manual

- Prueba a crear las superficies con dichas curvas. Crea lofts siguiendo el siguiente orden. a. A-A’ b. B-B’ c. A-C d. B-C Estas superficies deberían ser la envolvente de la escalera. Junto a la superficie extruida de los peldaños, formarán un monolito. Veamos cómo.

En primer lugar, hemos de ser cuidadosos con la creación de polisuperficies, puesto queéstas deben ser siempre ce-rradas si queremos exportar nuestro modelo a un formato STL. Para ello, utiliza siempre la opción sólido=sí cuando vaas a extruir tus superficies.

- Extruye todas tus superficies o polisuperficies para crear sólidos. Puedes probar a extruir las barandillas con extrusio-nes de diferentes distancias para dar un mejor efecto al diseño de las “barandillas”. Usa el comando “Variable Offset on Surface” para crear este efecto. Encontrarás este comando en la barra de herramientas principal2>herramientas de superficies>offset variable.

- Procura no tener trozos sobrantes de geometría. Recorta los escalones que sobren con la herramienta “trim”, seleccio-nando las superficies o polisuperficies de las barandillas. Perfecto, deberías tener ya todas las superficies preparadas. Es crucial tener la mínima cantidad posible de superficies. De hecho, la mejor manera de optimizar una maqueta STL es teniendo el modelo como un objeto único y cerrado. Emplea las herramientas booleanas que ya conoces para “soldar” cada una de las polisuperficies, asegurándote de tener cada una de ellas cerradas. Podremos cerrarlas también si son mallas, pero nos será mucho más costoso.

El proceso de unir mediante booleana no es perfecto, no desesperes si tienes algún error o el comando no puede com-pletarse, tener un sólo objeto es un buen objetivo, pero no conviene obsesionarse. Una vez hayas conseguido tener el míni-mo número de objetos, procederemos a ver qué bordes están “sueltos”, para lo cual utilizaremos las herramientas de análisis. Saca la barra si no la tienes visible en tu pantalla [de nuevo, pulsa el botón derecho del ratón sobre una zona sin barras de herramientas, esto mostrará todas las posibles barras de herramientas, tanto activas como inactivas].

O�set de super�cieO�set variable de super�cie

[Fig 1. Opciones de offset de superficie]

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULOS BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI[O]LOGICS

[ 87 ]

Page 88: Rhinoceros Algorithmic Design Manual

IV. BORDES Y GEOMETRÍA NON-MANIFOLD Dentro de las herramientas de análisis, adquieren especial importancia, a la hora de plantearse modelar para realizar maquetas en 3D, las herramientas de borde. Como hemos dicho, los modelos deben ser sólidos cerrados, por o que no podrá haber ningún “borde desnudo” [naked edge]. Esto significa que ningún borde de ninguna superficie podrá tener menos de dos superficies adyacentes.

Asimismo, son peligrosos los objetos cuya geometría sea “NON-manifold”. En otras palabras, aquellos objetos en los que se de la característica que existan bordes que tengan más de dos caras adyacentes. En cualquiera de los casos [tanto bordes desnudos como geometría non-manifold] no podremos exportar correctamente nuestra geometría.

Esto aplica no sólo a la geometría original, sino también a la geometría mallada, por lo que realizaremos las compro-baciones de bordes tanto antes de crear la malla como después. Solventa previamente posibles problemas con la geometría original, esto te guardará de quebraderos de cabeza posteriores. Si tienes geometría non-manifold en tu modelo, no podrás fabricarlo.

V. PRECAUCIONES CON LAS MALLAS Es posible que, si tienes bordes desnudos, tengas huecos en el modelo. Haz zoom sobre dichos bordes. En el caso de tener un hueco, puedes usar directamente la herramienta “rellenar agujeros de malla”, en la barra de herramientas “herra-mientas de malla”. Puedes asimismo crear una cara individual de malla, haciendo click sobre 3 ó 4 puntos para crear una cara triangular o cuadrangular, respectivamente. Todas las caras triangulares serán, por definición, planas.

Puedes ver las herramientas principales para mallas en la figura 3. Aplica todas las recomendaciones con el modelo de la escalera. Una vez hayas finalizado, puedes proceder a exportar el modelo.

Mostrar bordes/Apagar bordes

Separar bordesUnir bordes “desnudos”Seleccionar polisuper�cies abiertasReconstruir bordes

[Fig 2. Edge Tools/herramientas de borde]

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULOS BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI [O] LOGICS

[ 88 ]

Page 89: Rhinoceros Algorithmic Design Manual

VI. EXPORTAR EL MODELO Sigue los siguientes pasos: - Asegúrate de que el modelo está en la escala real de la maqueta. - Coloca el modelo de manera que el gasto de material de soporte sea el menor posible - Finalmente selecciona el/los objetos a exportar y exportalos como STL. Usa las siguientes opciones: · Tipo: binario · Exportar objetos abiertos: no Comprueba que el archivo exportado es correcto, puedes abrirlo en Rhino. El archivo contendrá los objetos exportados como mallas. El modelo se parecerá al que mostramos en la figura 4.

VII. REFERENCIAS Si tienes curiosidad por esta técnica de fabricación, puedes encontrar numeros vídeos online que muestran procesos iguales o parecidos al que hemos seguido, incluyendo diferentes tipos de maquinaria, materiales y escalas. Puedes echar un vistazo a los siguientes links: - http://www.youtube.com/watch?v=07QxFQ3uUFw - http://www.youtube.com/watch?v=7QP73uTJApw - http://www.youtube.com/watch?v=SOMnSHlT6AI&feature=related - http://www.youtube.com/watch?v=_NvCMlLCDPQ&feature=endscreen&NR=1

UnirRestarDiferencia“Split”

Triangular mallaCuadrangular malla

Fill mesh hole: llenar agujero de mallaRebuild mesh: reconstruir mallaRebuild mesh normals: reconstruir normales de malla

Soldar mallaBorrar caraAñadir cara

[Fig 3. Herramientas para malla]

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULOS BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI[O]LOGICS

[ 89 ]

Page 90: Rhinoceros Algorithmic Design Manual

- http://www.youtube.com/watch?v=9gJ0j107PYU&feature=fvwp&NR=1 - http://www.youtube.com/watch?feature=fvwp&NR=1&v=Wnu4lmOnX00 - http://www.youtube.com/watch?v=3eojAdYMT0g&feature=endscreen&NR=1 - http://www.youtube.com/watch?v=nIO4HNNURFI&feature=related - http://www.youtube.com/watch?v=mxe3Fh0MVeY&feature=watch_response

[Fig 4. Malla(s) final](es)

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULOS BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI [O] LOGICS

[ 90 ]

Page 91: Rhinoceros Algorithmic Design Manual

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULOS BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI[O]LOGICS

[ 91 ]

Page 92: Rhinoceros Algorithmic Design Manual

MODELADO AVANZADO EN 3DTerrenos

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULO BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI [O] LOGICS

[ 92 ]

Page 93: Rhinoceros Algorithmic Design Manual

[ 93 ]

Page 94: Rhinoceros Algorithmic Design Manual

I. MODELADO DE TERRENOS La extensión “PointSetReconstruction” es capaz de reconstruir mallas a partir de nubes de puntos. Esto es más que suficiente para modelar terrenos en Rhinoceros.

Descarga la extensión de la página http://wiki.mcneel.com/labs/pointsetreconstruction, ahí encontrarás además sufi-ciente información sobre su funcionamiento.

1. Obteniendo una información útil Sea el que sea el tipo de archivo y la información que recibas, deberás disponer de una nube de puntos que no conten-gan ninguno que coincida exactamente en X,Y. Si tienes ya la nube de puntos con las cotas en su sitio, puedes prescindir de los siguientes pasos. Si tienes un archivo de AutoCad con las curvas de nivel, sigue los pasos que te indico a continuación: - Coloca las curvas en su posición final, en la cota correspondiente. - Extrae, en una capa independiente, los puntos de control de las mismas, o bien los puntos de interpolación. Estos serán los puntos que usarmos para la definición de la malla.

Una vez hemos obtenido los puntos, debemos crear una malla con los mismos, que nos va a definir el terreno. Es aquí donde las herramientas PointSetReconstruction adquieren importancia, ya que nos van a dar la definición base de la super-ficie [aunque con una topología de malla].

2. Instala el PlugIn Descarga el archivo y descomprimelo en una carpeta temporal. Copia el *.rhp en la carpeta de instalción de rhino/Plugins, y el*.tb en donde suelas guardar las barras de tareas. Carga el plugin en herramientas>opciones>plugins>instalar. Una vez lo tengas, puedes acceder a los distintos co-mandos que el plugin incluye. Para simplificar las cosas, usaremos solamente la triagulación Delaunay, que crea una malla triangulada a partir de unos puntos base que podemos seleccionar.

[Fig 1. Archivo limpio con los puntos extraidos]

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULOS BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI [O] LOGICS

[ 94 ]

Page 95: Rhinoceros Algorithmic Design Manual

3. Limpia el archivo original Recuerda las precauciones generales de limpieza de archivos de AutoCAD: - Borra objetos duplicados - Borra las capas innecesarias - Une todas las curvas topográficas que puedas

Coloca todas las capas de Autocad bajo una subcapa que se denomine “original_CAD”, de manera que puedas encen-derlas o apagarlas todas juntas. El archivo correspondiente a este paso se denomina Topo_paso0.3dm Una vez tengas la geometría de las curvas puedes proceder a limpiar el resto de capas. Como recomendación podría-mos proponer ocultar las capas correspondientes a los objetos que no necesitemos, es decir, todos aquellos que estén el el plano Z=0.

4. Crea la malla base Si bien nuestra objectivo es conseguir una superficie limpia sobre la que modelar, inicialmente necesitaremos tener la malla triangulada. - Utiliza el comando “Extraer puntos” para extraer todos los puntos de control de las curvas de nivel. - Agrupa los puntos para facilitar su selección - Guarda los puntos en la capa correspondiente

Puedes crear una capa “3D_Pts” en tu dibujo, donde guardarás los puntos que a la postre serán los vértices de tu malla. Podrías crear una polisuperficie por triangulación, pero eso significaría incrementar sustancialemente la cantidad de geo-metría en tu modelo, haciendolo ineficiente y costoso. Es posible también introducir las líneas directamente. El programa sampleará éstas, extrayendo un número determinado de puntos. Además, siempre incluirá cualquier vértice en forma de “kink” que las curvas originales puedan incluir. Verás que la triangulación Delaunay es el proceso 2,5D de insertar y ajustar triángulos sobre un conjunto no organiza-do de puntos de manera que no queden agujeros en la malla que éstos forman. Como hemos dicho anteriormente, el algo-ritmo es perfecto para recrear superficies implícitas en un conjunto de puntos. La salida del comando es siempre una malla, y no puede computar puntos coincidentes en Z.

Una vez tengas los puntos, utiliza el comando “Delaunay Triangulation“ para crear la malla. Las opciones que puedes emplear son las siguientes: - Noise [NoNoise, QuarterTolerance, HalfTolerance, Tolerance, DoubleTolerance] - Guide [None, Planar, WorldPlanar, Spherical, Hyperbolic, Surface]: si los puntos de partida están organizados [por ejemplo, en una malla, una esfera, o un círculo], es posible que la solución del algoritmo falle. A veces es posible usar una proyección como guía, bien sea una superficie [esfera, hiperboloide...] , curva, u otro objeto. - Cullers: - Shader [None, XYZ, UVW, Deviation, Slope, Terrain, Occupancy, UVParameter]: · Terrain: aplica colores estándar asociados con el terreno. Debes especificar el nivel del agua y si el terreno está iluminado desde alguna dirección que no sea la del ambiente. · Pendiente: las áreas con pendiente más pronunciada se colorean en verde, y las más planas en amarillo. La pendiente se hace relativa al dominio de pendientes [entre los valores mínimo y máximo].

Delaunay triangulation (2.5D)

Connectivity networkConnectivity network

Pixel Grid

Quad Tree (2D) Oc Tree (3D)

Convex Hull (2,5D)/Spanning Circle (2D)

Voronoi diagram (2D)

Voronoi diagram (3D)/Import Existing 3D Voronoi Solution

[Fig 2. PontSet Reconstruction Tools]

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULOS BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI[O]LOGICS

[ 95 ]

Page 96: Rhinoceros Algorithmic Design Manual

· Desviación: Este shader puede usarse para determinar la exactitud de las guías. Debes especificar un valor de desviación [20% por defecto] y todos los vértices que exceden este valor se colorearán en amrillo-rojo. La desviación se calcula como porcentaje de la máxima desviación. · UVW y XYZ: mapea los componentes RGB en función de la posición relativa de cada pixel dentro de la malla. · Textura: puede usarse para mapear los componentes U,V de la malla de salida. Una malla bien equilibrada indica una adecuada selección de la guía. La textura se perderá al procesar el objeto, es meramente de consulta. · Ocupación: aplica la textura en función del número de ejes o bordes convergentes. Cuando hay grandes regiones de colores rojos o púrpura la guía actual está deformando la proyección. - Complete: completa la operación y crea la geometría final para añadirla al modelo.

5. Crea la superficie sobre la malla obtenida Perfecto, ya tenemos la malla. Verás que incluye zonas en las que no tenemos información de puntos. Esto se debe a que el algoritmo necesita encontrar un borde dentro del cual calcular la triangulación.

Para crear la superficie, ve a la vista superior y usa el comando cubrir objetos con superficie [“_Drape”]. El comando, cuyas opciones explicaremos a continuación, cubre el objeto dado con una superficie “lanzada” ortogonalmente a la vista actual [ojo, no al planoC actual] y una resolución determinada. De ahí la importancia de usar una proyección ortogonal supe-rior. Puedes encontrar el comando en el menú de superficies.

Las opciones del comando son las siguientes: - Autoespaciado: permite definir la cantidad de divisiones U y V de la superficie. En función de esto se obtendrá una superficie más o menos fiel a la malla inicial. - Espaciado: distancia entre puntos U y V de la superficie. - ProfundidadMáxima: en función de la volumetría de la malla, qué altura máxima va a tener la superficie. Autodetectar es en principio una buena opción.

[Fig 3. Solución computada en malla]

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULOS BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI [O] LOGICS

[ 96 ]

Page 97: Rhinoceros Algorithmic Design Manual

6. Recorta la superficie Cuando hayas obtenido la superficie, solamente tienes que recortarla. Usa la curva de contorno de la capa orginal que contiene los contornos, y tendrás tu superficie definitiva.

Si quieres, puedes intentar reducir la superficie, para que los puntos de control no se extiendan más de lo necesario hacia fuera de los bordes de la superficie.

7. Aplica texturas [opcional] Finalmente, puedes crear un material en VRay y aplicarlo a la superficie. Si tienes la precausción de hacer una textura con las mismas dimensiones y forma que la superficie original, podrás aplicarla sin ningún problema a tu superficie, y rende-rizarla para tener la mejor simulación posible del terreno [fig 5].

[Fig 4. Superficie final sin recortar y recortada]

[Fig 5. Textura y textura aplicada a la superficie]

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULOS BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI[O]LOGICS

[ 97 ]

Page 98: Rhinoceros Algorithmic Design Manual

TOPOLOGÍA DE LA GEOMETRÍA NURBS [Non-Uniform Rational Bezier Splines]

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULO BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI [O] LOGICS

[ 98 ]

Page 99: Rhinoceros Algorithmic Design Manual

[ 99 ]

Page 100: Rhinoceros Algorithmic Design Manual

I. NOCIONES BÁSICAS DE PROGRAMACIÓN Aproximarse a la topología NURBS implica un conocimiento amplio de la descripción geométrica de los objetos a partir de fórmulas matemáticas y, de manera implícita, del comportamiento y descripción de las mismas en los entresijos del or-denador. Es, por tanto, imprescindible, iniciarse en el apasionante mundo de la programación, y, si bien no llegaremos a ser programadores profesionales, sí podremos entender y crear geometrías complejas a través de rutinas y “scripts”, pequeños programas hechos a medida que nos dan acceso directo al núcleo de Rhino, así como sus funciones y métodos.

1. Scripts, ejecución secuencial y programación orientada a objetos Generalmente, la manera más sencilla de comenzar un código es mediante la utilización de “comandos” u “órdenes” dadas en una secuencia determinada. Podríamos decir que el modo más primitivo de escribir código es mediante macros, secuencias de órdenes ordenadas de una manera determinada y que siempre llevan a cabo la misma labor. Las macros no permiten interacción con el usuario y son bastante limitadas, si bien son muy útiles a la hora de abordar problemas que re-quieren mucho esfuerzo o tiempo y que pueden automatizarse (por ejemplo, una secuencia de acciones que abre una ima-gen, cambia su brillo y su opacidad, la recorta, y la vuelve a guardar). Todos los parámetros implicados en una macro deben estar predefinidos de antemano, no pudiendo dejar ni una sola variable sin determinar. En el ejemplo anterior, si quisiéramos cambiar el brillo de una imagen, debemos especificar exactamente el nuevo valor de brillo, así como, a la hora de recortarla, cuáles son los píxeles que definen el cuadro delimitador del corte.

Un script, en cambio, permite cierta interacción con el ususario, así como el uso de variables. Esto implica mayor flexi-bilidad, pero también mayor riesgo de error. Los scripts son, en lo que a nosotros nos concierne, el siguiente paso en la “inte-ligencia” de la programación. Dedicaremos a continuación una buena parte de tiempo a describir y cualificar cómo escribir scripts y sus diferentes funcionalidades, desde la creación de geometrías complejas hasta la automatización de procesos de creación de planos para la fabricación, exportación de archivos y otras utilidades varias.

Tanto las macros como los scripts, sin embargo, comparten una propiedad fundamental: ambos se basan en una se-cuencia de órdenes que el ordenador interpreta linealmente. La programación orientada a objetos permite la descripción de objetos [instancias de clases] mediante una serie de “características” [propiedades] y “comportamientos” [métodos], que son capaces de interactuar entre sí mediante una serie de reglas compartidas definidas a través de dichos comportamientos. Dicho paradigma excede el nivel que queremos alcanzar con el presente manual, por lo que lo dejaremos para ediciones posteriores.

2. Macros Aunque no es el tema principal que nos ocupa, una leve introducción a las macros no hace mal, y nos ayudará a enten-der los conceptos básicos que hemos descrito anteriormente.

Valga de ejemplo una escalera de caracol: para dibujar una escalera de caracol necesitaríamos repetir un objeto (es-calón), copiarlo en altura, y rotarlo una serie de grados. Después, tendríamos que tomar el último elemento u objeto creado (es decir, el escalón que acabamos de copiar) y repetir la operación una serie de veces hasta que terminemos de rellenar el espacio necesario.

Hacer esto a mano podría suponernos un buen rato de modelado, aburrido y tedioso. Podemos evitar innecesarias ho-ras delante del monitor si somos capaces de describir [y posteriormente transcribir] las órdenes necesarias en una secuencia que el ordenador pueda entender. A saber: 1. Selecciona el escalón que quieras repetir 2. Copia dicho escalón 3. Mueve el escalón verticalmente una distancia establecida para la huella, por ejemplo: 15cm. 4. Rota el escalón un cierto ángulo (por ejemplo: 10º) alrededor de un eje (por ejemplo uno vertical en 0,0)

Podríamos, además, implementar un último paso que repitiera el proceso una serie de veces, como por ejemplo 15, pero de momento vamos a dejarlo aquí para facilitar la simplicidad del código. En todo caso, una macro es una lista o secuen-cia de órdenes predeterminadas que el programa ejecuta.

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULOS BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI [O] LOGICS

[ 100 ]

Page 101: Rhinoceros Algorithmic Design Manual

Una vez tenemos claro lo que necesitamos hacer, debemos poder transcribir todo en un lenguaje que pueda entender e interpretar el ordenador. Usaremos el término macro para describir un conjunto de órdenes ordinarias de Rhino escritas de manera secuencial para crear una función automatizada. Así pues, es “scripting” en su nivel más bajo, y veremos que es accesi-ble a cualquier usuario de Rhino, incluso si no tiene conocimientos de programación. Todo lo que necesitamos, como hemos dicho, es un conocimiento aceptable de Rhino, algo de experiencia en modelado, y cierto gusto por la experimentación.

Para escribir una macro precisamos: - Nuestro propio interés - Los archivos de ayuda de Rhino, que describen todos los comandos así como sus opciones - Posiblemente el editor “MacroEditor”, que permite ejecutar y analizar nuestras macros.

Aquí exponemos algunas de las claves que nos permiten comunicarnos con nuestra herramienta en forma de normas sen-cillas de sintaxis [puedes ver un listado completo en ingés en http://www.rhino3d.com/4/help/information/rhino_scripting.htm]:

Y aquí podemos analizar nuestra pequeña macro:

Código

! _Copy _pause0,0,00,0,1_enter

_selLast

_rotate _pause0,0,010_enter

Linea

1234567891011

Explicación

Comando copia con espera para intervención de usuario [selección]Punto inicio [copia]Punto final [copia]Finalizar comando

Seleccionar último objeto creado

Comando rotar con espera para intervención de usuarioPunto para el eje de rotaciónÁngulo de rotaciónFinalizar Comando

[Fig 1. Escalera creada con macro]

Nombre

Guión

Guión Bajo

Signo exclamaciónPunto y comaBarra invertida

Pause

Menor que

Símbolo

-

_

!; \

Pausewr<

Explicación

Cancela la aparición de ventanas asociadas a comandos. Todos los comandos pueden, además, escribirse o lla-marse mediante scripts, por lo que es una opción destacada a la hora de escribir los literales o “strings” [ya veremos lo que es ésto más adelante].Ejecuta el comando en inglés. Necesario para que las macros sean ejecutables independientemente del idioma en el que estemos usando Rhino actualmente.Cancela los comandos en ejecución.Permite introducir un comentario, que no será leido por rhinoSi el comando no comienza por “!” y termina con la barra invertida “\”, la macro se ejecutará en la línea de coman-dos sin pulsar enter, de manera que se puede introducir más información. Esto es útil para construir un comando a partir de dígitos, decimales, ángulos [tal como “<45”] y que se encuentran en botones, creando un “teclado numérico” en la pantalla.Para una macro para input de usuario.Usar coordenadas “World Coordinates” en vez de coordenadas del plano de trabajo.Las coordenadas relativas son relativas a la posición actual del cursor.Input de ángulo en grados.

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULOS BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI[O]LOGICS

[ 101 ]

Page 102: Rhinoceros Algorithmic Design Manual

3. ¿Dónde escribimos las macros? Perfecto, sabemos escribir un ejemplo de macro, pero, ¿dónde la guardamos? La respuesta es muy sencilla: dado que una macro equivale, a efectos prácticos, a un comando, no hay mejor manera que asociarla a un botón. Aunque hay diferen-tes maneras de hacer esto, aquí explicaremos las más sencilla y directa.

Manteniendo pulsada la tecla Shift mientras ponemos el cursor sobre cualquier botón nos permite Mover o Editar los botones [figura 2]. Edita el botón y aparecerá un menú como el de la figura 3.

En el espacio reservado para el comando del botón izquierdo del ratón pega el conjunto de órdenes que hemos des-crito para nuestra macro. Puedes cambiar la leyenda del mismo. Para guardar los cambios, acepta. Cuando cliques sobre el icono del botón, se ejecutará la macro. Puedes también editar el aspecto del botón, pero eso lo dejaremos para después, cuando tratemos la personalización de la interfaz.

Puedes probar tus macros en el editor de macros. Dicho editor es, además, una herramienta útil para excribir macros y detectar posibles errores. Usa el comando “ejecutar” de la ventana de edición para probar tu código.

4. Variables y scripts Una vez nos hemos familiarizado con el comportamiento básico de las macros, podemos empezar a pensar en sistemas más complejos que requieran interacción usuario-ordenador y la introducción de variables para dicha interacción, es decir, sistemas dinámicos que son capaces de manejar distintas situaciones. El funcionamiento de los scripts es similar, si bien se requieren conocimientos de lenguajes de programación [es decir, no vale solamente con copiar y pegar nombres de coman-

Menu Emergente

Copiar/Vincular (Ctrl+hover)Mover/Editar (Shift+hover)

[Fig 2. Menú Editar/Mover]

[Fig 3 Menú de edición de botones]

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULOS BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI [O] LOGICS

[ 102 ]

Page 103: Rhinoceros Algorithmic Design Manual

dos] y de modelado.

Las limitaciones de las macros han dado lugar, por tanto, a los scripts, una suerte de lugar indefinido entre simples secuencias de órdenes y programas compilados. Así pues, las macros pueden realizar operaciones matemáticas, evaluar con-dicionantes, responder al entorno y comunicarse con el ususario. Rhinoceros, en su versión 4, implementa VBScript, lo que significa que aquello que es válido para VBScript, lo es también para RhinoScript. Rhinoceros v5 implementa además python, por lo que habrá que ir incorporando lentamente este lenguaje a nuestro día a día.

“Traducir” VBScript en lenguaje natural [con el que nos comunicamos tú y yo] no debe ser muy complicado a este nivel. Inicialmente, los lenguajes de programación eran un conjunto de ceros y unos, que con el tiempo [el paso de generaciones de lenguajes en su sentido más estricto] se han conseguido hacer fácilmente entendibles para seres humanos. Las primeras generaciones de lenguaje “código máquina” son muy difíciles de entender, y no tienen cabida entre la mayoría de noso-tros. Afortunadamente, se ha evolucionado en los sucesivos desarrollos generacionales hacia una mayor encapsulación que abriese el marco de la programación a gente no necesariamente iniciada [VBasic pertenece a BASIC, una familia de la tercera generación de lenguajes].

Por ejemplo, es posible que queramos guardar unas curvas de nuestro modelo en 3D para modificarlas o borrarlas posteriormente, o tal vez necesitemos conocer la fecha para saber si el software ha expirado; ninguno de estos datos está disponible cuando se ha escrito el script y serán sólamente accesibles a través de variables.

Pero volviendo a lo que nos ocupa, sabemos que a menudo necesitamos almacenar información para realizar los cál-culos que nos lleven, poco a poco, a la resolución de problemas complejos. Dichos cálculos forman parte de un todo que podemos denominar algoritmo: una secuencia de órdenes determinada, que en un tiempo finito, da un resultado concreto y correcto. El almacenamiento de información para su uso en los algoritmos se puede [y debe] llevar a cabo mediante varia-bles, contenedores de información que constan básicamente de:

- Nombre: El nombre es un dato simbólico que se refiere a información almacenada en memoria. Dicho nom-bre puede ser cualquiera en rVB, con las siguientes salvedades: · Comenzará por carácter alfabético · Contendrá menos de 255 caracteres · No se permiten espacios en blanco, puntos, ni caracteres especiales (!,”, : ; , ...) · No pueden emplearse palabras reservadas del lenguaje - Tipo: indica el tipo de información que almacena una variable. Por ejemplo, y sin entrar en mas detalles, las variables Single y Double pueden ocupar números reales muy grandes. Además, hay otro tipo de variables, las denominadas variant, que son como una variable estándar que “admite cualquier tipo de dato.” - Alcance [“tiempo de vida”]:

· Global: para variables declaradas fuera de funciones y subrutinas y accesibles desde cualquier parte del código. · Local: variables declaradas dentro de funciones y subrutinas, no se podrá tener acceso a ellas desde otra parte del código. Esto es, si declaro una variable dentro de una función, solamente podré acceder a ella mientras me encuentre en la función. Si quiero, posteriormente, usar el valor de la misma, deberé pasarla como referencia bien como valor.

algunNumero = Rhino.GetInteger(“Introduce un número”,0,50,100)

En este ejemplo, “algunNumero” es sencillamente un “placeholder” para un valor determinado, que obtendre-mos cuando se ejecute el script [en tiempo de ejecución]. Está claro que, cuando estamos escribiendo el script no conocemos el valor de la variable.

Fíjate además que el nombre de la variable algunNumero no tiene tilde, ya que sería considerado un carácter especial, cuyo uso está prohibido para la nomenglatura en código [visita de nuevo las características de los nombres si tienes alguna duda]. Recuerda que el lenguaje de código por excelencia es el inglés.

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULOS BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI[O]LOGICS

[ 103 ]

Page 104: Rhinoceros Algorithmic Design Manual

El uso de las variables debe incluir tres pasos: - Declarar y comentar la variable [usar la palabra reservada “Dim”]. - Inicializar la variable. [asignar un valor inicial] - Programar las debidas instrucciones.

Tipo Tamaño Rango Boolean 1 Bit True/False Byte Entero Corto: 1 Byte De -128 a 127 Integer Entero: 2 Bytes De -32768 a 32767 Long Entero: 4 Bytes De -232/2 a (232/2-1) Single Real Simple Precisión: 4 bytes Real Double Real Doble Precisión Real Carácter 1 Byte De -128 a 127 String Cadena de caracteres Texto Date Fecha Fecha

Es posible que en ocasiones [y de hecho, la mayoría de las veces sucede] deseemos agrupar variables, tales como “Nombre”, “Empresa”, “Cargo”, “Sueldo”, o cualquier otro. VBScript nos dota de un sistema [aunque ciertamente deficiente en algunos sentidos] bastante útil para lidiar con este asunto. Las “arrays” son una estructura de información capaz de agrupar variables; puedes pensar en arrays como “contenedores” de información, una especie de bandeja donde podemos colocar los platos de una buena comida.

5. Declaración e inicialización de variables De igual manera que tu interlocutor te preguntará quién es Pepe a tu afirmación “ayer fui al cine con Pepe”, si no le conoce, RhinoScript solicita saber con quién está tratando, es decir, requiere saber qué variables vas a utilizar durante la eje-cución del script. Es suficiente con “presentar” [declarar] la variable antes de usarla, es decir, es suficiente con decir que es una variable [en el ejemplo valdría con decir Pepe es un amigo]. En rVB declararemos las variables utilizando la palabra reservada Dim, de la siguiente manera: Dim nombreVar Dim algunNumero Esto es todo lo que necesitamos hacer para hacer saber a Rhino que vamos a utilizar una variable cuyo nombre es al-gunNumero. Para arrays, esto funciona exactamente igual, ya que se comportan como una variable: Dim nombreArr Dim conjuntoNumeros Y para Dynamic Arrays [ya veremos qué significa esto más adelante]: Dim nombreArr() En este caso “()” indica al programa que la cantidad de objetos que contiene la array (su dimensión) puede cambiar.

Una vez declaradas las variables, debemos proceder a su inicialización. Inicializar una variable no es más que asignarle un primer valor, si bien RhinoScript le asigna un valor por defecto, Null, que nos sirve para controlar si la variable se ha usado o no. Es la manera que tiene Rhino de decirnos “no lo sé”.

[Fig 4. Ejemplos cotidianos de arrays: una granja solar, un contenedor]

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULOS BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI [O] LOGICS

[ 104 ]

Page 105: Rhinoceros Algorithmic Design Manual

La asignación del valor se hace mediante el símbolo “=”, que asigna el valor de la derecha al elemento que se encuentre a su izquierda. Así pues a=1, asigna el valor 1 a la variable de nombre “a”. El tipo de valor que asignemos a la variable determi-nará el tipo de la variable, de manera que si asignamos un número la variable tendrá carácter numérico, y si asignamos, por ejemplo, una cadena de caracteres, tendrá tipo “String”.

Dim algunNumero algunNumero = 0

El nombre de la variable hace que podamos entender lo que ésta contiene. Podríamos asignar algunNumero = “Presi-dente”, y RhinoScript lo entendería perfectamente. Sin embargo, nos llevaría a error con absoluta seguridad.

Esta asignación se vuelve ligeramente más compleja cuando tratamos con matrices. Las matrices [“arrays”] son conjun-tos de elementos, por lo que habrá que asignar un conjunto como valor inicial:

Dim conjuntoNumeros conjuntoNumeros = array(0,1,2,3,4,5,6,7,8,9)

Una vez más, el nombre es independiente de los valores que contiene la variable [esto es, es para “uso humano” sola-mente], por lo que es más que recomendable tener un nombre descriptivo, sencillo de recordar, y corto, para evitar errores de tipografía.

6. Asignación de valores Al igual que para inicializar variables, la asignación de valores hace uso del símbolo “=”, y funciona de la misma manera. Durante la ejecución del script podemos cambiar el tipo de valor que almacena la variable, pero esto no es recomendable por coherencia y claridad. además, los seres humanos tenemos muy mala memoria, está casi garanztizado que no seremos capa-ces de recordar la razón por la que hicimos esto o lo otro dos días después de haberlo hecho, así que es una buena práctica mantener una coherencia en todo el código.

7. Obtención/acceso de valores; cambio de los mismos. Necesariamente, si almacenamos información, necesitaremos acceder a ella, tal vez únicamente para conocer su esta-do, tal vez para modificarla o hacer algún tipo de tarea. La manera de acceder a la inormación es tan sencilla como escribir lo siguiente:

queNumero = algunNumero

O, por ejemplo, imprimir su valor en la pantalla

Rhino.Print algunNumero

En el primer caso hemos asignado el valor de la variable “algunNumero” a la variable “queNumero”. En el segundo caso, hemos dicho a Rhino qe imprima en la línea comandos el valor de algunNumero. Evidentemente, podemos también modifi-car el valor de la variable o usarlo en alguna operación matemática

Dim otroNumero otroNumero = Rhino.sin(algunNumero)

otroNumero = otroNumero + 10

De nuevo, hemos usado la función “sin” [seno] para calcular el valor del seno de algunNumero, y asignar dicho valor a la variable otroNumero. Después, hemos modificado el valor de otroNumero incrementandolo en 10. Recomiendo que pruebes este conjunto de operaciones en un sencillo script, que se podría transcribir como sigue:

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULOS BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI[O]LOGICS

[ 105 ]

Page 106: Rhinoceros Algorithmic Design Manual

Option ExplicitCall Main()Sub Main()

Dim algunNumeroDim otroumero

algunNumero = 90otroNumero = Rhino.Sin(algunNumero)

Rhino.Print algunNumeroRhino.print otroNumero

otroNumero = otroNumero +10Rhino.print otroNumero

End Sub

8. Estructura del código de rVB Acabas de ver [¡y escribir!] posiblemente tu primer script, ¡enhorabuna! Verás que la estructura del código es muy sim-ple, y consta esencialmente, de las siguientes partes reconocibles a simple vista: · declaración de variables globales [ya lo veremos en un futuro...] · llamadas a subrutinas [al menos a la subrutina principal “Main”] con la palabra “Call” · subrutina principal [bloque de código delimitado entre “Sub Main” y “End Sub”] · otras subrutinas [bloques de código delimitados entre “Sub Nombre” y “End Sub”] · funciones [bloques de código delimitados entre “Function Nombre (argumentos)” y “End Function”] Puede parecer que la estructura es algo compleja, sin embargo, cuando comencemos a escribir, veremos que es mucho más sencilla de lo que aparenta. En este caso, más es menos.

9. Funciones y subrutinas Todo lo que debes saber de funciones y subrutinas es que son bloques de código con un nombre asignado [de manera que puedas “llamarlas” o usarlas cuando lo necesites], una serie de “argumentos” [datos que necesitan para ejecutar correc-tamente] y un resultado, que puedes decidir pasar o no.Ya ahondaremos en este tema al tiempo que comencemos a escribir scripts más complejos. Recuerda: - Las subrutinas son bloques de código que expresan la secuencia de ejecución del programa. Deben ser llamadas desde fuera y tienen la capacidad de llamar asimismo a otras subrutinas y funciones. - Las funciones bloques de código, grupos de órdenes en secuencia que se agrupan por su lógica. Cada función debe tener una única finalidad. Las funciones, si están debidamente escritas, podrán reutilizarse para varios códigos. - Métodos: los métodos son funciones ya escritas que pertenecen a librerías preexistentes. En el caso de Rhinoceros, se accede a ellos mediante el prefijo “Rhino.”, lo que indica que la función está en un paquete con ese nombre.

10. Ejemplo de código: Puedes comenzar a escribir el siguiente script en el editor de scripts de Rhino, que puedes ejecutar mediante el coman-do _EditScript. Por defecto, a partir de la versión 5.0 de Rhino, el editor de Scripts será Monkey.

El script crea una serie de puntos en el modelo tridimensional de Rhino que tengas abierto. Verás que, una vez termi-nado el script, estos objetos son una parte más del mismo, y que podrás transformarlos, editarlos, o borrarlos a tu antojo. Procura copiar el script exactamente como se escribe; de otro modo podrías tener problemas de sintaxis con los que es más que probable que no estés familiarizado, por lo que podrías bloquearte. Recuerda, es mala idea generalmente tratar de re-solver problemas relacionados con estos asuntos durante más de 30-60 minutos sin consultar la ayuda de una persona más experta. Se trata de aprender, no de desesperar.

Verás que al copiar el código en tu editor de scripts, algunas palabras cambian de color, son palabras reservadas para el lenguaje VBasic. Aquellas líneas precedidas de ‘ [apóstrofe] son comentarios, y no serán leidas por Rhino. Son para uso hu-mano. Verás además, que las palabras contenidas entre comillas [“...”], son consideradas cadenas de caracteres literales.

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULOS BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI [O] LOGICS

[ 106 ]

Page 107: Rhinoceros Algorithmic Design Manual

Fíjate en la descripción del script línea por línea para entender exactamente qué ocurre.

Option Explicit‘Comentarios‘Aquí declaración de variables globales, si procede

‘Llamada a la subrutina principalCall Main()

‘Comienzo de la subrutina principalSub Main()

‘Órdenes en secuencia‘Uso de un métodoRhino.EnableRedraw(False)‘Llamada a funciones personalizadasCall DoSinglePointCall DoPointGrid‘Uso de métodoRhino.EnableRedraw(True)

End Sub‘Fin de subrutina

‘Comienzo de una funciónFunction DoSinglePoint

‘Órdenes en secuencia, incluyen métodos y otrosRhino.AddPoint(array(0,0,0))

End Function‘Fin de la función

‘Comienzo de una funciónFunction DoPointGrid

‘Órdenes en secuencia, incluyen métodos y otros. Además, podemos incluir comentarios‘This adds a grid of i*j points starting in 0,0,0‘In order to do this we use two NESTED for loops, or flow structures implying repetition‘Note that every single iteration in the loop the variables have a different valueDim i, jDim maxX : maxX = 9Dim maxY : maxY = 9For i =0 To maxXFor j=0 To maxYRhino.AddPoint(array(i,j,0))NextNext

End Function

‘Fin de la función

Option Explicit pide a Rhino que mire que TODAS las variables se han declarado antes de usarse, esto esútil para verificar la corrección del script. Las líneas 2,3 y 5 son comentarios.Llamada a la subrutina principalComienzo de la subrutina, que abarca hasta la línea 18, cuando se cierra. Todo el bloque enrte la línea 9 y la 18 se considera subrutina.Método que dice a Rhino que no dibuje nada en la pantalla [apaga el refresco de la pantalla]Llamada a la función “DoSinglePoint”, bloque de código entre líneas 22 y 26. Rhino ejecutará todo el código contenido ente dichas líneas antes de proceder a ejecutar la línea 15 [esto es, “salta a la función”].Llamada a la función “DoPointGrid”, bloque de código entre líneas 29 y 42.Método que dice a Rhino que ya puede dibujar de nuevo [reactiva el refresco de la pantalla]Comienzo de la función DoSinglePoint, que se llama en la línea 14. Comando que añade un punto en 0,0,0. Fíjate en la palabra array: está creando un conjunto con tres números.Fin de la función, ahora Rhino ya puede ejecutar la línea 15 [“salta” de nuevo a la subrutina].Comienzo de la función DoPointGrid, que se llama en la línea 15.Declaraciones de las variables que se van a usar en el script.Dos loops [no te preocupes, ya iremos viendo qué significa eso] que crean filas y columnas de puntos.Fin de la función, ahora Rhino puede ejecutar la línea 16 [“salta” a la subrutina]

12345678910111213141516171819202122232425262728293031323334353637383940414243

1 -5

69

1214

15172224252934 -3637-4142

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULOS BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI[O]LOGICS

[ 107 ]

Page 108: Rhinoceros Algorithmic Design Manual

II. PROGRAMACIÓN Y TOPOLOGÍA 1. CodeMonkey Code Monkey [vulgarmente “monkey”] es actualmente el mejor editor de scripts para Rhino. Incluye el editor, compila-dor y “debugger”, herramienta que permite localizar y corregir errores en el código. En realidad, todo lo necesario para escribir scripts es un editor de texto (notePad, wordPad, o cualquier otro). Este texto es después interpretado, compilado y ejecutado por los “intérpretes”, compilador y motor correspondientes. Rhinoceros incorpora su propio editor de texto, accesible mediante el comando “_editscript”. Monkey incluye, además del editor, funciones como autocompletar, ayuda dinámica y un “debugger”. El debugger es un programa que ayuda a en-contrar errores en el script, especialmente de sintaxis, por lo que te será sencillo corregir tus scripts durante su ejecución, mediante la visualización de variables en tiempo real y la detección de errores de sintaxis. El “highlighter”, o reconocimiento automático de palabras reservadas, permite que éstas aparezcan automáticamente en colores que identificarán varios tipos: generalmente azul para palabras de vBasic, gris para los comentarios, verde para cadenas de caracteres, y negro para el resto en general.

1.1. Opciones principales de CodeMonkey Las principales operaciones que se pueden realizar con CodeMonkey son: - Editar scripts: en la ventana de edición, donde debes copiar los scripts que hemos escrito anteriormente. - Consultar la librería, en la ventana de métodos nativos de Rhinoceros. - Consultar la ayuda, haciendo doble click sobre el método que se quiere consultar. La ayuda es muy sencilla y explica-tiva, e incluye lo siguiente: · Nombre del comando, con una breve descripción de su funcionamiento · Sintaxis y uso: atributos [input] y valores de retorno [output] · Ejemplo, que puedes copiar y pegar directamente en la ventana del editor de scripts. - Para ejecutar un script usa el botón de play; esto ejecutará el script actual [la pestaña activa]. - “Debug” los scripts consite en encontrar fallos en el script. Como hemos dicho, esto se realiza visualizando los calores de las variables en líneas seleccionadas y el estado del script en cada momento. De esta manera podemos encontrar errores comunes tales como: · Confusión entre tipos de datos; por ejemplo, una variable debería tener valor numérico y contiene una cade-na de caracteres o alfabéticos. · Errores en la definición de variables, y sus nombres. · Errores de sintaxis; por ejemplo, en símbolos, “(),=.” y otros · Errores en el paso de variables en las funciones.

1.2. Instalando Monkey Si usas la versión SR5 de Rhinoceros, no es necesario que instales Monkey, será el editor de scripts predeterminado. Sin embargo, si eres usuario de SR4, deberáas descargarte el software de la página de McNeel. Monkey es un plugin gratuito. Una vez instalado, deberá aparecer por defecto en la barra de menús; si no es así, ve a >Herramientas>Opciones>Plugins, y asegúrate de que está cargado correctamente y que se carga de manera automática en cada apertura del programa.

[Fig 5. Comando para abrir el editor CodeMonkey]

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULOS BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI [O] LOGICS

[ 108 ]

Page 109: Rhinoceros Algorithmic Design Manual

1.3. Interfaz de CodeMonkey Como ves en las figuras 2 y 3, la interfaz es muy clara. Es probable que únicamente necesites usar los botones princi-pales, que dan acceso a las funciones de edición, corrección y ejecución de scripts. Para abrir Monkey, ve a la pestaña que aparece en la barra de menún, “Monkey”, y haz click sobre “Monkey Editor”.

Crear nuevo script

Abrir script

Guardar scriptGuardar scripts activos en pestañas

Guardar como...

Ejecutar scriptCorregir script

Colocar punto de análisis

[Fig 6. Elementos principales de la interfaz de Code Monkey]

[Fig 7. Menú de Monkey con los principales iconos de comando]

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULOS BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI[O]LOGICS

[ 109 ]

Page 110: Rhinoceros Algorithmic Design Manual

2. Vectores y puntos: una sencilla base de geometrías complejas 2.1. Puntos En Rhinoceros, los puntos son las entidades geométricas más sencillas que hay. Tienen tres componentes, que corres-ponden a su localización x,y,z respecto del plano de trabajo universal. Un punto se describe, por tanto de la siguiente manera: Dim aPoint aPoint = array(x,y,z)

Si quisiéramos definir un punto en 10,3,7, por ejemplo, lo podríamos hacer de la siguiente manera creando una array con las coordenadas del mismo: Dim x,y,z, aPoint x = 10 y= 3 z = 7 aPoint = array(x,y,z) Rhino.AddPoint aPoint

[Fig 8 Punto en espacio cartesiano R3: A(a1,a2,a3)]

[Fig 10 Punto en espacio cartesiano R3: A(a1,a2,a3)]

[Fig 9. Vector v en espacio cartesiano R3: v(v1, v2,v3). El punto de aplicación (base) del vector es (0,0,0) por defecto.]

[Fig 11. Vector v en espacio cartesiano R3: v(v1, v2,v3). El punto de aplicación (base) del vector es (0,0,0) por defecto.]

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULOS BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI [O] LOGICS

[ 110 ]

Page 111: Rhinoceros Algorithmic Design Manual

2.2. Vectores Los vectores también se describen por conjuntos de coordenadas, arrays que contienen (x,y,z). En este sentido, son exactamente iguales que los puntos, y tienen el mismo comportamiento. La única diferencia estriba en que, por defecto, todos los vectores están basados en (0,0,0). Las operaciones más sencillas con vectores incluyen suma, diferencia, y escalado, que responden a los siguientes mé-todos: - Suma: VectorAdd (vec1,vec2) - Sustracción: VectorSubtract (vec1,vec2) - Escalado: VectorScale (vec1,vec2) Donde vec1 y vec2 son arrays de 3 componentes, exactamente igual que en el caso de puntos.

3. Curvas Podemos entender las curvas como entidades controlables a partir de puntos. Las líneas, polilíneas y curvas están basa-das en puntos de control, que definen su geometría, continuidad, y tangencias. Los conceptos básicos que debemos conocer en curvas son los siguientes: - Dominio de una curva: es el conjunto de valores reales que resultan que hace que se cumpla la ecuación de la misma. En f(x) = axn+bx(n-1)+(...)+g, por ejemplo, el dominio es el conjunto de valores de x que hacen que f(x) tenga un valor real. Esto mismo aplica a las curvas NURBS, si bien hemos de ser conscientes que las curvas tienen un principio y un final determi-nado, y que sus ecuaciones, a las que no podemos acceder, son más complejas. Sin embargo, existe una clara corresponden-cia entre dichos valores y la curva, que podemos ver en la figura 12.

- Puntos de control: puntos que definen el polígono de control, a partir del cual se define, en función del tipo de conti-nuidad [es decir, el grado], la curva final. Con RhinoScript es relativamente sencillo obtener este tipo de información, de la misma manera que somos capaces de acceder a los datos de X,Y,Z, de un punto y modificarlo. Las operaciones más comunes son las siguientes: · Evaluar el dominio de una curva. · Crear puntos sobre curvas con RhinoScript. · Crear curvas a través de puntos o usando los puntos como puntos de control de la curva. De todos modos, este tipo de operaciones los veremos a continuación en el siguiente apartado, “Topología de la Geo-metría NURBS II, Geometría computacional básica 2”.

En los scripts que siguen verás que cada una de las funciones incluye a la anterior, de modo que puedes “activar” y “des-activar” los sucesivos pasos a medida que vas avanzando. Te recomiendo que borres los objetos creados en cada uno antes

dom(1)valor máximo dominio

dom(0)valor mínimo dominio

dom(0)+4*step

dom(0)+5*step

dom(0)+6*step

dom(0)+7*step

dom(0)+3*step

dom(0)+2*step

dom(0)+1*step

P0

P1

P2

P3

P4

P5

P6

P7

P8

[Fig 12. Concepto de dominio de una curva. Los valores Dom(0) [min] y Dom(1) [max] no son nece-sariamente 0 y 1 y son asignados por Rhino.

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULOS BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI[O]LOGICS

[ 111 ]

Page 112: Rhinoceros Algorithmic Design Manual

de ejecutar el siguiente, para que puedas comparar los resultados sin miedo a esquivocarte.

El código está comentado, de manera que puedes entender cada paso una vez lo vayas copiando en el editor de scripts.

III. SCRIPTS RELACIONADOS

En este punto, presentamos dos scripts. El primero incluye funciones de creación de puntos. El segundo, análisis de curvas, dominios y puntos de control. Ambos comienzan por “Option Explicit”.

1. Puntos Como verás, la creación de puntos es muy sencilla, y se realiza mediante el método [función nativa] de Rhino “Rhino.AddPoint”. Esta función requiere de una matriz de componentes (x,y,z), como hemos visto anteriormente. La subrutina Main tiene una serie de funciones, crecientes en complejidad.

DoSinglePoint añade un punto al modelo en las coordenadas dadas. Prueba a cambiarlas y ejecutar el script. Para eje-cutar una única función descoméntala, y comenta el resto. Haz esto con cada una de las funciones cambiando los valores. Do-PointGrid utiliza dos “loops” [estructuras For...Next] para crear una malla de puntos, lo que hace por medio de filas y columnas [crea una columna con j puntos, luego otra... hasta que hace i columnas con j puntos cada una, en total n = j*i puntos].

El siguiente paso es crear una malla tridimensional, para lo cual DoPointGridWithHeight añade un valor distinto de cero para la componente Z del punto. la fórmula utilizada para crear Z puede cambiar. Prueba a cambiarla para ver los distintos resultados.

Una vez que hemos manejado puntos en 3D, podemos proceder a crear líneas. Para ello, examina DoLine, una función que crea una línea a partir de dos puntos definidos explícitamente por su punto origen y punto final [cada uno de ellos por sus coordenadas X,Y,Z agrupadas en una array]. DoLines crea líneas a partir de los puntos en una recta, de la misma manera que creábamos los puntos en la función DoPointGrid. Fíjate en que hay que esperar a tener al menos dos puntos creados para proceder a una línea [para tener en cuenta esta condición usamos el código condicional If [condición] then ... End If.

Finalmente procedemos a crear una malla de líneas, siguiendo el mismo procedimiento que para DoLines, pero en ambas direcciones (esto es, en X y en Y). DoSimpleComponentGrid aprovecha los mismos puntos para crear una polilínea [la única diferencia estriba en que tenemos ahora un único conjunto de puntos]. Recuerda que para cerrar una polilínea debe-mos hacer coincidir el primer punto con el último; es decir, para un cuadrado tendremos 5 puntos [ya que el último será igual que el primero si queremos cerrar el polígono].

DoComplexComponentGrid crea, además del perímetro, una curva con los mismos puntos. Esta curva estará contenida dentro del perímetro. DoComplexComponentGridWithLoftSurface creará, además, una superficie entre las curvas anteriores, de manera que tendremos un inicio de volumetría.

2. Curvas La función ShowDomain muestra el concepto de dominio de una curva. Para ello, crea un punto en la curva y muestra, mediante un “textDot” o anotación, el valor del dominio en ese punto. El script requiere una curva, que deberá ser seleccio-nada por el usuario. Veremos más sobre curvas en el siguiente apartado.

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULOS BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI [O] LOGICS

[ 112 ]

Page 113: Rhinoceros Algorithmic Design Manual

1. Puntos Option Explicit‘Script written by <Adolfo Nadal [archiologics.com]>‘Script NOT copyrighted‘Script versión martes, 29 de junio de 2010 18:21:34

‘A series of VERY SIMPLE functions to demonstrate the VERY BASICS of NURBS geometry‘In later sessions we will explore how to enhance our lofting capabilitiesCall Main()Sub Main()

Rhino.EnableRedraw(False)‘Call DoSinglePoint‘Call DoSinglePointWithAnnotation‘Call DoPointGrid‘Call DoPointGridWithHeight‘Call DoLine‘Call DoLines‘Call DoLineGrid‘Call DoSimpleComponentGrid‘Call DoComplexComponentGridCall DoLoftSurface‘Call DoComplexComponentGridWithLoftSurfaceRhino.EnableRedraw(True)

End Sub

Function DoSinglePoint‘This adds a single point in 0,0,0‘We need to enter the 3D coordinates defining the point in an array (collection of objects)Rhino.AddPoint(array(0,0,0))

End Function

Function DoSinglePointWithAnnotation‘This adds a single point in 0,0,0‘We need to enter the 3D coordinates defining the point in an array (collection of objects)‘We also need to store the point in a variable in order to use its information later‘There is no need to use the “call” keyword when storing result values in variables‘To DECLARE variables it is necessary to use the dim keywordDim ptpt = (array(0,0,0))Call Rhino.AddPoint(pt)Call Rhino.AddTextDot(“Point located at: “ & pt(0) & “,” & pt(1) & “,” & pt(2) ,pt)

End Function

Function DoPointGrid‘This adds a grid of i*j points starting in 0,0,0‘In order to do this we use two NESTED for loops, or flow structures implying repetition‘Note that every single iteration in the loop the variables have a different valueDim i, jDim maxX : maxX = 9Dim maxY : maxY = 9For i =0 To maxXFor j=0 To maxYRhino.AddPoint(array(i,j,0))NextNext

End Function

Function DoPointGridWithHeight‘This adds a grid of i*j points starting in 0,0,i*j‘In order to do this we use two NESTED for loops, or flow structures implying repetition‘Note that every single iteration in the loop the variables have a different valueDim i, jDim maxX : maxX = 9Dim maxY : maxY = 9

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULOS BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI[O]LOGICS

[ 113 ]

Page 114: Rhinoceros Algorithmic Design Manual

For i =0 To maxXFor j=0 To maxYRhino.AddPoint(array(i,j,i*j))NextNext

End Function

Function DoLine‘A straight line takes 2 points (beginning and end point of a segment)Call Rhino.AddLine(array(0,0,0),array(0,1,0))

End Function

Function DoLinesDim i, jDim maxX : maxX = 9Dim maxY : maxY = 9‘We need to make this call as many times as lines we want to have‘Note i and j start at 1, since we use i-1For i=1 To maxXFor j=1 To maxYCall Rhino.AddLine(array(i-1,j-1,0),array(i,j,0))NextNext

End Function

Function DoLineGridDim i, jDim maxX : maxX = 9Dim maxY : maxY = 9‘We need to make this call as many times as lines we want to have‘Note i and j start at 1, since we use i-1For i=1 To maxXFor j=1 To maxYCall Rhino.AddLine(array(i-1,j,0),array(i,j,0))Call Rhino.AddLine(array(i,j-1,0),array(i,j,0))NextNext

End Function

Function DoSimpleComponentGridDim i, jDim maxX : maxX = 9Dim maxY : maxY = 9Dim pt1,pt2,pt3,pt4‘We need to make this call as many times as lines we want to have‘Note i and j start at 1, since we use i-1‘Note also that, in order to close the polyline, we must introduce the first point as the last as wellFor i=1 To maxXFor j=1 To maxYpt1 = array(i-1,j-1,0)pt2 = array(i-1,j,0)pt3 = array(i,j,0)pt4 = array(i,j-1,0)Call Rhino.AddPolyline(array(pt1,pt2,pt3,pt4,pt1))NextNext

End Function

Function DoComplexComponentGridDim i, jDim maxX : maxX = 9Dim maxY : maxY = 9Dim pt1,pt2,pt3,pt4,pt5‘We need to make this call as many times as lines we want to have‘Note i and j start at 1, since we use i-1

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULOS BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI [O] LOGICS

[ 114 ]

Page 115: Rhinoceros Algorithmic Design Manual

‘Note also that, in order to close the polyline, we must introduce the first point as the last as well‘In this case we also introduce a curve that uses the same CONTROL points‘Since a polyline takes multiple points, the best practice is to create them and store them in varia-bles that we can use later onFor i=1 To maxXFor j=1 To maxYpt1 = array(i-1,j-1,0)pt2 = array(i-1,j,0)pt3 = array(i,j,0)pt4 = array(i,j-1,0)pt5 = array(i,j-1,j)Call Rhino.AddPolyline(array(pt1,pt2,pt3,pt4,pt1))Call Rhino.AddCurve(array(pt1,pt2,pt3,pt4,pt1))Call Rhino.AddCurve(array(pt1,pt2,pt3,pt5,pt1))NextNext

End Function

Function DoLoftSurface‘A loft surface takes at least 2 curves‘We need to create these and STORE them for future useDim curve1, curve2curve1 = Rhino.AddCurve(array(array(0,0,0),array(0,1,0),array(1,1,0),array(1,0,0),array(0,0,0)))curve2 = Rhino.AddPolyline(array(array(0,0,0),array(0,1,0),array(1,1,0),array(1,0,0),array(0,0,0)))Call Rhino.AddLoftSrf(array(curve1,curve2))

End Function

2. Curvas

Option Explicit‘Script written by Adolfo Nadal [archiologics.com]‘Script NOT copyrighted‘Script versión jueves, 01 de julio de 2010 12:40:53

‘A series of VERY SIMPLE functions to demonstrate the VERY BASICS of NURBS curves

Call Main()

Sub Main()Dim strCrv : strCrv = Rhino.GetObject (“Select the curve to be analyzed”,4)DoSinglePoint (strCrv)DoMultiplePoints (strCrv)ShowDomain(strCrv)

End Sub

Function DoSinglePoint(strCrv)Dim crvDomain : crvDomain = Rhino.CurveDomain(strCrv)Dim domain : domain = crvDomain(1)-crvDomain(0)Dim arrPt : arrPt = Rhino.EvaluateCurve(strCrv,crvDomain(0)+domain/2)Dim strPt : strPt = Rhino.AddPoint (arrPt)Call Rhino.ObjectColor(strPt,vbRed)

End Function

Function DoMultiplePoints(strCrv)Dim crvDomain : crvDomain = Rhino.CurveDomain(strCrv)Dim domain : domain = crvDomain(1)-crvDomain(0)Dim nrSteps : nrSteps = 10Dim domainStepSize : domainStepSize = domain/nrStepsDim iFor i= crvDomain(0) To crvDomain(1) Step domainStepSizeDim arrPt : arrPt = Rhino.EvaluateCurve(strCrv,i)Rhino.AddPoint arrPtNext

End Function

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULOS BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI[O]LOGICS

[ 115 ]

Page 116: Rhinoceros Algorithmic Design Manual

Function ShowDomain(strCrv)Dim pt : pt = Rhino.GetPoint(“point”)Dim curveParam : curveParam = Rhino.CurveClosestPoint(strCrv,pt)Dim ptOnCrv : ptOnCrv = Rhino.EvaluateCurve(strCrv,curveParam)Call Rhino.AddTextDot(“Parameter: “ & curveParam, ptOnCrv)

End Function

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULOS BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI [O] LOGICS

[ 116 ]

Page 117: Rhinoceros Algorithmic Design Manual

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULOS BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI[O]LOGICS

[ 117 ]

Page 118: Rhinoceros Algorithmic Design Manual

TOPOLOGÍA DE LA GEOMETRÍA NURBS II [Non-Uniform Rational Bezier Splines]

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULO BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI [O] LOGICS

[ 118 ]

Page 119: Rhinoceros Algorithmic Design Manual

[ 119 ]

Page 120: Rhinoceros Algorithmic Design Manual

I. GEOMETRÍA COMPUTACIONAL BÁSICA 2 - RECTAS Y CURVAS NURBS 1. El dominio de curvas en Rhino y Rhinoscript:

La representación del dominio de curvas en Rhinoceros responde a una serie de características y conceptos que debemos conocer si pretendemos crear scripts o rutinas que incluyan trabajo con líneas, polilíneas, curvas o cur-vas mixtas, sea cual sea su creación. Es importante resaltar asimismo que los conceptos que siguen aplican a todas las curvas por igual, con independencia de su grado o manera de creación. · En álgebra, el dominio de una curva se refiere al conjunto de valores de la variable independiente (normal-mente “x” para los cuales existe un valor real de la variable dependiente (normalmente “y”). Para más información, vuelve a ver la figura 12 del apartado anterior. · En geometría computacional, sea cual sea la representación de la curva, el dominio responde a la definición interna de la misma en R1 (es decir, en el espacio de la curva). Así pues, en Rhino 4 oscila entre 0 y 1, mientras que en Rhino 5 entre 0 y la longitud de la curva. En cualquier caso, 0 representa el origen de la curva, y 1 (o su longitud) el final de la misma. · El dominio responde a la curvatura de la curva, por lo que una división del dominio en n partes iguales no se traduce necesariamente en n segmentos de la misma longitud. · Debemos saber, a la hora de usar curvas para superficies, cuál es el origen y el final de la curva, porque esto influirá en comandos como “loft”, por ejemplo. El comando “_flip”, invierte el sentido de una curva.

2. Espacio R1 (curva) y espacio R3 (cartesiano): Así pues, parece obvio que podemos referirnos a los puntos de una curva aproximándonos a ellos de dos maneras distintas: por un lado, mediante su localización en el espacio, es decir, por sus coordenadas (X,Y,Z); por otro, por su posición en la curva, es decir, por su domino (d). Esto responde claramente a la diferencia entre R3 [espacio cartesiano] y R1 [espacio unidimensional de la curva]: · R1 es el espacio unidimensional de la curva, definido por un único valor [dominio] · R3 es el espacio tridimensional cartesiano, definido por tres valores [array(x,y,z)]

CURVE OBJECTMAIN PROPERTIES: ID, DOMAIN, DEGREE

- ID: UNIQUE IDENTIFIER ASSIGNED BY RHINO AT THE TIME OF CREATION- DOMAIN: INTERNAL DEFINITION OF A CURVE. IT IS A VALUE BETWEEN 0 & 1, WHERE 0 REPRESENTS THE START OF THE CURVE AND 1 THE END.IT DOES NOT REFER TO ITS LENGTH, RATHER TO ITS CURVATURE

CRV DOMAIN (0)<CRV DOMAIN (X)<...<CRV DOMAIN (Z)<CRV DOMAIN (1)

CRV DOMAIN (0)

CRV DOMAIN (X)

CRV DOMAIN (Y) CRV DOMAIN (Z)

CRV DOMAIN (1)[Fig 1. Dominio de una curva]

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULOS BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI [O] LOGICS

[ 120 ]

Page 121: Rhinoceros Algorithmic Design Manual

Option Explicit‘Script written by Adolfo Nadal‘Script copyrighted by archi[o]logics www.archiologics.com‘Script update jueves, 02 de febrero de 2012 9:02:43, V.0.0.0.

Call Main()Sub Main()

Dim strCrv : strCrv = Rhino.GetObject (“Select your curve”,4) Dim dom dom = Rhino.CurveDomain(strCrv) Dim begPt, finPt begPt = Rhino.EvaluateCurve(strCrv,dom(0)) finPt = Rhino.EvaluateCurve(strCrv,dom(1)) Rhino.AddPoint begPt Rhino.AddPoint finPt Rhino.Print “El inicio del dominio de la curva [dom(0) es: “ & dom(0) & “ y corresponde al punto: “ & Rhino.Pt2Str(begPt) Rhino.Print “El final del dominio de la curva [dom(0) es: “ & dom(1) & “ y corresponde al punto: “ & Rhino.Pt2Str(finPt)

End Sub

Por lo tanto, recuerda que cualquier punto de una curva puede expresarse de dos modos: (i) en referencia al espacio cartesiano [su posición x,y,z en el espacio], y (ii) en referencia a la curva a la que pertenece, mediante su dominio [que tomará un valor entre 0 y 1 en Rhino v4, o entre 0 y su longitud en Rhino v5].

3. Curvas a partir de puntos Rhinoceros permite la generación de una gran variedad de curvas, entre las que se encuentran: - Por puntos de control - Interpoladas [a través de puntos] - Interpoladas en superficie [la curva estará contenida en ella] - Por manejadores [define un punto y su tangencia] - Trazar [bosquejar] curvas: boceto - Trazar en malla poligonal/superficie - Cónicas - Promedios Todas estas curvas pueden modificarse una vez terminadas. La modificación se hace generalmente a partir de los pun-tos de control, bien por adición y substracción, bien por su modificación. Los puntos de control se comportan como objetos del dibujo, e incluyen una serie de propiedades., que siguen: - Posición - Peso: grado de influencia sobre la curvatura de la curva [a mayor peso, más cerca estará la curva de pasar por el punto de control]. Existen otras técnicas avanzadas de creación de curvas, tales como: - Fluir a lo largo de una superficie - Curvas UVN [aplicadas sobre superficies] Dichas técnica interpolan de una u otra manera la curva original sobre la superficie seleccionada. La primera admite guardado de historial, por lo que es muy útil a la hora de crear curvas sobre superficies complejas, como por ejemplo facha-das estructurales. La edición de las curvas se realiza, como hemos dicho, a partir de sus puntos de control, fácilmente accesi-bles tanto explícitamente [modelando] como implícitamente [a partir de RhinoScript].

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULOS BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI[O]LOGICS

[ 121 ]

Page 122: Rhinoceros Algorithmic Design Manual

II. SUPERFICIES Y POLISUPERFICIES EN RHINOCEROS 1. Direcciones en superficies - Direcciones U y V:

· Las superficies son más o menos rectangulares. Las superficies tienen tres direcciones, U, V y normal. Las direcciones U, V y normal se pueden visualizar con el comando Dir. Las direcciones U y V son como el tejido de ropa o de una tela. La dirección U se indica con la flecha roja y la dirección V con la flecha verde. La dirección normal se indica con flechas blancas. Las direcciones U, V y normal se corresponderían a las direcciones X, Y y Z de la superficie. · Estas direcciones se utilizan para el mapeado de texturas y la inserción de puntos de control. - Dirección normal: · En las superficies, la normal es una dirección que señala hacia la parte “exterior” o “superior” de la superficie, y es perpendicular a la superficie en el punto de cálculo. Para polisuperficies cerradas (cono, cilindro, caja, etc.) o sólidos de una superficie (esfera, toroide), la normal siempre está orientada “hacia fuera”. Sin embargo, en una superficie o polisuperficie abierta la dirección de la normal depende de cómo se creó y puede ser arbitraria. · El comando Dir muestra la dirección de la normal de un objeto.

Curva por puntos de control

Activar puntos de controlActivar puntos de edición/desactivar seleccionados

Insertar/Eliminar puntos de control

Simpli�car

Ocultar caras posteriores de polígono de control

De�nir peso de puntos de controlEliminar nodo

Añadir nodoEditar con manejadores

Cambiar modo de arrastre

Mover UVN, toque ligero UVNInsertar nodo/punto de edición

Cerrar curvas abiertasEliminar subcurva

Extraer subcurva

SubcurvaInsertar línea en curva

Booleana de curvas

Curva por interpolaciónCurva por interpolación en super�ciesCurva por manejadoresTrazarTrazar sobre malla

Extender/Empalmar/Acha�anar línea

Cónicas y parábolasHélice y espiral

Curvas promedio

[Fig 2. Herramientas de creación y edición de curvas - II]

[Fig 3. Dirección en una superficie]

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULOS BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI [O] LOGICS

[ 122 ]

Page 123: Rhinoceros Algorithmic Design Manual

2. Concepto y manejo de dominios de superficies en Rhinoscript · Al igual que en curvas, el dominio en superficies es la representación geométrica interna que nos permite obtener puntos sobre la superficie en R2 (es decir, sobre el “espacio binario” de la superficie). · Toda superficie tiene dos dominios, uno en la dirección “u” y otro en la dirección “v”, de manera que, median-te la combinación de dos parámetros “i” (correspondiente a u) y “j” (correspondiente a v), se puede hallar y calcular la posición de un punto en la superficie (que, de nuevo, puede expresarse en términos de R2 o R3). Coloquialmente podríamos decir que u y v corresponden a las componentes ”X” e “Y” sobre un plano [en el que sabemos, por ejemplo, que la componente Z es 0], pero sobre la superficie. · Para una polisuperficie, el dominio se calcula para cada una de las superficies componente, por lo que es muy conveniente modelar con superficies.

3. R2 y R3 [“espacio superficie” y espacio cartesiano] · R2 es el espacio bidimensional de la superficie [coordenadas implícitas a la geometría]. · R3 es el espacio tridimensional cartesiano, eso ya lo sabíamos. de anteriores descripciones.

· Como sabemos, cualquier punto de una superficie puede expresarse de dos modos: (i) en referencia al espa-cio cartesiano (su posición x,y,z en el espacio en las coordenadas de dibujo y coordenadas globales), y (ii) en referencia a la superficie a la que pertenece, mediante su dominio [mediante dos valores entre DomMin y DomMax, si dichos valores no se han normalizado para que sean DomMin = 0 y DomMax = 1]. · Normalizado: con la opción Sí, los intervalos de los parámetros U y V se escalan para que los valores resultan-tes estén entre cero y uno (en lugar de usar el valor del parámetro real). Esta opción es útil cuando desea saber el por-centaje del espacio de los parámetros del punto designado sin tener que calcularlo según el dominio de la superficie. Con la opción No, se proporcionan los valores de los parámetros U y V no escalados. Véase también Dominio. · Nota: Cuando se selecciona una polisuperficie, Rhino calcula el resultado de la superficie componente en la posición designada. Si la superficie es recortada, Rhino usará la superficie no recortada.

[Fig 4. Expresión de superficies y puntos sobre superficies. Dominio]

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULOS BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI[O]LOGICS

[ 123 ]

Page 124: Rhinoceros Algorithmic Design Manual

4. Creación de superficies, puntos y nubes de puntos, curvas

- Los métodos más comunes de creación de superficies son: · Superficies a partir de puntos: rectangulares, por 3 ó 4 puntos, ajustar plano a través de puntos. · Superficies a partir de curvas: loft, sweep extrusión, patchwork, revolución, a partir de una red de curvas. · De la misma manera pueden crearse polisuperficies y sólidos. Dejaremos la edición de sólidos por el moment, ya que éstos requieren de un conocimiento propio de modelado con caras que no incluimos en este manual. Si eres un usuario habitual de programas de modelado 3D para animación [como por ejemplo Autodesk Maya o Autodesk 3DMax] entonces es probable que te interesen, pero los encontrarás limitados con respecto a las limitaciones de di-chos programas.

- Precauciones usando el comando “loft”: · Como norma general, las curvas deben tener el mismo número de puntos de control · Asimismo, hemos de ser cuidadosos con el sentido de las mismas, así como su alineación.

III. SCRIPTS RELACIONADOS Llegados a este punto, es interesante ver cómo aplican todos estos coneptos al diseño implícito y la generación auto-mática de geometría a través de la programación. De nuevo, se presenta un script con una serie de funciones [que puedes ir activando y desactivando a tu gusto] que describo brevemente a continuación:

- La subrutina Main contiene todas las funciones que puedes activar y desactivar. Recuerda una vez más que para desactivarlas, lo que realmente hacemos es comentar la línea donde ésta se llama, de manera que RhinoScript salte la línea y no ejecute la función [dado que nunca se llama]. - DoSinglePoint crea un punto en el medio de la superficie. Hace esto calculando los rangos de dominio, calcu-lando su punto medio [del dominio] y evaluando la superficie para ese conjunto de dominios [matriz con dos valores de dominio, uno para u, otro para v]. Al evaluar [Rhino.EvaluateSurface] la superficie, RhinoScript nos devuelve las coordenadas del punto en R3, por lo que ya podemos añadirlo al modelo mediante AddPoint. Si además asignamos el resultado de esa operación a una variable, somos capaces de acceder a sus propiedades, y cambiar el color del objeto punto.

Superficie por 3 ó 4 puntosFILA 1

FILA 2

FILA 3

Superficie por curvas de bordeSuperficie a partir de curvas planasSuperficie rectangularExtruir curva

Loft - transiciónSuperficie por network de curvasSuperficie parcheSweep 1/2 railes

Superficie de revoluciónCubrir objetos con superficieMapa de alturas desde imagenSuperficie desde rejilla de puntos

[Fig 5. Principales herramientas relativas a generación y ectracción de información de superficies]

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULOS BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI [O] LOGICS

[ 124 ]

Page 125: Rhinoceros Algorithmic Design Manual

- DoSinglePointWithNormal y DoSinglePointWithNormalScaled crea, además del punto anterior, otro en la nor-mal a la superficie en dicho punto. En el segundo caso se escala la normal. En el código verás que hay una serie de pasos que hay que seguir para conseguirlo: · En primer lugar, es importante saber que el comando SurfaceFrame retorna una serie de valores, de los cuales [en este caso] nos interesa solamente la normal. Visita la ayuda para saber exactamente qué devuelve la función. · La normal, como buen vector que es, está basado en (0,0,0). Por esta razón, si calculamos la normal y creamos un punto con sus coordenadas, veremos que está muy cerca del origen de coordenadas. Para solucionar esto, de-bermos sumar el normal al punto de la superficie donde hemos obtenido la normal. De esta manera, el vector normal estará localizado en su sitio. · Por último, no hay garantía de que el vector normal sea unitario. Recuerda que si quieres que lo sea, deberás hacerlo unitario antes de moverlo a su sitio, de otra manera el escalado se realizará sobre las coordenadas del resul-tante de la suma y verás un resultado incorrecto. Los pasos a seguir son, por tanto:

(i) Obtener un punto en la superficie. Usa el método Rhino.EvaluateSurface. (ii) Hallar el SurfaceFrame en ese punto. (iii) Elegir solamente la información que precisamos, consultar la ayuda si es necesario. (iv) Escalar el vector por su longitud para que resulte unitario [opcional]. Usa el método Rhino.VectorS-cale (arrVec,arrayScaleFactors). (v) Volver a escalar el vector a una longitud determinada [opcional] (vi) Mover el vector a su sitio sumandolo a la posición del punto original. Usa el método Rhino.Vecto-rAdd (arrVec1,arrVec2).

· Prueba el siguiente dummy de script para reforzar estos conceptos.

Option Explicit‘Script written by Adolfo Nadal‘Script copyrighted by archi[o]logics www.archiologics.com‘Script update viernes, 03 de febrero de 2012 12:12:19, V.0.0.0.

Call Main()Sub Main() Dim strPt1,strPt2 strPt1 = Rhino.GetObject (“Select Point1”,1) strPt2 = Rhino.GetObject (“Select Point2”,1) Dim arrpt1, arrpt2 arrPt1 = Rhino.PointCoordinates (strPt1) arrPt2 = Rhino.PointCoordinates (strPt2) Dim arrPt3 arrPt3 = Rhino.AddVector (arrPt1,arrPt2) Dim strPt3 strPt3 = Rhino.AddPoint(arrPt3)

End Sub

- DoMultiplePoints y las subsiguientes realizan las mismas operaciones que sus correspondientes funciones pero con más puntos. Observa la manera de hallar los puntos mediante la definición de un “step”, la longitud del segmento en el dominio para ir incrementando su valor. El número de pasos influirá en la longitud de dicho segmento, lo que tendrá su correspondencia en la distancia entre cada punto en la superficie final. - Por último, showDomain muestra el dominio de la superficie a efectos prácticos.

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULOS BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI[O]LOGICS

[ 125 ]

Page 126: Rhinoceros Algorithmic Design Manual

Option Explicit‘Script written by Adolfo Nadal [archiologics.com]‘A series of VERY SIMPLE functions to demonstrate the VERY BASICS of NURBS surfaces

Call Main()

Sub Main()Dim strSrf : strSrf = Rhino.GetObject (“Select the surface to be analyzed”,8)Dim scaleFactor : scaleFactor = 0.2Call DoSinglePoint (strSrf)Call DoSinglePointWithNormal(strSrf)Call DoSinglePointWithNormalScaled(strSrf,scaleFactor)Call DoMultiplePoints (strSrf)Call DoMultiplePointsWithNormal (strSrf)Call DoMultiplePointsWithNormalScaled (strSrf,scaleFactor)ShowDomain(strSrf)

End Sub

Function DoSinglePoint(strSrf)‘There exist two directions, U and V, therefore 2 domains‘Note we name those with 0 for U and 1 for VDim Udomain : Udomain = Rhino.SurfaceDomain(strSrf,0)Dim Vdomain : Vdomain = Rhino.SurfaceDomain(strSrf,1)Dim minUDomain : minUDomain = UDomain(0)Dim maxUDomain : maxUDomain = UDomain(1)Dim minVDomain : minVDomain = VDomain(0)Dim maxVDomain : maxVDomain = VDomain(1)‘Create a point in the middle of the surfaceDim arrPt : arrPt = Rhino.EvaluateSurface(strSrf,array((maxUDomain+minUDomain)/2,(minVDomain+maxVDomain)/2))Dim strPt : strPt = Rhino.AddPoint (arrPt)Call Rhino.ObjectColor(strPt,vbRed)

End Function

Function DoSinglePointWithNormal(strSrf)‘There exist two directions, U and V, therefore 2 domains‘Note we name those with 0 for U and 1 for VDim Udomain : Udomain = Rhino.SurfaceDomain(strSrf,0)Dim Vdomain : Vdomain = Rhino.SurfaceDomain(strSrf,1)Dim minUDomain : minUDomain = UDomain(0)Dim maxUDomain : maxUDomain = UDomain(1)Dim minVDomain : minVDomain = VDomain(0)Dim maxVDomain : maxVDomain = VDomain(1)‘Create a point in the middle of the surfaceDim arrPt : arrPt = Rhino.EvaluateSurface(strSrf,array((maxUDomain+minUDomain)/2,(minVDomain+maxVDomain)/2))Dim strPt : strPt = Rhino.AddPoint (arrPt)Call Rhino.ObjectColor(strPt,vbRed)‘How do we obtain a normal? Use Surface frame, which returns many things! (see Monkey help)Dim srfFrame : srfFrame = Rhino.SurfaceFrame (strSrf, array((maxUDomain+minUDomain)/2,(minVDomain+maxVDomain)/2))Dim arrNormalPt : arrNormalPt = srfFrame(3)‘But, as all other, this vector is based on (0,0,0), we need to “translate” it to its actual position‘This is, relative to arrPt‘So we add both vectors (remember: points and vectors behave the same way: arrays of 3 components)arrNormalPt = Rhino.VectorAdd(arrPt,arrNormalPt)Dim strNormalPt : strNormalPt = Rhino.AddPoint(arrNormalPt)Call Rhino.ObjectColor(strNormalPt,vbGreen)

End Function

Function DoSinglePointWithNormalScaled(strSrf,scaleFactor)‘There exist two directions, U and V, therefore 2 domains‘Note we name those with 0 for U and 1 for VDim Udomain : Udomain = Rhino.SurfaceDomain(strSrf,0)Dim Vdomain : Vdomain = Rhino.SurfaceDomain(strSrf,1)

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULOS BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI [O] LOGICS

[ 126 ]

Page 127: Rhinoceros Algorithmic Design Manual

Dim minUDomain : minUDomain = UDomain(0)Dim maxUDomain : maxUDomain = UDomain(1)Dim minVDomain : minVDomain = VDomain(0)Dim maxVDomain : maxVDomain = VDomain(1)‘Create a point in the middle of the surfaceDim arrPt : arrPt = Rhino.EvaluateSurface(strSrf,array((maxUDomain+minUDomain)/2,(minVDomain+maxVDomain)/2))Dim strPt : strPt = Rhino.AddPoint (arrPt)Call Rhino.ObjectColor(strPt,vbRed)‘How do we obtain the normal? We use the Surface frame, which returns many things! (see Monkey help)Dim srfFrame : srfFrame = Rhino.SurfaceFrame (strSrf, array((maxUDomain+minUDomain)/2,(minVDomain+maxVDomain)/2))Dim arrNormalPt : arrNormalPt = srfFrame(3)‘Before moving the point we need to scale it, otherwise, it will be displaced!!!!!!‘Should you have any question or coment on this, do not hesitate to ASKarrNormalPt = Rhino.VectorScale(arrNormalPt,scaleFactor)‘As all other vectors, it is STILL -despite the scaling!!!- based on (0,0,0), so we need to “transla-te” it to its actual position‘This is, relative to arrPt‘So we add both vectors (remember points and vectors behave the same way, just arrays of 3 components)arrNormalPt = Rhino.VectorAdd(arrPt,arrNormalPt)Dim strNormalPt : strNormalPt = Rhino.AddPoint(arrNormalPt)Call Rhino.ObjectColor(strNormalPt,vbGreen)

End Function

Function DoMultiplePoints(strSrf)‘There exist two directions, U and V, therefore 2 domains‘Note we name those with 0 for U and 1 for VDim Udomain : Udomain = Rhino.SurfaceDomain(strSrf,0)Dim Vdomain : Vdomain = Rhino.SurfaceDomain(strSrf,1)Dim minUDomain : minUDomain = UDomain(0)Dim maxUDomain : maxUDomain = UDomain(1)Dim minVDomain : minVDomain = VDomain(0)Dim maxVDomain : maxVDomain = VDomain(1)‘FROM HERE IT DIFFERS FROM DOSINGLEPOINT: WE NEED MORE INFODim srfUDomain : srfUDomain = maxUDomain-minUDomainDim srfVDomain : srfVDomain = maxVDomain-minVDomain‘Let us decide how many “divisions” we need in each directionDim nrUSteps : nrUSteps = 5Dim domainUStepSize : domainUStepSize = srfUDomain/nrUStepsDim nrVSteps : nrVSteps = 5Dim domainVStepSize : domainVStepSize = srfVDomain/nrVSteps‘Let us use those in order to populate the surface with points‘In vbScript: “give me a point and i will move the world”Dim i, jFor i= minUDomain To maxUDomain Step domainUStepSizeFor j= minVDomain To maxVDomain Step domainVStepSizeDim arrPt : arrPt = Rhino.EvaluateSurface(strSrf,array(i,j))Rhino.AddPoint arrPtNextNext

End Function

Function DoMultiplePointsWithNormal(strSrf)‘There exist two directions, U and V, therefore 2 domains‘Note we name those with 0 for U and 1 for VDim Udomain : Udomain = Rhino.SurfaceDomain(strSrf,0)Dim Vdomain : Vdomain = Rhino.SurfaceDomain(strSrf,1)Dim minUDomain : minUDomain = UDomain(0)Dim maxUDomain : maxUDomain = UDomain(1)Dim minVDomain : minVDomain = VDomain(0)Dim maxVDomain : maxVDomain = VDomain(1)‘FROM HERE IT DIFFERS FROM DOSINGLEPOINT: WE NEED MORE INFODim srfUDomain : srfUDomain = maxUDomain-minUDomainDim srfVDomain : srfVDomain = maxVDomain-minVDomain

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULOS BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI[O]LOGICS

[ 127 ]

Page 128: Rhinoceros Algorithmic Design Manual

‘Let us decide how many “divisions” we need in each directionDim nrUSteps : nrUSteps = 5Dim domainUStepSize : domainUStepSize = srfUDomain/nrUStepsDim nrVSteps : nrVSteps = 5Dim domainVStepSize : domainVStepSize = srfVDomain/nrVSteps‘Let us use those in order to populate the surface with points‘In vbScript: “give me a point and i will move the world”Dim i, jFor i= minUDomain To maxUDomain Step domainUStepSizeFor j= minVDomain To maxVDomain Step domainVStepSizeDim arrPt : arrPt = Rhino.EvaluateSurface(strSrf,array(i,j))Rhino.AddPoint arrPtDim srfFrame : srfFrame = Rhino.SurfaceFrame (strSrf, array(i,j))Dim arrNormalPt : arrNormalPt = srfFrame(3)arrNormalPt = Rhino.VectorAdd(arrPt,arrNormalPt)Dim strNormalPt : strNormalPt = Rhino.AddPoint(arrNormalPt)Call Rhino.ObjectColor(strNormalPt,vbGreen)NextNext

End Function

Function DoMultiplePointsWithNormalScaled(strSrf,scaleFactor)‘There exist two directions, U and V, therefore 2 domains‘Note we name those with 0 for U and 1 for VDim Udomain : Udomain = Rhino.SurfaceDomain(strSrf,0)Dim Vdomain : Vdomain = Rhino.SurfaceDomain(strSrf,1)Dim minUDomain : minUDomain = UDomain(0)Dim maxUDomain : maxUDomain = UDomain(1)Dim minVDomain : minVDomain = VDomain(0)Dim maxVDomain : maxVDomain = VDomain(1)‘FROM HERE IT DIFFERS FROM DOSINGLEPOINT: WE NEED MORE INFODim srfUDomain : srfUDomain = maxUDomain-minUDomainDim srfVDomain : srfVDomain = maxVDomain-minVDomain‘Let us decide how many “divisions” we need in each directionDim nrUSteps : nrUSteps = 5Dim domainUStepSize : domainUStepSize = srfUDomain/nrUStepsDim nrVSteps : nrVSteps = 5Dim domainVStepSize : domainVStepSize = srfVDomain/nrVSteps‘Let us use those in order to populate the surface with points‘In vbScript: “give me a point and i will move the world”Dim i, jFor i= minUDomain To maxUDomain Step domainUStepSizeFor j= minVDomain To maxVDomain Step domainVStepSizeDim arrPt : arrPt = Rhino.EvaluateSurface(strSrf,array(i,j))Rhino.AddPoint arrPtDim srfFrame : srfFrame = Rhino.SurfaceFrame (strSrf, array(i,j))Dim arrNormalPt : arrNormalPt = srfFrame(3)‘Remember to scale before the addition takes placearrNormalPt = Rhino.VectorScale(arrNormalPt,scaleFactor)arrNormalPt = Rhino.VectorAdd(arrPt,arrNormalPt)Dim strNormalPt : strNormalPt = Rhino.AddPoint(arrNormalPt)Call Rhino.ObjectColor(strNormalPt,vbBlue)NextNext

End Function

Function ShowDomain(strSrf)Dim pt : pt = Rhino.GetPoint(“point”)Dim arrSrfParam : arrSrfParam = Rhino.SurfaceClosestPoint(strSrf,pt)Dim ptOnCrv : ptOnCrv = Rhino.EvaluateSurface(strSrf,arrSrfParam)Call Rhino.AddTextDot(“Parameter U: “ & arrSrfParam(0) & “, Parameter V: “ & arrSrfParam(1), ptOnCrv)

End Function

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULOS BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI [O] LOGICS

[ 128 ]

Page 129: Rhinoceros Algorithmic Design Manual

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULOS BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI[O]LOGICS

[ 129 ]

Page 130: Rhinoceros Algorithmic Design Manual

SUPERFICIES Y COMPONENTESdiseño paramétrico con scripting

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULO BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI [O] LOGICS

[ 130 ]

Page 131: Rhinoceros Algorithmic Design Manual

[ 131 ]

Page 132: Rhinoceros Algorithmic Design Manual

I. GEOMETRÍA COMPUTACIONAL BÁSICA 3 - SUPERFICIES Y COMPONENTES 1. Qué son y para qué sirven Los componentes son familias o grupos de elementos que tienen un comportamiento determinado y una dependen-cia geométrica definida. Esto significa que, para componentes descritos a partir de, por ejemplo, cuatro puntos, podemos obtener infinitas variaciones dentro de su misma lógica [esto es, podríamos definir un conjunto de elementos geométricos que comparten la propiedad de poder ser creados y/o definidos a partir de cuatro puntos cualesquiera]. La figura 1 ilustra de manera muy sencilla este concepto. - Por ejemplo, un cubo y un prisma rectangular cualquiera pueden ser instancias de la misma familia de componentes si los hemos creado con base a 4 puntos de una cara y la altura del mismo. La variación de la colocación de estos puntos nos da infinitas posibilidades, si bien todas ellas responden a la misma familia. Cada una de las polisuperficies obtenidas será un componente.

Obviamente, podemos [y debemos!] crear componentes más complejos, que reflejen condiciones proyectuales u otras, tales como: · Condiciones atmosféricas · Condiciones de programa · Condiciones constructivas · Condiciones estructurales · Condiciones estéticas · Cualquier otra condición que se te ocurra Según vayas ganando destreza en la programación podrás implementar sistemas que incorporen condiciones más complejas, o importar y exportar información de archivos de texto, excel, u otros. Asimismo, serás capaz de crear animacio-nes y sistemas paramétricos complejos. Es posible que, incluso, estés interesado en el diseño algorítmico [de hecho, si estás leyendo este manual, es muy probable que así sea].

Durante el desarrollo de los siguientes temas iremos destacando posibles formas de interactuación, así como incrementaremos la dificultad de los ejercicios y el tratamiento de geometría. Pero recuerda, no se trata de crear formas complicadas, sino complejas; esto es, no gratuitas, sino “informadas”, es decir, que respondan a condiciones externas u otras, como acabamos de explicar hace tan solo un momento.

2. La superficie como base para componentes En el ejemplo de la figura 1, hemos reconocido nuestra capacidad de crear componentes a partir de elementos geomé-tricos muy simples, en este caso puntos. Por tanto, si somos capaces de obtener información de puntos de cualquier ente geométrico, podremos reproducir dichos componentes sobre, por ejemplo, una malla o una superficie. De esta forma ha-

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULOS BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI [O] LOGICS

[ 132 ]

Page 133: Rhinoceros Algorithmic Design Manual

cemos posible crear componentes en superficies, y se hace fundamental ser capaces de obtener información depuntos de superficies y otras entidades geométricas, métodos que hemos analizado y desarrollado anteriorment en el punto anterior. ya ves que es muy importante manejar con fluidez los conceptos de dominio y normal que hemos visto en la sesión anterior. Recordemos brevemente cómo obtener puntos de una superficie: · Los puntos se obtendrán a partir de una superficie mediante su evaluación en unos parámetros de dominio determinados [sus coordenadas (u,v)] en el espacio R2 de la superficie del caso. · Ya sabes que los métodos rhinoScript que debes emplear son: Rhino.EvaluateSurface (strObject,arrParameter); Evalúa una superficie en unos parámetros u,v. Devuelve una matriz con las coordenadas del punto en R3. En error, devuelve el valor “Null”. Rhino.SurfaceDomain(strObject, intDirection); Devuelve el dominio de una superficie en la dirección especificada. En errod, “Null” Requiere la dirección para U o V; 0 = U, o 1 = V.

Aun a riesgo de ser excesivamente insistentes, incluyo otro ejemplo del uso del método Rhino. SurfaceDomain [recuer-da que el lenguaje natural para la programación es, por excelencia, el inglés]:

Const rhObjectSurface = 8Dim strObject, arrDomU, arrDomVstrObject = Rhino.GetObject(“Select a surface”, rhObjectSurface)If Rhino.IsSurface(strObject) Then

arrDomU = Rhino.SurfaceDomain(strObject, 0)arrDomV = Rhino.SurfaceDomain(strObject, 1)Rhino.Print “Domain in U direction: “ & CStr(arrDomU(0)) & “ to “ & CStr(arrDomU(1))Rhino.Print “Domain in V direction: “ & CStr(arrDomV(0)) & “ to “ & CStr(arrDomV(1))

End If

Verás que creamos una serie de superficies. El comando que utilizamos es “_Loft”, y lo llamaremos desde RhinoScript con el método Rhino.Command “comando”,0. El 0 significa que el comando no se imprimirá en la pantalla, por lo que su ejecución será más rápida y eficiente.

· Rhino.AddLofSurface sería una opción a la hora de crear superficies a partir de curvas. Sin embargo, ajustar los puntos de costura es difícil. Por ello emplearemos la línea de comandos directamente. · También podemos emplear Rhino.AddSrfPt, lo que crea una superficie por puntos (3 ó 4). Es el equivalente al comando crear superficie por puntos.

II. SCRIPTS RELACIONADOS El script que verás a continuación usa lo que hemos aprendido sobre de distribuciones de puntos en superficies para crear componentes en 3D, que se comportarán como polisuperficies. En este caso, de hecho, todo el conjunto se comportará como un objeto único. Los pasos a seguir se describen a continuación: · Elegir la superficie base, el número de subdivisiones lo puedes controlar dentro del script directamente [se-

[Fig 2. Familia de componentes sobre una superficie]

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULOS BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI[O]LOGICS

[ 133 ]

Page 134: Rhinoceros Algorithmic Design Manual

lección en línea 12, fíjate que el “8” es superficies]. · Elegir un punto de atracción, a partir del cual modificaremos los componentes [el script escalará los compo-nentes en función de la distancia a este punto]. En la línea 13 usamos el comando GetPoint que nos devuelve direcata-mente las coordenadas del punto. · El primer paso es subdividir la superficie en función de su dominio, por lo que deberemos tener en conside-ración que las subdivisiones no tendrán necesariamente el mismo tamaño. [líneas 18 a 42]. · Una vez tenemos los puntos ordenados en una matriz, podemos proceder a hacer el componente, mediante las siguientes fases: - Calcular las normales para copiar las polilíneas que nos darán el desarrollo volumétrico del compo-nente [líneas 43 a 62] - Crear las polilíneas base para las superficies [líneas 63 a 66]. - Escalar las polilíneas de acuerdo a su distancia hasta un punto [ver variable “d”], líneas 68 a 80. - Crear las superficies desde las polilíneas en la superficie y las polilíneas escaladas. Esto se hace lla-mando la función “CommandLoft”, que crea las superficies mediante lofts. Líneas 83 a 85. - Finalmente, uniendo las superficies creadas. Ten en cuenta el orden en las que las introduces, es necesario que sean contiguas para que el comando funcione. Línea 87. - Por último, limpia los objetos innecesarios [las curvas y polilíneas auxiliares que nos sirvieron de base], en la línea 91.

Option Explicit‘Script written by Adolfo Nadal‘Script NOT copyrighted‘Script versión Monday, November 09, 2009 5:44:41 PM‘How To create a component-based system On a surface using attractor(s)‘This uses “hand-made” lofting

Call Main()

Sub Main() Dim l,k,u,v, dblDist, strCrv, strCrv2,strCrv3, strCrv4 Dim strSrf : strSrf = Rhino.GetObject (“Select your surface”,8) Dim arrPt : arrPt = Rhino.GetPoint (“Select your point”) Dim d : d = 25 Dim intU : intU = 40 Dim intV : intV = 20 ReDim arrFrPt(intU, intV) Dim UDomain : UDomain = Rhino.SurfaceDomain (strSrf,0) Dim VDomain : VDomain = Rhino.SurfaceDomain (strSrf,1) Dim UStep : UStep = (UDomain(1)-UDomain(0))/intU Dim VStep : VStep = (VDomain(1)-VDomain(0))/intV Rhino.EnableRedraw(False) For l = 0 To intV For k = 0 To intU u = UDomain(0) + UStep * k v = VDomain(0) + VStep *l arrFrPt(k,l) = Rhino.SurfaceFrame (strSrf, array(u,v)) dblDist = Rhino.distance (arrPt,arrFrPt(k,l)(0)) ‘Some calls To make clear what we are doing! ‘Call Rhino.AddPoint (arrFrPt(k,l)(0)) If l Mod 2=0 And k Mod 2=0 And l>0 And k>0 Then

‘-FIRST PART- ‘-On SURFACE- ‘Then we Do the curves On the surface ‘We Do this using arrFrPt(k,l)(0) Dim arrPt1 : arrPt1 = arrFrPt(k,l)(0) Dim arrPt2 : arrPt2 = arrFrPt(k-2,l)(0) Dim arrPt3 : arrPt3 = arrFrPt(k-2,l-2)(0) Dim arrPt4 : arrPt4 = arrFrPt(k,l-2)(0) strCrv = Rhino.Addpolyline(array(arrPt1,arrPt2,arrPt3,arrPt4,arrPt1)) strCrv2 = Rhino.Addpolyline(array(arrPt1,arrPt2,arrPt3,arrPt4,arrPt1))

12345678910111213141516171819202122232425262728293031323334353637383940414243

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULOS BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI [O] LOGICS

[ 134 ]

Page 135: Rhinoceros Algorithmic Design Manual

‘-SECOND PART- ‘--COMPONENT-- ‘And the corresponding ones according To the surface normal: Let us ‘1: obtain the normal vector For Each corner of the component ‘[We Do this using arrFrPt(k,l)(3) And adding this To the actual position of ‘the point On the surface] ‘- pay attention To the vector “chalk explanation” ‘2: scale these according To a certain factor we want To measure (optional) ‘3: draw 4 surfaces For Each side And the rest of the component [good moment ‘To create a couple of ex ‘tra functions -we skip that, even If it Is very bad coding practice] Dim arrNormalPt1 : arrNormalPt1 = (arrFrPt(k,l)(3)) Dim arrNormalPt2 : arrNormalPt2 = (arrFrPt(k-2,l)(3)) Dim arrNormalPt3 : arrNormalPt3 = (arrFrPt(k-2,l-2)(3)) Dim arrNormalPt4 : arrNormalPt4 = (arrFrPt(k,l-2)(3)) arrNormalPt1 = Rhino.VectorAdd(arrPt1,arrNormalPt1) arrNormalPt2 = Rhino.VectorAdd(arrPt2,arrNormalPt2) arrNormalPt3 = Rhino.VectorAdd(arrPt3,arrNormalPt3) arrNormalPt4 = Rhino.VectorAdd(arrPt4,arrNormalPt4) strCrv3 = Rhino.Addpolyline(array(arrNormalPt1,arrNormalPt2,arrNormalPt3,_arrNormalPt4,arrNormalPt1)) strCrv4 = Rhino.Addpolyline(array(arrNormalPt1,arrNormalPt2,arrNormalPt3,_arrNormalPt4,arrNormalPt1))

‘-THIRD PART- ‘-SURFACING- If dblDist < d*0.9 Then Call Rhino.ScaleObject (strCrv2, arrFrPt(k-1,l-1)(0),array(dblDist/d,dblDist/d,dblDist/d)) Call Rhino.ScaleObject (strCrv4, arrFrPt(k-1,l-1)(0),array(dblDist/d,dblDist/d,dblDist/d)) Else Call Rhino.ScaleObject (strCrv2, arrFrPt(k-1,l-1)(0), array(0.9,0.9,0.9)) Call Rhino.ScaleObject (strCrv4, arrFrPt(k-1,l-1)(0), array(0.9,0.9,0.9)) End If

‘Rhino.Print “Before Lofting” Dim strSrf1: strSrf1 = CommandLoft(strCrv,strCrv2) Dim strSrf2: strSrf2 = CommandLoft(strCrv2,strCrv4) Dim strSrf3: strSrf3 = CommandLoft(strCrv3,strCrv4) ‘Rhino.Print “After Lofting” Call Rhino.JoinSurfaces(array(strSrf1,strSrf2,strSrf3),True)

‘-FOURTH PART- ‘-CLEANING UP- Rhino.DeleteObjects(array(strCrv,strCrv2,strCrv3,strCrv4)) End If Next Next Rhino.HideObject(strSrf) Rhino.EnableRedraw(True)End Sub

Function CommandLoft(Poly,Crv) Call Rhino.Command (“_selnone “,0) Call Rhino.SelectObjects (Array(Poly,Crv)) Call Rhino.Command (“_-loft _enter _enter “,0) Call Rhino.Command (“_selnone “,0) CommandLoft = Rhino.FirstObjectEnd Function

4445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULOS BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI[O]LOGICS

[ 135 ]

Page 136: Rhinoceros Algorithmic Design Manual

VISUALIZACIÓN AVANZADA: renders y animaciones

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULO BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI [O] LOGICS

[ 136 ]

Page 137: Rhinoceros Algorithmic Design Manual

[ 137 ]

Page 138: Rhinoceros Algorithmic Design Manual

I. VISUALIZACIÓN AVANZADA CON VRAY

1. Opciones y propiedades de Cámara Física La propiedad de “Physical Camera” permite una reacción natural de la misma a la luz, para imitar el comportamiento de una cámara en el mundo real. Esto significa una reacción natural a la luz, así como una dimensión más de control sobre la iluminación de la escena. Recuerda usar la cámara física solamente cuando tengas un map tipo “Skylight” en el ambiente.

Los parámetros dependen del tipo de cámara: (i) “still camera”, “cinematic camera” y “video”. Las dos últimas se usan para animaciones y no vamos a verlas aquí, ya que se usan para realizar ajustes de cámara con fotometraje existente. - Exposición: En el mundo real, la exposición es la afección de la luz sobre un sensor o carrete, y hay 3 aspectos que regulan este hecho: · Velocidad ISO (ISO Sped): se refiere a la sensibilidad de la película o carrete. Un número mayor significa mayor sensibilidad a la luz, pudiendo usarse para imágenes con menor iluminación. · Apertura de objetivo (F-stop, o “focal stop”): esto corresponde al tamaño de la apertura del objetivo de la cámara, correspondiendo un valor mayor a mayor cantidad de luz que entra y marca la película. Valores pequeños de F-stop indican que hay poca parada de luz (es decir, que el objetivo está muy abierto), y por tanto, a imágenes más brillantes. · Velocidad de obturación (“Shutter Speed”): es la cantidad de tiempo que el objetivo está abierto, por tanto la

1CAMARA

CAMARA FISICADEPTH OF FIELD

MOTION BLUR

2ENVIRONMENT

GI (SKY)BACKGROUND

[Fig 1. Diálogo y opciones de cámara física]

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULOS BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI [O] LOGICS

[ 138 ]

Page 139: Rhinoceros Algorithmic Design Manual

película expuesta a luz. Un valor alto permitirá que entre más luz, resultando en una imagen más brillante. - Ajustes de exposición: Puede hacerse mediante el ajuste de cualquiera de los tres parámetros anteriores. Para que estos parámetros influyan, la “Physical Camera” debe estar activada. · Apertura, F-Stop: Cuando se usa la apertura, debemos recordar que hay una relación inversamente proporcional entre el valor y el resultado. Un número pequeño aumenta el brillo de la escena. Si “Depth of field” (profundidad) está activado, entonces el valor de apertura determinará también cuánta profundidad habrá en la escena, en la que los objetos deberán estar cerca del foco para permanecer nítidos. Un valor de apertura mayor influirá en un mayor tamaño de “Depth of Field”, permitiendo que los objetos estén enfocados incluso a grandes distancias. Así pues, si se pretende ajustar bien el “Depth of field”, se recomienda ajustar la exposición mediante cualquie-ra de los otros dos parámetros. · Velocidad de Obturación: El prámetro se expresa en términos de 1/x, en segundos. De este modo, un valor de 4 significa 0.25 segundos.Así pues, un valor alto significa que la velocidad es mayor, lo que se traduce en una imagen más oscura. En el caso de las ani-maciones con objetos móviles, una cámara que se mueva, o ambos, y “motion blur” activado, entonces una velocidad menor disminuirá la cantidad de “motion blur”, que además dependerá de la velocidad de movimiento de los objetos. · Usando ISO: El ISO no tiene efectos sobre “motion blur” ni “depth of field”, por lo que es extremadamente útil. Un número mayor permite trabajar con escenas menos iluminadas. · Balance: el color de balance es el que VRay interpreta como blanco.

2. Opciones de cálculo y algoritmos en VRay: GI (Global Ilumination) En VRay hay 4 opciones de cálculo para el motor principal y 3 para el secundario, los paneles de opciones cambrán según la selección del mismo. - “Primary Engine”: Irradiance Map, Photon Map, Deterministic Monte-Carlo y Light Cache. por defecto, Irradiance Map. - “Secondary Engine”: Photon Map, Deterministic Monte-Carlo y Light Cache. por defecto, Monte-Carlo, pero puede seleccionarse “ninguno”. - Clasificación de luz reflejada · Luz directa · Reflejos directos: luz correspondiente al primer rebote después de que la luz directa choque contra una su-perficie. La luz ambiental se calcula de esta manera. · Reflejos secundarios: toda la luz y rebotes después del primero.Según van rebotando los haces de luz, éstos pierden intensidad, así como su efecto sobre la iluminación final. Por ello, todos estos rayos se calculan según un único mé-todo. En escenas de interior, este tipo de luz es muy relevante -más que los reflejos directos. - Primary Engine: Irradiance Map · Sólo puede usarse para rebotes primarios. · Min y Max Rate: por defecto, son -3 y 0. Si, por ejemplo, los cambiamos a -8 y -7, se obtendrá una imagen muy rápida, pero la liluminación y las sombras tienen baja calidad y contienen defectos. · Min Rate: el control de el sampleado mínimo para cada pixel. 0 significa 1 pixel para cada muestra, -1 significa 2 pixeles por muestra, -2 son 4 pixeles por muestra y así sucesivamente (así, rate es el exponente x en 2x). Así, un número me-nor implica que hay una menor cantidad de muestras que se toman del objeto, así que la calidad de renderizado, iluminación y sombras no es buena. Incrementar este valor implica mejor calidad pero mayor tiempo de cálculo. · Max Rate: controla el máximo número de muestras por pixel. 1 significa que 1 pixel usa 4 muestras, 2 que usa 8 muestras y así sucesivamente. Números bajos implican menos muestras para calcular la luz. · Los valores por defecto 0 y -3 significa que hay 4 pasadas previas en el cálculo de luz, -3, de -3 a -2, de -2 -1, de -1 a 0. Usa una pareja de valores pequeños para renderizar vistas previas. · Subdivisiones: muchas subdivisiones resultan en una alta calidad de imagen. Con más subdivisiones se re-quieren más muestras.

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULOS BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI[O]LOGICS

[ 139 ]

Page 140: Rhinoceros Algorithmic Design Manual

- Primary Engine: Deterministic Monte-Carlo · Es el método de cálculo más exacto, no requiere cálculo previo, y es también el más lento. · Puede producir resultados “granulosos”, por lo que se recomienda usar “Adaptive QMC” en “Image Sampler”. - Secondary Engine: Light Cache · Se usa para calcular distribución de luz en la escena. Si Photon Mapping calcula a partir de la fuente de luz y la recoge a lo largo del camino que recorre, Light cache hace lo mismo a partir de la cámara. usar Light Cache es buena idea si no necesitamos tener mucho trabajo en los ajustes de iluminación y es bastante rápido. · Subdivisiones es el parámetro más importante. Normalmente oscila entre 500 y 600, pero debe ajustarse en función de los puntos negros de la ventana de cálculo. · Sample Size: un tamaño menor resultará en una imagen más afilada y detallada.

3. Materiales - Menu El menú de materiales consta de 3 ventanas principales: · Vista previa: muestra la vista previa del material seleccionado y debe actualizarse manualmente · Explorador de materiales: muestra los materiales cargados en la escena actualmente, estén o no asignados a objetos del modelo. Muestra asimismo las capas de los materiales.

1INDIRECT ILLUMINATION

GICALCULATION ALGORITHMS

*ENGINES

3IRRADIANCE MAP

RATESOTHER OPTIONS

2MONTE CARLO

[Fig 2. Diálogo y opciones de GI]

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULOS BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI [O] LOGICS

[ 140 ]

Page 141: Rhinoceros Algorithmic Design Manual

· Ventana de edición de material: muestra las distintas capas para la edición de materiales. - Capas Los materiales de VRay para Rhino se organizan mediante capas. Las capas que existen son las siguientes: · Capa emisiva (“emissive layer”): se emplea para objetos que arrojan luz, tales como vidrios, techos iluminados o cualquier otro de semejante índole. Estos objetos no son luces per se, y arrojan luz en sentido perpendicular a cada uno de los puntos de la superficie que los defina. · Capa de refracción (“refraction layer”): se usa para objetos con refracción, tales como el agua y el vidrio. la capa consume muchos recursos, por lo que muchos materiales con refracción harán que el cálculo del renderizado sea lento. · Capa base (“diffuse layer”): es la capa que sirve para la definición base del color y acabado del material. · Capa de reflexión (“reflection layer”): para aquellos materiales con brillo que reflejen luz, tales como metales, vidrio, agua, pintura y semejantes. Suele emplearse también para dar brillo a la madera. - Asignación de materiales · Por capa: en la ventana de capas, click sobre el icono de material, asignar por Plug-In, seleccionar de la lista. · Por objeto: con el objeto seleccionado, en la ventana de materiales de VRay, dentro del explorador, con click de botón derecho sobre el nombre del material, selección “aplicar a objetos(s)”.

II. EJERCICIOS TUTORIALES Inicialmente es necesario preparar las condiciones de luz del modelo, posteriormente las condiciones de los materiales y su propia caracterización influirán sobre la luz, una vez que los settings alcanzados sean satisfactorios para los materiales. Para ello, bien activaremos la casilla de “sustituir materiales” en VRay, bien asignaremos a todos los objetos un material de color blanco, que nos permita ver y estudiar los efectos de iluminación y sombras.

1. HDR: High Dynamic Range Otra opción interesante a la hora de iluminar la escena es utilizar imágenes para su mapeado. Así, podremos selecionar tanto imágenes “normales” como HDR (aquéllas que contienen información sobre luz) y obtener resultados más realistas. De todos modos, las imágenes HDR suelen ser de proveedores, por lo que nos podrá resultar difícil ajustar el brillo y la resolución de la imagen. Establece los ajustes de la GI siguiente manera: - Haz click sobre el icono de mapa de GI (skylight):

1 VISTA PREVIA

2EXPLORADOR

3CAPAS DELMATERIAL

[Fig 3. Ventana de edición de materiales]

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULOS BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI[O]LOGICS

[ 141 ]

Page 142: Rhinoceros Algorithmic Design Manual

· Asigna bitmap como tipo · Asigna la imagen “free_009.hdr” · En el mapeado de textura UVW (que correspone a xyz), asigna “Environment”, puesto que estamos asignando una imagen al ambiente. Además, puedes probar entre distintas proyecciones (por ejemplo esférica y “mirror ball”) para ver la afección que esto tiene sobre el modelo. En función del tipo de imagen y su proyección verás que los resultados cambian ostensiblemente. - Repite exactamente estos pasos en “Background” si quieres que el modelo “refleje” el mapeado. Si tienes objetos re-flectantes en la escena, los efectos podrán ser bastante espectaculares. Es probable que tengas que hacer la base del modelo suficientemente grande como para que ocupe todo el espacio de renderizado. - Por último, ajusta las subdivisiones de la “Light Cache”, pues es posible que te aparezcan “manchas” de sombras inde-seables. Aumentar las subdivisiones ayuda a trazar más cálculos de luz, por lo que la sombra será más continua y los bordes, bien difusos, bien nítidos, estarán más definidos.

[Fig 4. Settings para HDR]

[Fig 5. Resultado con mapeado esférico]

[Fig 6. Resultado con mapeado “mirror ball”]

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULOS BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI [O] LOGICS

[ 142 ]

Page 143: Rhinoceros Algorithmic Design Manual

3. Uso de la cámara física para renders interiores: Irradiance Map y Light Cache

4. Ajuste de luces para interiores: espacio semiabierto Las visualizaciones de interiores son generalmente complejas y arduas de trabajar. Para conseguir buenos efectos, deberemos revisar lo siguiente: - Cuántos huecos abiertos hay al exterior - Cuántas luces pretendemos tener en la escena final - Qué momento del día intentamos retratar (skyMap en Skylight)

La cámara física permite emular el comporta-miento real de una película en su exposición a la luz. Esto implica no solamente mayor control, sino mejo-res resultados. - Para usar la cámara física debemos tener Skylight con mapa Sky -Sun activado. Para ello pode-mos crear un sistema de sol cualquiera de manera casi automática en el menú VRay. - Además, previo al ajuste de la cámara, de-bemos usar “Light Cache” como motor de cálculo secundario, ya que da resultados más suaves que Quasi-Montecarlo. Debemos, en este caso, calcular las subdivisiones de la manera siguiente (esto nos ayuda a optimizar el tiempo de cálculo)

· Apuntamos el número de subdivisiones por defecto (normalmente 1000) · Visualizamos la fase de cálculo. Si a mitad de proceso la pantalla muestra más de la mitad de pixeles en negro, entonces podemos decrementar el número a aproximadamente 500-600. Si fuera demasiado claro, entonces deberíamos incrementarlo a 1200-1300 aproxi-madamente. Estas cifras no son siempre exactas y puede requerir un poco de paciencia alcanzar un número apro-piado.

- Tipo de cámara: seleccionamos “still camera”. - Ajuste de exposición: · Introducimos 125 en el valor ISO (sensibilidad). · Introducimos 100 en la velocidad de obtura-ción en lugar de los 300 por defecto. - Balance de blancos: ajustar al color que se ne-cesite. - Renderizamos Deberíamos obtener un resultado semejante al de la figura 8. Obviamente, podríamos crear un render más completo con mejor modelado y el uso de luces puntuales. Sin embargo, esto sería demasiado com-plejo para nuestro ejercicio.

[Fig 7. Ajustes para Skylight, Sun parameters]

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULOS BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI[O]LOGICS

[ 143 ]

Page 144: Rhinoceros Algorithmic Design Manual

Además, podremos emplear técnicas que usan la cámara física. El ajuste de la entrada de luz en espacios cerrados o semiabiertos es muy importante y puede resultar complejo. Al contrario que en espacios abiertos, donde la luz puede proceder de rebotes de la luz ambiental, en espacios interiores es necesario iluminar artificialmente. Si tenemos ventanas o huecos al exterior, por ejemplo, podemos aprovechar para colocar luces rectangulares que iluminen el interior, de manera que podamos simular la iluminación satisfactoriamente. Ajustar “al alza” el multiplicador de GI nos permitirá asimismo incremental la cantidad de luz “reflejada” en el interior, por lo que los espacios internos aparecerán más claros. Este incremento será de unas 8 veces respecto a los ajustes para es-pacios exteriores, en función de la cantidad de huecos y su proporción. Por último, prueba a incluir luces del tipo “omni” o direccionales en el render, para comprobar los efectos que éstas pueden tener sobre el renderizado del modelo.

5. “Depth of field”, o cómo enfocar ciertas partes del modelo Recuerda que una de las opciones de cámara es la de activar “Depth of field”. Esta opción permite enfocar ciertas partes del modelo, mientras otras permanecen desenfocadas. Para usar esta opción debemos desactivar la cámara física, por tanto también el Skylight Map, si teníamos cielo. - Para saber qué distancia focal debemos usar, podemos medir la distancia entre el origen de la cámara y el foco, e introducir ésta en el espacio destinado a tal efecto. - En el modelo, esa distancia es 33.209 - Para agudizar el efecto de desenfoque, aumenta el valor de la apertura, es decir, el valor de la zona que se va a ver afectada. Introduce el valor 1. - Recuerda, comienza siempre de menos a más. Aquí se expone el resultado de cambiar esta distancia y cómo afecta a la visualización.

[Fig9. Apertura 1] [Fig10. Apertura 0.5] [Fig 11. Apertura 0.25]

[Fig 8a. Render interior sin luces] [Fig 8b. Render exterior sin luces]

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULOS BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI [O] LOGICS

[ 144 ]

Page 145: Rhinoceros Algorithmic Design Manual

6. Materiales El editor de materiales consta de (i) visor de texturas, (ii) lista de materiales, y (iii) visor de capas del material. Los materiales de VRay se describen por capas, como se ha mostrado anteriormente. Las capas se superponen a modo de filtros semitransparentes, de manera que los efectos de las mismas tienen carácter acumulativo. Las capas son las siguientes: - Emisivas: emiten luz - Reflexión: definen cómo el material refleja la luz, así como la intensidad de dicha reflexión. - Difusa: color base del material - Refracción: para objetos que refractan luz, vidrios y materiales traslúcidos. Además, hay un segundo nivel de control del material, donde se incluyen los “mapas”, o texturas que modifican el as-pecto del material sobre aquél conseguido a través de las distintas capas.

6.1 Capas Cada material puede tener tantas capas de cada tipo como se requiera, si bien normalmente no es necesario tener más de una de cada tipo (e incluso menos si los materiales son opacos). Para añadir una capa al material, haz clic con el botón derecho del ratón sobre el tipo de capa que necesites añadir, se-lecciona “añadir capa”. Puedes cambiar el nombre de la capa o eliminarla utilizando el menú contextual que aparece al hacer clic sobre el nombre de la capa con el botón derecho. - Difusse layer: capa base. · Color: Asigna bien un color, bien una textura al material. · Transparencia: Asigna transparencia al material, con un valor de 255 a 0 (de blanco a negro, o de opaco a transparente) - Reflection layer: capa que añade reflexión al material. · Por defecto esta capa tiene un mapeado fresnel que añade la cantidad de reflexión del material, basándose en el ángulo de incidencia de la luz y de la cámara respecto al objeto. Si este mapeado se elimina, entonces la reflexión es constante en toda la superficie del material. Como el color de la reflexión es blanco, entonces el material completo es reflec-tante, lo que puede ser un buen ajuste para espejos o materiales cromados. · Mapeados fresnel: si se selecciona “ninguno”, entonces obtenemos, como hemos dicho, la reflexión de un material cromado o espejo. Veamos ahora más específicamente el funcionamiento del mapeado fresnel. Cuanto mayor sea el valor del Fresnel IOR, mayor reflexión tendrá el material, permitiendo texturas parecidas a metal. Los objetos reflejan también el en-torno, por lo que es posible que aparezcan manchas de color negro o blanco, en función del color seleccionado en GI. Las reflexiones Fresnel son un fenómeno natural que describe la apariencia reflectiva de un material respecto del punto de vista del observador. Como una ventana de vidrio, hay materiales reflectantes que necesitan de un amplio ángulo entre la normal de la superficie y el observador para comenzar a reflejar. Así, una ventana vista de frente no refleja, mientras que vista casi en paralelo, refleja completamente. Un índice IOR alto significa que el ángulo entre el observador y la superficie es bajo, y que el material reflejará pronto. Un índice IOR bajo implica que dicho ángulo debe ser mayor. Lo más recomendable es tener un índice IOR igual al índice del material real en la naturaleza. · Otros parámetros: Reflection glossiness permite crear un aspecto mate en el material, de manera que cuanto menor sea el índice, menor será la reflexión, y, por tanto, mayor su carácter mate. El valor por defecto es 1, lo que significa que las reflexiones son perfectamente nítidas. Un valor 0 equivaldría a no tener reflexión ninguna, igual a no tener una capa de reflexión. General-mente, los valores más apropiados oscilan entre 0.6 y 1. Reflection filter es un color aplicado a las reflexiones, cuya magnitud dependerá de la fuerza de las propias reflexiones en la superficie. - Refraction layer: capa que añade refracción a un material traslúcido o transparente.

· Para crear refracciones, añade una capa de refracción a tu material. · Ajusta el Fog Color para que sea igual al del difuso, si el material es 100% transparente, el Fog Color definirá el color final del mismo. · Ajusta la intensidad del color mediante el multiplicador de Fog Color, generalmente entre 0.1 y 0.5. · Activa “Affect Shadows” para crear sombras más realistas.

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULOS BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI[O]LOGICS

[ 145 ]

Page 146: Rhinoceros Algorithmic Design Manual

- Emissive layer: capa que añade emisión de luz a un material. · Color emisivo: el color de la luz que va a emitir el objeto. · Color de transparencia: Permitirá ver el color de las capas inferiores, si la capa no es 100% opaca. · Intensidad: cuanto más alta, más cerca estará el objeto de ser renderizado blanco. · Prueba los siguientes valores y ajusta la intensidad: Emissive color R200, G161, B82 Emissive transparency R100, G100, B100 Diffuse color R155, G155, B155 (gris) Diffuse transparency R0, G0, B0 (opaco)

6.2 Maps sobre texturas - Transparencia: del mismo modo, aplica transparencia al material leyendo las partes más claras y oscuras. - Bump (relieve): Aplica relieve en as zonas más oscuras de l bitmap. En escala de grises, los relieves serán más visibles cuanto más cercanos estén al negro. Los bordes tangentes de los objetos permanecen inalterados, dao que el mapeado no afecta a la geometría real del objeto sobre el que se aplica. - Displacement (desplazamiento): cambia la geometría del objeto en el render a partir de la información de escala de grises del mapa de bits. Actúa como el bump, pero cambiando la geometría.

6.3 Crear materiales de arquitectura - Hormigón:

· Tendrá una capa difusa y mapeados para influenciar las texturas.· Diffuse: busca una imagen de mapa de bits para la textura del hormigón, y utilízala como diffuse map. La transparencia del material en esta capa es 0, así que no es necesario modificar el valor por defecto.· Bump Map: en photoshop, abre la textura que has utilizado para el hormigón. Modifícala hasta que sea en escala de grises o blanco y negro. Guarda la textura con el mismo nombre, pero empleando el sufijo “_bump”, por ejemplo, u otro identificador a conveniencia. Aplica la textura con los mismos parámetros que hayas utili-zado en la textura de base, pero con menor intensidad, por ejemplo 0.15.· Ajusta la luz hasta conseguir el efecto y brillos deseados.

- Madera: · Diffuse: busca una imagen de mapa de bits para la textura de la madera, teniendo en cuenta que los bordes no deben tener discontinuidades. Trabaja la textura en photoshop si es necesario. Igual que para el hormigón, la transparencia para esta capa es 0.· Bump Map: en photoshop, abre la textura que has utilizado para la madera. Modifícala hasta que sea en esca-la de grises o blanco y negro, y marque las juntas de la tarima. Esto le dará un aspecto más realista. De nuevo, guarda la textura con el mismo nombre, pero empleando el sufijo “_bump”, por ejemplo, u otro identificador a conveniencia. Procede a modificar la intensidad igual que para el hormigón.· Reflexión: es posible que quieras crear un acabado de barniz. Para ello, añade una capa de reflexión, y ajusta su IOR, y “Glossiness”. Los valores del ejemplo son: Highlight y Reflection Glossiness 0.7, IOR 1.125.

- Iluminación de objetos: · Diffuse: irrelevante.

[Fig 12. Bump map aplicado a textura] [Fig 13. Bump y transparency maps] [Fig 14. Displacement map]

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULOS BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI [O] LOGICS

[ 146 ]

Page 147: Rhinoceros Algorithmic Design Manual

· Bump Map: ninguno.· Reflexión: irrelevante.· Emissive: ajusta el color y la intensidad a gusto. Recuerda apagar otras luces y ajustar la intensidad de GI para lograr el efecto deseado.

- Vidrio transparente: · Diffuse: La transparencia para esta capa es 100.· Reflexión: ajusta el mapa de reflexión a Fresnel, con valor 1.55, que es el valor real para vidrio. Puedes además jugar con la reflexión del material y su brillo mediante su “highlight glossiness” y su “reflection glossines”. Cam-bia Highlight glossiness a un valor de 0.87 para obtener el efecto del ejemplo.· Refracción: para un material tan transparente, no usaremos refracción.· Opciones: asegúrate que el material es “double sided” (esto aplica a todos los transparentes) y que no tiene reflexiones en su cara trasera (“backface reflections” desactivado) para evitar efectos de brillo extraños.· Mapas: no usaremos ninguno.

[Fig 15. Settings para vidrio transparente]

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULOS BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI[O]LOGICS

[ 147 ]

Page 148: Rhinoceros Algorithmic Design Manual

- Vidrio translúcido: · Diffuse: La transparencia para esta capa es 100.· Reflexión: ajusta el mapa de reflexión a Fresnel, con valor 1.55, que es el valor real para vidrio. Puedes ade-más jugar con la reflexión del material y su brillo mediante su “highlight glossiness” y su “reflection glossines”. Cambia Highlight glossiness a un valor de 0.8 para obtener el efecto del ejemplo, que es ligeramente “mate.”· Refracción: añade una capa de refracción. Ajusta el valor de brillo “Glossiness” por debajo de 1, por ejemplo 90.8 ó 0.75. Cambia el IOR a 1.55, y el fogColor al deseado. Un valor alto del Fog Multiplier hará que el material sea más opaco. En función del color, este efecto también podrá cambiar.· Opciones: asegúrate que el material es “double sided”.· Mapas: no usaremos ninguno.

[Fig 16. Settings para vidrio translúcido]

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULOS BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI [O] LOGICS

[ 148 ]

Page 149: Rhinoceros Algorithmic Design Manual

8. Mapeado: Texture Mapping Como hemos visto, la mayoría del tiempo, los materiales requieren mapas de texturas para ser realistas, y no podremos crearlos usando sólamente brillo, transparencia, y color. Así pues, se hace imprescindible saber cómo mapear materiales. Los distintos tipos de mapeados que ofrece Rhino son los siguientes: Nombre Objeto “base” · Superficial Superficie · Cajeado Caja · Esférico Esfera · Cilíndrico Cilindro abierto · Cilíndrico tapado Cilindro cerrado Básicamente, la textura se “coloca” sobre el “objeto base” correspondiente a su textura, y se proyecta ortogonalmente a cada uno de los puntos de la superfice sobre el objeto real que contenga la textura para su renderizado.

[Fig 17. Render con materiales asignados y texturas mapeadas con cajeado]

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULOS BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI[O]LOGICS

[ 149 ]

Page 150: Rhinoceros Algorithmic Design Manual

PRODUCCIÓN Y EDICIÓN GRÁFICA

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULO BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI [O] LOGICS

[ 150 ]

Page 151: Rhinoceros Algorithmic Design Manual

[ 151 ]

Page 152: Rhinoceros Algorithmic Design Manual

CREACIÓN Y EDICIÓN DE ANIMACIONES, RHINOCEROS y AFTER EFFECTS

Para crear una animación, sencillamente debemos conocer de antemano el tipo de animación que queremos realizar. En cualquiera de los casos, la configuración es muy sencilla, y el renderizado responderá a nuestro motor y configuración actuales. Rhino exporta archivos independientes correspondientes a cada uno de los fotogramas del vídeo, que posterior-mente importaremos en software de edición de video y exportaremos, una vez trabajado, en formato multimedia. Generalmente, la longitud de los archivos de video será inferior a medio minuto, el equivalente a unos 720 fotogramas en total (si calculamos 24 fotogramas por segundo). Rhinoceros necesitará el total de fotogramas (que hemos de calcular pre-viamente) a renderizar. Obviamente, una vez editemos el video, procuraremos crearlo con tantos fotogramas por segundo como habíamos pensado inicialmente para que la longitud del vídeo no fluctúe. Otro cálculo importante es el de la duración del cálculo. Para fotogramas sencillos, el tiempo de renderizado no debería ser mayor a 30 segundos, por lo que podemos calcular el tiempo total de renderizado. Podríamos estimar que, para un video de unos 30 segundos de duración y a 30 segundos por fotograma, Rhino necesitará de 6 horas de cálculo para finalizar la tarea. Así pues, se recomienda dejar al ordenador trabajar mientras nosotros hacemos cualquier otra tarea.

I. CREAR LA ANIMACIÓN EN RHINOCEROS1. Posibilidades de animación - Las opciones más comunes son:

· Animación de estudio de soleamiento (crea automáticamente un HTML con la animación, y no se va a tratar en este punto)· Animación con recorrido: bien con objetivo fijo o móvil, podremos hacer una previsualización del mismo en cualquiera de las ventanas de vista que tengamos abiertas. Una vez hayamos fijado nuestra configura-ción de renderizado, podremos guardar los archivos en una carpeta que especifiquemos y con el prefijo que establezcamos. La animación con objetivo fijo, sencillamente, cambiará la posición de la cámara en torno (o, mejor dicho, siguiendo) a una curva. Es importante establecer correctamente el sentido de la curva a la hora de realizar la animación.· Animación a vista de pájaro: crea una animación del modelo a partir de una vista superior del modelo.· Animación de 360º: crea una animación que rota 360º alrededor de un punto del modelo.

2. Comentarios - Mezcla de interiores y exteriores: hay que tener precaución al mezclar visualizaciones de interiores y exteriores en una misma animación, dado que, generalmente, la configuración para ambos es notablemente distinta. Así pues, se recomienda crear secuencias distintas y montarlas posteriormente en el programa de edición.

RENDER...PROPIEDADES DEL RENDERIZADO

CONFIGURAR ANIMACIÓN...

PREVISUALIZAR ANIMACIÓN...

GRABAR ANIMACIÓN...

PREVISUALIZAR RENDERIZADO

CONFIGURAR RENDERIZADO

CONFIGURAR MALLA DE RENDERIZADOEXTRAER MALLA DE RENDERIZADO

GUARDAR IMAGEN DE RENDERIZADO

HERRAMIENTAS DE ANIMACIÓN...

ESTUDIO DE ANIMACIÓN SOLAR DE UN DÍAESTUDIO DE ANIMACIÓN SOLAR ESTACIONAL

ANIMACIÓN DE VISTA AÉREA

ANIMACIÓN DE TRAYECTORIA

ANIMACIÓN DE PLANO GIRATORIO A 360º

[Fig 1. Opciopnes de animación]

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULOS BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI [O] LOGICS

[ 152 ]

Page 153: Rhinoceros Algorithmic Design Manual

II. EDICIÓN DE MULTIMEDIA EN AFTER EFFECTS1. Importación de archivos (sucesivos, como secuencias) Configurar la composición. Es importante asegurarse de varios extremos: - Que el tamaño de la composición es el adecuado, igual al de los fotogramas. - Que la composición tiene 24 fotogramas por segundo. Una vez comprobado, el primer paso al abrir After Effects es importar los archivos de base, es decir, nuestros fotogra-mas. Ve al menú archivo>importar>archivos como fotogramas. Esto abre el menú de carpetas, de donde se seleccionan los fotogramas creados por Rhinoceros. Una vez en este menú, nos aseguraremos de seleccionar “secuencia”, lo que dispondrá los archivos alfabéticamente. Aceptamos. Veremos que ahora After Effects ha cargado los archivos como una secuencia, que podemos añadir al editor que vemos en la parte inferior. La duración vendrá determinada por el número de archivos total y la cantidad de fotogramas por segun-do que hayamos establecido. En este punto ya podemos previsualizar la animación, e incluso exportarla, pero veremos que es muy sencillo añadir efectos, sonido, y títulos de crédito que darán al vídeo una apariencia más profesional con poco esfuerzo. Además, puedes personalizar la interfaz desplazando los paneles a las áreas inteactivas correspondientes (si arrastras un panel haciendo click sobre su nombre aparecerán áreas azules).

2. Efectos y Adobe Bridge - Transición Los efectos de transición “fade in” y “fade out” pueden crearse mediante la transformación de la transparencia de la línea de la composición que elijamos. Un click sobre la línea desplegará el menú contextual de efectos de animación sobre la

[Fig 2. After Effects layout]

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULOS BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI[O]LOGICS

[ 153 ]

Page 154: Rhinoceros Algorithmic Design Manual

posción, rotación y transparencia. - Efectos Se pueden añadir más efectos, que pueden verse desde el menú emergente del botón derecho. Asimismo, es posible seleccionar efectos desde Adobe Bridge y aplicarlos a la composición.

3. Títulos (texto) y creación de otras capas En las líneas de la composición, haz click con el botón derecho y elige la opción que prefieras (por ejemplo, nueva capa texto, nuevo sólido...). Esto permite añadir capas a la composición, y controlarlas de la misma manera que el resto. Mediante la importación de archivos de audio se pueden añadir distintos efectos simultaneamente.

4. Edición de audio Al igual que en el caso de capas de imagen, el audio tiene propiedades susceptibles de ser animadas. En After Effects, pulsa sobre el icono triangular de la capa, lo que desplegará las dichas propiedades. Principalmente, puede jugarse con el volumen del audio, lo que, una vez más, nos permitirá crear efectos de transición, “fade in” y “fade out”.

5. Duración de la composición Puedes ajustar la duración de la composición en composición-duración. Ten en cuenta el número de fotogramas por segundo, puesto que esto afectará a la visualización y duración del resultado (a más FPS -frames per second- menos dura-ción).

6. Exportar y códecs Verás que hay una gran variedad de códecs en After Effects. Los más usuales son - Sorenson H.263 - H.264: genera archivos pequeños de alta calidad. Este formato se usa para videos de Apple QuickTi-me. - PAL: sistema de codificación utilizado en la transmisión de señales de televisión analógica en color en la mayor parte del mundo, especialmente en Europa. Genera archivos de relativa mala calidad y de mediano tamaño, en función de las es-pecificaciones que se introduzcan.

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULOS BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI [O] LOGICS

[ 154 ]

Page 155: Rhinoceros Algorithmic Design Manual

VISUALIZACIONES Y FOTOMONTAJES

Para crear una visualización, lo primero que se precisa es tener una buena imagen de base. Esto requiere buenas ca-pacidades de modelado y renderizado, así como una clara idea de lo que se quiere transmitir. Por ejemplo, debemos saber si queremos una visualización fotorrealista, o una abstracta, por ejemplo. Esto influirá tanto en la producción como en la postproducción de las imágenes y visualizaciones. El detalle del modelo deberá ajustarse, asimismo, a las necesidades que tengamos y será, generalmente, mayor cuanto mayor sea el realismo de nuestro fotomontaje final. Así pues, una vex obtenido el resultado deseado en VRay, podremos ajustarlo a nuestras necesidades en Photoshop -ajustando el equilibrio de color, tonalidad, niveles, brillo y contraste, o aplicando efectos. Posteriormente deberemos ade-más importar los archivos o partes de archivos correspondientes a la parte de fotomontajes, es decir, elementos complemen-tarios como pueden ser personas, árboles, coches, cielo, o, sencillamente texturas (suelo, paredes...) en caso de no haberlo hecho previamente. Como es evidente, es recomendable aplicar las texturas en VRay, puesto que éstas, con un mapeado correcto, estarán colocadas en su lugar y con su perspectiva correspondiente de manera automática, sin que nos implique mucho esfuerzo. Si eres incapaz de controlar todos los materiales y texturas simultáneamente, renderiza el modelo por partes (es decir, en distintos archivos), de manera que puedas tener capas independientes.

I. RENDERIZADO EN VRAY PARA RHINO (U OTRO MOTOR CUALQUIERA)1. Renderizado - Asegúrate de lo siguiente:

· Correcta exposición de la imagen· Correcta iluminación a partir de, bien Gi, bien luces tipo skylight.· Correcta resolución: una resolución alta ayudará en principio a poder trabajar en varias escalas.

2. Guardado de imagen - Puedes exportar la imagen como PNG si es importante el canal alpha (para transparencias). - Es preferible exportar la imagen en formatos no comprimidos (es decir, no JPGs), o comprimidos sin perder informa-ción (lossless compressions).

II. CONCEPTOS PREVIOS 1. Pixel: unidad mínima de medida. Su tamaño dependerá de la resolución de la pantalla. 2. Bits: depende del número de canales que tenga la imagen. Hay tres opciones básicas: - Imagen Bitonal: blanco o negro. 1 bit por pixel (valor 0, valor 1). - Imagen en escala de grises: sólamente 1 canal, con valores de 0 a 255, por tanto 8 bits (28 = 256). - Espacio color RGB: tres canales de color, cada uno con valores comprendidos entre 0 y 255. Por tanto 3 bits (R,G, y B pueden tener valores entre 0 y 255). - Espacio color RGB con canal alpha: 4 bits. 3. Tamaño de imagen El tamaño de una imagen en píxeles se obtiene de multiplicar su número de píxeles en ancho por su número de píxeles en alto. 4. Compresión de imágenes: sin entrar en más detalles, puede ser compresión con pérdida de información (jpg, por ejemplo) o sin pérdida.

III. TRABAJO DE POSTPRODUCCIÓN EN PHOTOSHOP1. Interfaz de photoshop - La interfaz del programa se basa en los siguientes elementos: · Barra de menús · Menú contextual de herramienta: cambia en función de la herramienta actual y permite personalizarla. · Lienzo de trabajo · Barra de herramientas de diseño: las pricipales son de selección y edición. Puedes acceder a ellas mediante el teclado (la letra aparece al colocar el cursor del ratón sobre la herramienta correspondiente, por ejemplo A,V,M,W,C) · Capas y barras de trabajo

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULOS BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI[O]LOGICS

[ 155 ]

Page 156: Rhinoceros Algorithmic Design Manual

2. Importación de archivos - En menú archivo > abrir - Para añadir una capa al proyecto actual, arrastra directamente una imagen desde Photoshop al lienzo de trabajo.3. Funcionamiento de capas, canales, trazados - Capas: como otros programas de diseño, Photoshop organiza los objetos en capas. · Las principales opciones o propiedades de las capas son opacidad y relleno. El relleno será importante a la hora de trabajar con capas vectoriales, para distinguir éste del filete. · Existe la posibilidad de agrupar capas - Canales: · RGB: mide, de 0 a 255 (es decir, en 8 bits), la intensidad de color rojo, verde, y azul de cada pixel. · Alpha: mide la transparencia con un valor entre 0 y 255. A mayor valor mayor transparencia. - Trazos: los trazos facilitan el trabajo vectorial con Photoshop. · Puedes transformar un trazo en selección y viceversa con el botón dedicado al efecto.

4. Ajustes básicos de imagen - Brillo y contraste - Niveles: controla los niveles de negros y blancos en la entrada y salida de la imagen. Con esto se controla la luminosi-dad general de la imagen en sombras, tonos medios y zonas brillantes. - Curvas: controla gráficamente los niveles de iluminación de la imagen, de entrada y salida.

1 BARRA DE MENUS

2 MENU

DE HERRAMIENTA

3 BARRA DE

HERRAMIENTAS

4LIENZO

5AREA DE MENUS

[Fig 1. Photoshop interface]

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULOS BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI [O] LOGICS

[ 156 ]

Page 157: Rhinoceros Algorithmic Design Manual

AJU

STE

DE

NIV

ELES

AJU

STE

DE

CURV

AS

AJU

STE

DE

EXPO

SICI

ÓN

AJU

STE

DE

SATU

RACI

ÓN

[Fig 2. Ejemplos de ajustes]

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULOS BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI[O]LOGICS

[ 157 ]

Page 158: Rhinoceros Algorithmic Design Manual

- Exposición: controla simultáneamente la exposición, desplazamiento y gamma de la imagen. - Tono/Saturación: controla los niveles de color, luminosidad y tono.

5. Uso de canal alpha - Normalmente se añaden los elementos no arquitectónicos tras el proceso de renderizado, como postproducción. Sin embargo, existe la posibilidad de renderizar árboles y personas bidimensionalmente en rhinoceros. Para ello, deberemos usar la silueta del objeto como una imagen para la transparencia y la propia imagen como mapa para diffuse color, de manera que la parte de imagen fuera de la silueta no se renderice. Así, dispondremos una serie de pla-nos verticales que pertenezcan a la capa asignada (la cual tendrá un material llamado “persona” o “árbol”, por ejemplo) que servirán a este efecto. La mayor ventaja de ésto es que la sombra arrojada por los objetos será muy realista. - Esta técnica es semejante al uso de un canal alpha. Al igual que un mapa de transparencia, el canal alpha indica qué partes de la imagen son transparentes y en qué cantidad.

1AJUSTES

+ =

[Fig 3. Menú con los principales ajustes generales de imagen]

[Fig 4. Funcionamiento del canal alpha y mapeados para transparencia]

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULOS BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI [O] LOGICS

[ 158 ]

Page 159: Rhinoceros Algorithmic Design Manual

[Fig 5. Ejemplo de fotomontaje sencillo con árbol y personas renderizadas en Rhino. Proyecto: LYULIN 1, Arnaiz & Partners]

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULOS BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI[O]LOGICS

[ 159 ]

Page 160: Rhinoceros Algorithmic Design Manual

CREACIÓN DE DIAGRAMAS Y TRABAJO CON ADOBE ILUSTRATOR

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULO BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI [O] LOGICS

[ 160 ]

Page 161: Rhinoceros Algorithmic Design Manual

[ 161 ]

Page 162: Rhinoceros Algorithmic Design Manual

I. CREAR DIBUJOS EN DOS DIMENSIONES A PARTIR DE MODELOS TRIDIMENSIONALES Rhino tiene la capacidad de generar un dibujo bidimensional a partir de un modelo tridimensional, proyectando la geometría al plano de coordenadas universales y alineando las vistas. Están disponibles las opciones para proyección de primer ángulo o de tercer ángulo. Además de las tres vistas ortográficas, se puede generar un dibujo en perspectiva bidimen-sional. La geometría puede tener segmentos duplicados y las líneas ocultas no quedan eliminadas. Se permiten opciones para crear cuatro vistas > tres vistas paralelas y una vista en perspectiva, o vistasindependientes.

1. Comando “_make2d” - El comando Dibujo2D crea un dibujo bidimensional desde un modelo de una vista. Esto es, crea curvas a partir de los objetos NURBS seleccionados como siluetas relativas al plano de construcción activo. Las curvas de las siluetas se proyectan de manera plana y luego se sitúan en el plano universal X-Y. - Acceso mediante menú Acotación>CrearDibujo2D - Opciones del comando: · Configuración de vista: Vista actual

PlanoC actual: exporta, en la vista dada, un dibujo 2d de la proyección ortogonal sobre el plano de trabajo actual

4 Vistas: exporta perspectiva isométrica y 3 vistas ortogonales, tanto para Europa como USA. · Opciones de visualización:

Mostrar bordes tangentes: a la perspectiva en que se exporte. Opción fundamental para geometrías complejas con superficies curvas Mostrar líneas ocultas: si se pretenden crear alzados, o secciones, por ejemplo, mostrando objetos ocultos. Mantener capas originales: si se mantienen, los objetos se crearán en la misma capa de origen (Rhino crea nuevas capas basadas en las capas existentes agregando las extensiones de nombre “Visible”, “Oculta” y “Anotación”), de otro modo, se pueden seleccionar si crear capas nuevas o una capa destino donde se crearán las líneas del dibujo.

[Fig 1. Botón de crear dibujo bidimensional y sus opciones]

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULOS BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI [O] LOGICS

[ 162 ]

Page 163: Rhinoceros Algorithmic Design Manual

- Notas: · Este comando no crea dibujos 2D desde objetos mallados. Puedes crear polisuperficies a partir de mallas. · Si una superficie atraviesa a otra, el comando Crear2D no creará la línea de intersección donde se cruzan las superficies. Utilice el comando Intersección para generar esta curva e inclúyala en los objetos que quiere convertir a 2D. · Una cámara con un ámgulo muy pequeño puede producir efectos extraños, como líneas muy fugadas, en el dibujo bidimensional. · Si las siluetas están a punto de solaparse con la curva en la vista, es posible que no aparezcan en la capa co-rrecta. · Mientras que no se muestre la costura de una superficie del cilindro, se mostrarán las dos costuras lineales de un cilindro hecho a partir de dos semicilindros. Es inevitable.

[Fig 2. Líneas 2d ya creadas y listas para exportar]

2. Exportación - Las líneas de un dibujo bidimensional en Rhinoceros son también entidades de trabajo, por lo que se pueden exportar a innumerables formatos, incluyendo: · IGS · DWG, DXF · 3DS · OBJ · STL · VRML · WMF · CSV, TXT · ZPR · KML · AI - No es la intención del presente documento describir todas las posibles opciones de exportación. - Exportación a Adobe Ilustrator: · Botón derecho del ratón sobre el icono guardar>exportar (exporta objetos seleccionados) · Selecciona AI · En planta se tiene la opción de exportar con escala.

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULOS BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI[O]LOGICS

[ 163 ]

Page 164: Rhinoceros Algorithmic Design Manual

3. Importación y tratamiento en Ilustrator - Al exportar, es importante tener en cuenta que Ilustrator centra el dibujo en el 0 de las coordenadas absolutas del dibujo. - Si has exportado correctamente el dibujo, éste aparecerá en el centro del papel. Ahora puedes organizar sus capas (que se exportarán con el mismo nombre que en Rhinoceros) y su apariencia. · Trata de seleccionar todos objetos en capas no visibles y asigna un trazo discontinuo de menos de un punto. · Los trazos visibles deben tener un mayor grosor, y normalmente serán continuos.

[Fig 3. Interfaz de Ilustrator CS3]

- Para importar imágenes en dibujo, ve al menú Archivo>Colocar. Hacer coincidir imagen con información vectorial puede ser relativamente complejo, y debe ser hecho, desgraciadamente, de manera manual. - Es importante organizar el archivo en capas, para poder activar y desactivar los elementos necesarios. - Recuerda activar siempre la opción “Pegar según capas” (Paste remember layers), en el menú extensible de las capas. - Una vez finalizado el trabajo en el diagrama podrás exportarlo a archivos raster.

PESTAÑAS DE INFORMACIONPESTAÑA DE DIBUJO

BARRA DE HERRAMIENTAS PRINCIPAL

BARRA DE TRAZO

BARRA DE CAPAS

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULOS BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI [O] LOGICS

[ 164 ]

Page 165: Rhinoceros Algorithmic Design Manual

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULOS BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI[O]LOGICS

[ 165 ]

Page 166: Rhinoceros Algorithmic Design Manual

INTRODUCCIÓN AL DISEÑO ALGORÍTMICO

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULO BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI [O] LOGICS

[ 166 ]

Page 167: Rhinoceros Algorithmic Design Manual

[ 167 ]

Page 168: Rhinoceros Algorithmic Design Manual

GEOMETRÍA COMPUTACIONAL AVANZADA

I. INTRODUCCIÓN AL DISEÑO ALGORÍTMICO1. Qué es el diseño algorítmico - El diseño algorítmico es todo aquel diseño que implica una serie de algoritmos, descritos e implementados bien implícitamente en el diseño, bien explícitamente. Aplicado a la arquitectura es en la gran mayoría de las veces sustituido por la expresión “diseño paramétrico”, de manera claramente errónea. Como sabemos, el diseó paramétrico es mucho más reductivo [todos los cuadrados son rectángulos, pero no todos los rectángulos son cuadrados]. Así pues, estamos frente a diseño generativo, aquél que se define mediante relaciones y procesos interrelacionados de una manera determinada y que se resuelve de una manera correcta. Dichas relaciones de comportamiento afectan a la morfología de los todos los elementos implicados en el proceso estético, constructivo, y de composición. Como consecuencia, podemos diseñar un edificio a partir de las condiciones que lo definen, que nosotros, como diseñadores, debemos tratar de identificar y modelar.

A modo de resumen, el diseño algorítmico se ocupa del proceso, de la creación de un sistema, no de una solución de-terminada. La solución de dicho sistema es una consecuencia de la evaluación del proceso, no un fin en si mismo. 2. Cómo comenzar el diseño algorítmico No deberías intentar diseñar con metodologías implícitas si no tienes unos conocimientos fundamentales de geome-tría [revisa los capítulos dedicados a topología de geometría NURBS antes de embarcarte en esta apasionante aventura]. Una vez dominados los conceptos básicos de geometría, podemos comenzar a pensar en diseñar el “origen” de dicha geometría, es decir, en vez de basar una serie de componentes en una distribución más o menos lógica, homogénea, explí-cita de geometría bien puntos, curvas...], podemos: · Modificar los componentes en función de condicionantes de diseño · Modificar el punto de partida, para que responda a condicionantes de diseño Los ejemplos que se muestran a continuación tratan de explicar, de manera clara y sencilla, cuáles son estos dos puntos de vista. A través de los ejemplos expuestos iremos viendo distintas aproximaciones al asunto del diseño algorítmico.

[Fig 1. Ejemplo de geometría generada mediante funciones recursivas]

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULOS BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI [O] LOGICS

[ 168 ]

Page 169: Rhinoceros Algorithmic Design Manual

3. Herramienta y método El diseño algorítmico es a la vez herramienta y método. Al contrario que la mayoría de herramientas proyectuales usa-das en arquitectura y construcción, las cuales son restrictivas en su uso y posibilidades [y por tanto ejercen un papel homo-geneizante], el diseño algorítmico nos permite la creación de herramientas “ad-hoc”. Esta metodología permite crear herra-mientas concretas para problemas concretos, o soluciones que, a modo de guante, se adapten perfectamente a la forma de los problemas. Dichas herramientas se podrán adaptar sin demasiado esfuerzo a las neceisdades de otro tipo de problemas.

II. CASOS DE EJEMPLO:1. Recursividad I: pirámides de Sierpinski. El triángulo de Sierpinski es un fractal que se puede construir a partir de cualquier triángulo. El fractal consiste en la subdivisión del triángulo en otros cuatro, cuyos lados se obtienen de la división de los lados del original en dos. De cada punto medio de los lados del triángulo original nacen los vértices de los finales, de la manera que se indica en el gráfico de la figura 2. Eso se efectúa de forma indefinida para cada uno de los triángulos obtenidos, o hasta que se consigue una condición de borde. La pirámide se contruye de idéntica manera, partiendo de 4 puntos, en vez de solamente 3.

Fíjate en la última frase del párrafo anterior: “esto se efectúa [repite] de forma indefinida para cada uno de los triángulos obtenidos [en cada una de las subdivisiones sucesivas]...” Esta es la definición práctica de recursividad: una operación de la cual se obtiene un objeto topológicamente idéntico al anterior, y que se repite en el propio resultado. Los fractales son ecua-ciones recursivas, de ahí su complejidad. Veamos el código que nos permite crear este tipo de geometría recursiva en Rhino.

1 -1 triangle 2 - 4 triangles 3 - 16 triangles

Option Explicit‘Script written by Adolfo Nadal‘Script by archi·o·logics www.archiologics.com

‘How to create a recursive sierpinski pyramidCall recursiveExample_tetrah()

Sub recursiveExample_tetrah()Dim tetrah, userLength‘tetrah = Rhino.GetObjects(“select your points”)tetrah = Rhino.GetPoints(False,False,”pick points”,,4)‘ in brackets whatever you want Rhino to ask the user‘ HOW CAN I KNOW THE DIMENSION OF AN ARRAY-------> UBOUNDuserLength=Rhino.GetReal(“enter minimum length for pyramid edeges”,1,1,10)subdivideTetrahedron tetrah, userLength

End Sub

Function subdivideTetrahedron(tetrah, userLength)‘ ‘blue: vb script‘ ‘black words we made up, Rhino does not understand (can teach it)Dim Length0, Length1, Length2, Length3, Length4, Length5, arrLength, minLength, vertexPts, midPt0, midPt1, midPt2, midPt3, midPt4, midPt5, tetrah0, tetrah1, tetrah2, tetrah3, tetrah4Dim Curve0, Curve1, Curve2, Curve3, Curve4, Curve5, CurvesDim Srf0, Srf1, Srf2, Srf3, PolySurface, Surfaces, userLengthCurve0 = Rhino.AddCurve(array(tetrah(0),tetrah(1)),1)Curve1 = Rhino.AddCurve(array(tetrah(1),tetrah(2)),1)Curve2 = Rhino.AddCurve(array(tetrah(2),tetrah(0)),1)

123456789101112131415161718192021222324252627

[Fig 2. Desarrollo del triángulo de Sierpinski en pasos sucesivos]

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULOS BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI[O]LOGICS

[ 169 ]

Page 170: Rhinoceros Algorithmic Design Manual

Curve3 = Rhino.AddCurve(array(tetrah(0),tetrah(3)),1)Curve4 = Rhino.AddCurve(array(tetrah(1),tetrah(3)),1)Curve5 = Rhino.AddCurve(array(tetrah(2),tetrah(3)),1)Length0 = Rhino.CurveLength(curve0)Length1 = Rhino.CurveLength(curve1)Length2 = Rhino.CurveLength(curve2)Length3 = Rhino.CurveLength(curve3)Length4 = Rhino.CurveLength(curve4)Length5 = Rhino.CurveLength(curve5)Srf0 = Rhino.AddSrfPt(array(tetrah(0),tetrah(1),tetrah(2),tetrah(0)))Srf1 = Rhino.AddSrfPt(array(tetrah(0),tetrah(3),tetrah(2),tetrah(0)))Srf2 = Rhino.AddSrfPt(array(tetrah(0),tetrah(3),tetrah(1),tetrah(0)))Srf3 = Rhino.AddSrfPt(array(tetrah(1),tetrah(3),tetrah(2),tetrah(1)))‘ in Rhino.JoinSurfaces, false does not delete input surfacesPolySurface = Rhino.JoinSurfaces(array(Srf0, Srf1, Srf2, Srf3), True)‘---------------------------------------------------------------------------‘ what is the minimum length of the 6 lines‘arrLength= Array(Length0,Length1,Length2,Length3, Length4,Length5)‘minLength = Rhino.Min(arrLength)‘ or‘minLength = Rhino.Min(Length0,Length1,Length2,Length3,Length4,Length5)‘---------------------------------------------------------------------------minLength = Length0‘this deletes the curves in every iteration since we do not want themCurves=array(Curve0, Curve1, Curve2, Curve3, Curve4, Curve5)Call Rhino.DeleteObjects(Curves)‘ if length less than x then do not subdivideIf (minLength > userLength) Then

‘--------------------------------------‘Surfaces=array(Srf0, Srf1, Srf2, Srf3)‘Call Rhino.DeleteObjects(Surfaces)‘--------------------------------------Call Rhino.DeleteObject(PolySurface)‘ get pointsvertexPts = tetrah‘ ‘ this is an array: this array is a list of points, which are arrays themselves‘ get midpoints‘ ‘ midPt0 = ((x+x1)/2,(y+y1)/2,(z+z1)/2)‘ ‘ everything in an array is separated by commas‘ ‘ in the vertexPts the first () tells which point it is, the second () tells the coor-dinatemidPt0 = Array((vertexPts(0)(0)+vertexPts(1)(0))/2,(vertexPts(0)(1)+vertexPts(1)(1))/2, (vertexPts(0)(2)+vertexPts(1)(2))/2)midPt1 = Array((vertexPts(1)(0)+vertexPts(2)(0))/2,(vertexPts(1)(1)+vertexPts(2)(1))/2, (vertexPts(1)(2)+vertexPts(2)(2))/2)midPt2 = Array((vertexPts(2)(0)+vertexPts(0)(0))/2,(vertexPts(2)(1)+vertexPts(0)(1))/2, (vertexPts(2)(2)+vertexPts(0)(2))/2)midPt3 = Array((vertexPts(0)(0)+vertexPts(3)(0))/2,(vertexPts(0)(1)+vertexPts(3)(1))/2, (vertexPts(0)(2)+vertexPts(3)(2))/2)midPt4 = Array((vertexPts(1)(0)+vertexPts(3)(0))/2,(vertexPts(1)(1)+vertexPts(3)(1))/2, (vertexPts(1)(2)+vertexPts(3)(2))/2)midPt5 = Array((vertexPts(2)(0)+vertexPts(3)(0))/2,(vertexPts(2)(1)+vertexPts(3)(1))/2, (vertexPts(2)(2)+vertexPts(3)(2))/2)tetrah0 = array(vertexPts(0),midPt0,midPt2,midPt3)tetrah1 = array(midPt0,vertexPts(1),midPt1,midPt4)tetrah2 = array(midPt1,vertexPts(2),midPt2,midPt5)tetrah3 = array(midPt3,midPt4,midPt5,vertexPts(3))‘ recursevelly call this functionsubdivideTetrahedron tetrah0,userLengthsubdivideTetrahedron tetrah1,userLengthsubdivideTetrahedron tetrah2,userLengthsubdivideTetrahedron tetrah3,userLength

End IfEnd Function

282930313233343536373839404142434445464748495051525354555657585960616263646566676869

70

71

72

73

74

7576777879808182838485

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULOS BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI [O] LOGICS

[ 170 ]

Page 171: Rhinoceros Algorithmic Design Manual

En este caso, seleccionaremos 4 puntos, 3 correspondientes a la base de la pirámide, y el último a la altura de la misma. No importa la forma, puesto que el programa se ocupa de dividir los segmentos correspondientes independientemente de su posición.

Aunque está perfectamente comentado, vamos a ver brevemente las partes más relevantes del código:

2. Recursividad II: un pabellón panelizado. El pabellón que se propone surge de la misma idea de subdivisión recursiva. El fractal propuesto es semejante al trián-gulo de Sierpinski, pero toma cierto volumen de la manera en que se muestra en la figura 3. El triángulo medio se desplaza en la dirección normal al primero, de manera que los triángulos perimetrales se colocan con cierta pendiente. Para cada uno de estos elementos, el proceso se repite hasta que el perímetro del triángulo alcanza un límite mínimo por debajo del cual no hay más recursividad y se detiene la subdivisión.

BASE SURFACE

mid 1

mid 2

mid 3

SUBDIVISION ELEVATION

Option Explicit pide a Rhino que mire que TODAS las variables se han declarado antes de usarse, esto esútil para verificar la corrección del script. Las líneas 2,3 y 5 son comentarios.Llamada a la subrutina principalComienzo de la subrutina, que abarca hasta la línea 16, cuando se cierra. Todo el bloque enrte la línea 9 y la 16 se considera subrutina.Declaración de la variable tetrah, y adquisición de las coordenadas de los 4 puntos que se necesitan para la ejecución del script.En esta línea establecemos el límite de la subdivisión: cuando una de las aristas de la pirámide alcance la longitud especificada, el script dejará de correr.Llamada a la función principal de subdivisión “subdivideTetrahedron”, que se llamará a si misma en las líneas 80 a 83. Fíjate que la función necesita solamente los cuatro puntos de la matriz tetrah, y la condición de parada de la función. Si no introducimos dicha función, el programa correría hasta agotar la memoria del ordenador [es decir, ¡subdiviría hasta el infinito!]Comienzo de la función SubdivideTetrahedron, que se llama en la línea 15.Declaraciones de las variables que se van a usar en el script.Creación de las líneas auxiliares que nos van a permitir hacer la subdivisión [de estas líneas se obtiene el punto medio].Otención de la longitud de cada una de dichas líneas.Creación de las cuatro superficies que constituyen las caras de la pirámide.Unión de dichas superficies en una única polisuperficie.Asignación de la longitu del primer borde como mínima distancia para comprobar si se debe continuar ejecutando el script.Borrado de las curvas auxiliares.Es aquí donde se hace el truco completo. Evaluaremos la condiciones que hemos establecido y, si procede, se llamará de nuevo a la función “subdivideTetrahedron” ¡desde ella misma! Veamos en detalle:Evaluación de la condición de longitud de artista mediante la estructura de control de flujo “If... then...end if”Borrar la polisuperficie hecha hasta ahora, ya que vamos a subdividir de nuevoCalcular todos los puntos medios que necesitamos, 6 en total.Crear las pirámides con los puntos obtenidos, son cuatro caras a partir de 6 puntos.Llamar la función de nuevo para cada uno de los tetraedros, esto es, subdividir cada una de las pirámides nuevas en tantas veces como para la orginal [el crecimiento de geometría es claramente exponencial, como puedes ver.Final de la función

1 -5

6

9-1114

15

1821-2425-3031-3637-40425052-5355-90

556069-7475-7880-83

85

[Fig 3. Desarrollo del triángulo de Sierpinski modificado]

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULOS BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI[O]LOGICS

[ 171 ]

Page 172: Rhinoceros Algorithmic Design Manual

Option Explicit‘Script written by Adolfo Nadal ‘Script by archi·o·logics www.archiologics.com

‘How to create a recursive structureCall recursiveExample()

Sub recursiveExample()Dim triangletriangle = Rhino.GetObject(“select your triangle”,8)‘ in brackets whatever you want Rhino to ask the userRhino.EnableRedraw FalsesubdivideTriangle(triangle)Rhino.EnableRedraw True

End Sub

Function subdivideTriangle(triangle)‘blue: vb script‘black words we made up, Rhino does not understand (can teach it)Dim triangleLength, vertexPts, midPt0, midPt1, midPt2, triangle0, triangle1, triangle2, triangle3Dim centerPoint, triangleCrv, srfParam, srfNormal‘1 extract a polyline from a surface‘to extract a line the best is to write the command directly, therefore we us that. We need ‘to do what the command requires, therefore enter‘we do not write the brackets, since we do not need to return anythingRhino.SelectObject triangleRhino.Command(“_DupBorder enter”)triangleCrv = Rhino.FirstObjecttriangleLength = Rhino.CurveLength(triangleCrv)‘ the FIRST OBJECT COMMAND returns the LAST OBJECT CREATED BY THE USERIf(triangleLength > 10) Then

‘ centerptcenterPoint = CurveAreaCentroid(triangleCrv)‘ normalsrfParam = Rhino.SurfaceClosestPoint(triangle, centerPoint(0))srfNormal = Rhino.SurfaceNormal(triangle, srfParam)‘ get corners of each trianglevertexPts = Rhino.PolylineVertices(triangleCrv)‘ get midpoints of each edge‘ in the vertexPts the first () tells which point it is, the second the coordinatemidPt0 = Array((vertexPts(0)(0)+vertexPts(1)(0))/2,(vertexPts(0)(1)+vertexPts(1)(1))/2, (vertexPts(0)(2)+vertexPts(1)(2))/2)midPt1 = Array((vertexPts(1)(0)+vertexPts(2)(0))/2,(vertexPts(1)(1)+vertexPts(2)(1))/2, (vertexPts(1)(2)+vertexPts(2)(2))/2)midPt2 = Array((vertexPts(2)(0)+vertexPts(0)(0))/2,(vertexPts(2)(1)+vertexPts(0)(1))/2, (vertexPts(2)(2)+vertexPts(0)(2))/2)‘ now we have the three midpoints‘ scale and normalize vectorsrfNormal = Rhino.VectorUnitize(srfNormal)srfNormal = Rhino.VectorScale(srfNormal, triangleLength*0.1)‘move midpoints by normalmidPt0 = Rhino.VectorAdd(midPt0, srfNormal)midPt1 = Rhino.VectorAdd(midPt1, srfNormal)midPt2 = Rhino.VectorAdd(midPt2, srfNormal)‘ draw 4 new triangles based on midpoints‘ order is important to know the normal directiontriangle0 = Rhino.AddSrfPt(array(vertexPts(0), midPt0, midPt2))triangle1 = Rhino.AddSrfPt(array(vertexPts(1), midPt1, midPt0))triangle2 = Rhino.AddSrfPt(array(vertexPts(2), midPt2, midPt1))

‘recursively call this functionsubdivideTriangle(triangle0)subdivideTriangle(triangle1)subdivideTriangle(triangle2)

123456789101112131415161718192021222324252627282930313233343536373839404142

43

44

454647484950515253545556575859606162

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULOS BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI [O] LOGICS

[ 172 ]

Page 173: Rhinoceros Algorithmic Design Manual

Al contrario que en el caso anterior, este script está basado en una superficie, de la cual extraeremos el borde, y que servirá de base para encontrar los vértices que necesitamos. Es un proceso distinto para alcanzar el mismo resultado. Una vez más, la forma no es relevante, puesto que el programa se ocupa de dividir los segmentos correspondientes independiente-mente de su posición.

Aunque está perfectamente comentado, vamos a ver brevemente las partes más relevantes del código:

‘borrar el triángulo originalRhino.DeleteObjects Array(triangle, triangleCrv)

End IfEnd Function

63646566

Llamada a la subrutina principalObtención del triángulo inicial, restringido a superficie.Llamada de la función subdivideTriangle, que ejecuta la subdivisión.Comienzo de la función subdivideTriangle.Declaraciones de las variables principales que se necesitan para la ejecución del script.Obtención del perímetro de los triángulos para evaluarlo como condición para continuar las subdivisiones.Seleccionar la superficie triangularDuplicar el borde mediante acceso al comando de RhinoObtención de dicho objeto accediendo a la lista de objetos creada de Rhino. El primer objeto en la lista es el último objeto creado.Medición de la curva de perímetro obtenida en el paso anterior.Evaluación de la condición de subdivisión. Si cumple la condición [el perímetro es menor de 10 unidades en este caso] enton-ces se ejecutarán las siguientes líneas [ de la 33 a la 64].Cálculo del centroide del triángulo.Obtención del punto de centroide en la superficie, mediante el comando “SurfaceClosestPoint”Obtención de la normal a la superficie en ese punto.Obtención de los vértices del borde de la superficie.Obtención de los puntos medios de cada arista.Escalar el vector normal para una distancia deseada: ha de hallarse el vector unitario primero, luego escalarlo.Aplicar la transformación del vector normal a cada uno de los puntos medios hallados con anterioridad.Creación de los tres triángulos que después se subdividirán.Llamar la función subdivideTriangle con cada una de las superficies de los triángulos obtenidos por subdivisión.Borrar el triángulo que ha dado origen a la subdivisiónFinalizar la función

61013172027-30272829

3032

3436373942-4447-4850-5255-5760-626466

[Fig 4. Resultado del fractal]

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULOS BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI[O]LOGICS

[ 173 ]

Page 174: Rhinoceros Algorithmic Design Manual

3. Aleatoriedad y dirección: una escultura automática En este caso vamos a aplicar scripting para la realización de un elemento escultórico automatizado. De nuevo, a partir de una figura geométrica, crearemos las condiciones para obtener una estructura reiterativa, guiada por un punto. Los prin-cipales pasos que se siguen son los siguientes: - Obtención del elemento base - Elección aleatoria de una cara - Creación a partir de dicha cara de una pirámide triangular - Repetición del proceso con una de las caras de la pirámide. Así pues, la idea es crear una pirámide a partir de una cara dada, seleccionar una cara [que no sea la ya obtenida] de dicha pirámide y continuar el proceso de manera indefinida hasta que se cumpla una condición determinada. Para orientar el proceso, se selecciona además un punto “atractor”, hacia el que se orientará la superficie automáticamente. Así pues, la distancia a ese punto podrá servir de condición para la finalización del proceso de creación de geometría.

Option Explicit‘Script written by Adolfo Nadal ‘Script by archi·o·logics www.archiologics.com

‘How to create an oriented sculptureCall Main()

Sub Main() Dim strObject : strObject = Rhino.GetObject (“Select your surface”,8) Dim arrPt : arrPt = Rhino.GetPoint (“Select your attractor”) Dim stopDist : stopDist = Rhino.GetReal (“Select minimum distance for pyramid to stop”) Call MakePyramid(strObject,arrPt, stopDist)End Sub

Function MakePyramid(strObject,arrPt,stopDist) ‘Obtain center of surface Dim ctPt : ctPt = Rhino.EvaluateSurface(strObject, Rhino.SurfaceClosestPoint(strObject, Rhino.SurfaceAreaCentroid(strObject)(0))) ‘Make vector to point (scale by border length Dim dirVec dirVec = arrPt dirVec = Rhino.SurfaceNormal(strObject,Rhino.SurfaceClosestPoint(strObject, Rhino.SurfaceAreaCentroid(strObject)(0))) ‘dirVec = Rhino.PointSubtract(arrPt,ctPt)

1234567891011121314151617

1819202122

23

[Fig 5. Escultura automática]

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULOS BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI [O] LOGICS

[ 174 ]

Page 175: Rhinoceros Algorithmic Design Manual

dirVec = Rhino.VectorUnitize (dirVec) ‘dirVec = Rhino.VectorScale(dirVec,0.5) dirVec = Rhino.VectorAdd(dirVec,ctPt) ‘Make pyramid Dim arrFaces, face1,face2,face3, border Dim arrPts border = Rhino.JoinCurves(Rhino.DuplicateEdgeCurves(strObject),vbtrue)(0) arrPts = Rhino.PolylineVertices(border) Rhino.DeleteObject border face1 = Rhino.AddSrfPt(array(arrPts(0),arrPts(1),dirVec)) face2 = Rhino.AddSrfPt(array(arrPts(1),arrPts(2),dirVec)) face3 = Rhino.AddSrfPt(array(arrPts(2),arrPts(0),dirVec)) arrFaces = array(face1,face2,face3) ‘Obtain face closest to point with centroid Dim arrCtPt1,arrCtPt2,arrCtPt3 arrCtPt1 = Rhino.EvaluateSurface(face1, Rhino.SurfaceClosestPoint(face1, Rhino.SurfaceAreaCentroid(face1)(0))) arrCtPt2 = Rhino.EvaluateSurface(face2, Rhino.SurfaceClosestPoint(face2, Rhino.SurfaceAreaCentroid(face2)(0))) arrCtPt3 = Rhino.EvaluateSurface(face3, Rhino.SurfaceClosestPoint(face3, Rhino.SurfaceAreaCentroid(face3)(0))) Dim arrCtPts : arrCtPts = array(arrCtPt1,arrCtPt2,arrCtPt3) Dim minDist,j, winner, curDist minDist = 1000000 For j = 0 To Ubound(arrCtPts) curDist = Rhino.Distance(arrCtPts(j),arrPt) If curDist<minDist Then minDist = curDist winner = j End If If curDist<stopDist Then Exit Function End If Next Rhino.Print “winner “ & winner ‘do new surfaces with holes and delete former Dim arrBorderI(2), inBorderI(2) arrBorderI(0) = Rhino.JoinCurves(Rhino.DuplicateEdgeCurves(face1),vbtrue)(0) arrBorderI(1) = Rhino.JoinCurves(Rhino.DuplicateEdgeCurves(face2),vbtrue)(0) arrBorderI(2) = Rhino.JoinCurves(Rhino.DuplicateEdgeCurves(face3),vbtrue)(0) inBorderI(0) = Rhino.ScaleObject (arrBorderI(0),arrCtPt1,array(0.85,0.85,0.85),vbTrue) inBorderI(1) = Rhino.ScaleObject (arrBorderI(1),arrCtPt2,array(0.9,0.9,0.9),vbTrue) inBorderI(2) = Rhino.ScaleObject (arrBorderI(2),arrCtPt3,array(0.6,0.6,0.6),vbTrue) Dim i For i = 0 To Ubound(arrBorderI) Rhino.SelectObjects(array(arrBorderI(i),inBorderI(i))) Rhino.Command “-_Loft _enter _enter”,0 Rhino.UnselectAllObjects Next ‘repeat process until condition is met MakePyramid arrFaces(winner),arrPt,stopDist Rhino.DeleteObjects arrFaces Rhino.DeleteObject strObject

End Function

2425262728293031323334353637383940414243

44

45

46474849505152535455565758596061626364656667686970717273747576777879808182838485

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULOS BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI[O]LOGICS

[ 175 ]

Page 176: Rhinoceros Algorithmic Design Manual

Adjuntamos de nuevo una breve descripción del código:

4. Utilidades I: Cálculo y visualización de pendientes en un terreno a partir de una malla tridimensional. A continuación mostraremos cómo el diseño algorítmico y la programación pueden aplicarse fácilmente a la creación de herramientas personalizadas. A veces es preciso modelar terrenos, e inmediatamenet después usar dichos modelos de terrenos para detectar zonas en las que, debido a la pendiente, no es posible construir. Podríamos pensar, además, en incluir zonas en las que el terreno tenga forma cóncava, susceptible de albergar corrientes de agua. Esta segunda parte te la dejo a ti como ejercicio. Hay algunos pasos previos al ahora de realizar este ejercicio. - Si partes de una superficie, crea la malla correspondiente - Si tienes alguna cara con cuatro vértices [quads], conviértelos a triángulos. En caso contrario, no deberás hacer nada y ya puedes aplicar el script. El script es relativamente sencillo, todo lo que debes hacer se reduce a los siguientes pasos: - Obtener los vértices de la malla - Calcular el ángulo de cada cara, relativo a la horizonal - Convertir el ángulo a las unidades correspondientes, para poder identificar las zonas de mayor y menor pendiente dentro de la malla. - Calcular, para cada vértice, el ángulo medio de todas las caras que comparte . En función del ángulo, asignar un color a cada vértice de la malla - Finalmente, asignar dicho color a cada uno de los vértices para su displau. En este caso, será un color no visible en el renderizado, sí en modo sombreado o “shaded” .

De nuevo, como ejercicio, puedes probar a intentar asignar los intervalos de pendientes en función de input introduci-do por el usuario, de manera que sea él quien decida qué intervalos de pendiente son apropiados para cada actuación.

Como es habitual, a continuación presentamos una descripción del código, que pretende complementar la que ya se ha incluido en el mismo rvb como comentarios. Verás, al probar el script, que la resolución de los gradientes es mayor cuanto mayor es el número de caras. Es responsabilidad tuya manejar la malla para optimizar el resultado sin incrementar sustancial-mente la cantidad de geometría del modelo.

Subrutina principal: en ésta se obtienen todos los objetos e inputs necesariosComienzo de la función MakePyramidObtención del centroide de las superficies. Fíjate que en este caso hemos incluido unas funciones dentro de otras, de manera que los resultados de las de más dentro sirven de inoput a las siguientes. Siempre que tengas este tipo de estructura de fun-ciones comienza a leer de dentro hacia fuera, de la más interna a la más externa. Este es el orden en el que Rhino ejecutará el código.Obtención del vector normal de la superficie. Dicho vector se normaliza [se hace unitario], y posteriormente debe “colocarse en su sitio”, para lo cual es necesario añadirlo al centroide.Obtenemos el borde de la superficie triangular, para poder escalarlo posteriormente. La idea es crear, con dichas curvas, una superficie con un hueco en el centro. Podríamos simplificar el proceso si no hacemos los huecos, la diferencia la ves en la figura 5.Creación de las superficies de la pirámide. Nos servirán para hallar la distancia del centroide al atractor, condición de parada del script. Si la distancia es menor que la mínima introducida por el usuario en la línea 11, entonces para la función, y por tanto el script.Obtención de los centroides de cada una de las caras.Obtención del centroide más cercano al punto atractor.Obtención de los bordes de las superficies y de los bordes interiores [que son los primeros escalados un porcentaje distinto para cada cara].Superficies de loft entre dichas curvas.Repetición de todo el proceso. Si se ha llegado hasta aquí, entonces no hemos llegado lo suficientemente cerca al punto.Borrar objetos innecesarios

8-1315-8517

20-27

30-34

36-39

42-4648-6065-71

73-788182-83

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULOS BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI [O] LOGICS

[ 176 ]

Page 177: Rhinoceros Algorithmic Design Manual

Option Explicit‘Script written by Adolfo Nadal‘Script by archi[o]logics www.archiologics.com

Call Main()Sub Main() Dim strmesh : strmesh = Rhino.GetObject (“Select your terrain mesh”,32) ‘nrVC = number of vertices Dim nrVC : nrVC = Rhino.MeshVertexCount(strmesh)-1 ‘arrV = vertices ‘arrVN = vertex normals Dim arrV,arrVN arrVN = Rhino.MeshVertexNormals (strMesh) arrV = Rhino.MeshVertices(strMesh) ‘arrVNP = vertex normals projected (z = z of mesh vertex) Dim arrVNP ReDim arrVNP(nrVC) ‘arrVC = nr times vertices Color has changed for each vertex Dim arrVC() ReDim arrVC(nrVC) Dim arrVCRGB() ReDim arrVCRGB(nrVC) Dim i For i = 0 To Ubound (arrVCRGB) arrVCRGB(i) = Array(0,0,0) Next Dim arrFV : arrFV = Rhino.MeshFaceVertices(strMesh) ‘face vertices contains the index of the vertices contained in arrV Dim j, k For j = 0 To Ubound (arrFV) For k = 0 To Ubound (arrFV(j)) Dim arrVNtmp, arrVNPtmp,arrVtmp arrVtmp = arrV(arrFV(j)(k))

123456789101112131415161718192021222324252627282930313233343536373839

[Fig 6. Script aplicado a mallas de distinta densidad sobre el mismo terreno - la resolución de la definición es sensiblemente mejor en la malla de la izquierda]

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULOS BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI[O]LOGICS

[ 177 ]

Page 178: Rhinoceros Algorithmic Design Manual

arrVNtmp = arrVN(arrFV(j)(k)) arrVNtmp = Rhino.VectorAdd(arrVNtmp,arrVtmp) arrVNPtmp = arrVNtmp arrVNPtmp(2) = arrVtmp(2) arrVC(arrFV(j)(k)) = arrVC(arrFV(j)(k)) + 1 ‘calc angle Dim angle angle = 90-Rhino.Angle2(array(arrVtmp,arrVNtmp),array(arrVtmp,arrVNPtmp))(0) angle = Rhino.ToRadians(angle) angle = rad2Slope(angle) ‘add up value Dim arrColor arrColor = calcColor(angle) arrVCRGB(arrFV(j)(k))(0) = arrVCRGB(arrFV(j)(k))(0) + arrColor(0) arrVCRGB(arrFV(j)(k))(1) = arrVCRGB(arrFV(j)(k))(1) + arrColor(1) arrVCRGB(arrFV(j)(k))(2) = arrVCRGB(arrFV(j)(k))(2) + arrColor(2) Next Next ‘Divide values Dim finalColorArray ReDim finalColorArray(nrVC) For i = 0 To Ubound (arrVCRGB) If arrVC(i)>0 Then arrVCRGB(i) = Rhino.VectorScale(arrVCRGB(i),1/arrVC(i)) End If finalColorArray(i) = RGB(arrVCRGB(i)(0),arrVCRGB(i)(1),arrVCRGB(i)(2)) Next ‘Change mesh color Rhino.MeshVertexColors strMesh,finalColorArrayEnd Sub

Function rad2Slope (radians) rad2Slope = Rhino.TanH(radians)End Function

Function calcColor(angle)

If angle <= 0.17183 Then calcColor = array(0,150,0) End If If 0.17183 < angle And angle <= 0.34334 Then calcColor = array(145,255,0) End If If 0.34334 < angle And angle <= 0.45739 Then calcColor = array(255,255,0) End If If 0.45739 < angle And angle <= 0.68428 Then calcColor = array(255,145,0) End If If angle > 0.68428 Then calcColor = array(255,0,0) End If

End Function

40414243444546474849

50515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULOS BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI [O] LOGICS

[ 178 ]

Page 179: Rhinoceros Algorithmic Design Manual

Un vistazo rápido al script permite ver que está divido en 3 partes: - Subrutina principal, desde donde se ejecutan las diferentes funciones - Función rad2Slope, que calcula la correspondencia en tanto por ciento de in ángulo medido en radianes - Función calcColor, que calcula los valores RGB de color en función del ángulo. Puedes cambiar dichos valores en las líneas correspondientes.

Echemos un vistazo rápido al código:Subrutina principal: en ésta se obtienen todos los objetos e inputs necesariosObtención del objeto malla por el usuarioObtención del número de vértices de la mallaDeclaración de las variables que contienen las normales de los vértices y los vértices de la malla [ambos son arrays de arrays de [x,y,z].Cálculo de la proyección zobre el plano Z=0 de las normales de los vértices. Esto nos permitirá calcular el ángulo de la normal respecto al plano horizontal para la asignación de color posterior. Como cada vértice comparte más de una cara [excepto los vértices que formen el borde de la malla], deberemos obtener varias normales, y la media entre ellas. Esto lo haremos teniendo en cuenta las veces que cada vértice ha sido incluido en un cálculo de color.Guardado en una matriz de cuántas veces se ha accedido a un vértice concreto de la malla, así como de su color “acumulado”. Al terminar, haremos la media del color con el número de veces que se haya “visitado” cada vértice.Inicialización de la matriz de colores, con valores 0,0,0 para Red, Green y Blue [RGB]Acceso a las caras de la malla. La información que contienen éstas son los índices de los vértices que se han guardado en la variable arrV, que almacena todas las coordenadas de los vértices de manera ordenada. Explicaremos la tpología de las mallas posteriormente.Todo el truco, realmente, está en estas líneas, veamos detenidamente: en primer lugar, es necesario acceder a cada cara de la malla, y para cada cara a cada vértice. En cada vértice calcularemos su normal, su normal proyectada [que ya tenemos guarda-das], así como el ángulo ente ellas. Con este ángulo calcularemos el color correspondiente y lo añadiremos al color “acumulado” de cada vértice. Para cada vértice, aumentaremos su número de “visitas” en 1, con el fin de calcular finalmente la media de color acumulado con todas las visitas: - Loop a lo largo de todas las caras - Loop para todos los vértices de cada cara:

· Declaración de las variables que van a albergar temporalmente los siguientes valores: x,y,z del vértice; x,y,z de la normal del vértice; x,y,z de la proyección de la normal del vértice · Obtención del valor correspondiente a las coordenadas del vértice · Obtención del valor correspondiente a las coordenadas del vector normal al vértice· Desplazamiento del vector normal a su “situación real”. Recuerda que los vectores están basados, por de-fecto, en (0,0,0).· Obtención del valor del vector normal proyectado. Inicialmente será igual que el normal, pero con su coor-denada z a la misma altura que el punto base del vector normal.· Asignación de la coordenada z del vector proyectado para ponerla a la misma altura que la coordenada z del vértice [punto de aplicación del vector normal].· Declaración de la variable ángulo, que guardará el ángulo incialmente en grados [49], luego en radianes [50] y finalmente en tanto por uno [51], según vayamos usando las funciones de transformación correspon-dientes.· Cálculo del ángulo entre el vector normal y su proyección· Transformación del ángulo a radianes· Transformación del ángulo de radianes a tanto por uno: llamada a la función rad2Slope de las líneas 76-78.· Declaración de la variable color, para sumarla al total en RGB· Cálculo del color a partir del ángulo en tanto por uno. Llamada a la función calcColor de las líneas 80-98.· Asignacion de los valores RGB. Fin de los loops.

Una vez tenemos todos los valores acumulados, podemos proceder a calcular las medias. Esto es sencillo, y podemos hacerlo con un loop sobre todos los vértices de la malla. Declaración de la variable finalColorArray, que albergará los colores definitivos.Dimensionar la matriz con el número de vértices.Estructura de loop: asignación de los colores.Finalmente, asignar la matriz de colores a la malla.

6-7471014-16

18-20

22-26

28-3133

36-60

363738

394041

42

44

48

495051545556-5863

6465-7073

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULOS BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI[O]LOGICS

[ 179 ]

Page 180: Rhinoceros Algorithmic Design Manual

5. Topología de las mallas: una explicación sencilla

La topología de las mallas es realmente sencilla: se trata de dos matrices independientes. - Por un lado, la matriz que alberga los vértices [puntos en el espacio] - Por otro, una matriz que alberga índices, que corresponden a aquéllos de la anterior. De esta manera, para cada cara se establece una correspondencia ente los índices de los vértices y dichos puntos, de-finiendo cada cara. Así, la malla es un conjunto de caras, que no son más que unas referencias a la nube de puntos. Esta estructura evita la repetición de puntos innecesaria, puesto que la mayoría de vértices son compartidos por varias caras.

Array de vértices

0123........N

(x0,y0,z0)(x1,y1,z1)(x2,y2,z2)(x3,y3,z3)........(xN,yN,zN)

Array de caras Ejemplo

0123...M

(M0,M0,M0)(M1,M1,M1)(M2,M2,M2)(M3,M3,M3)...(NM,NM,NM)

CARA

92

VÉRTICES[INDICES]

32

29

55

VÉRTICES [COORDENADAS]

(x32,y32,z32)

(x29,y29,z29)

(x55,y55,z55)

[Fig 7. Topología de una malla con el ejemplo de una cara]

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULOS BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI [O] LOGICS

[ 180 ]

Page 181: Rhinoceros Algorithmic Design Manual

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULOS BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI[O]LOGICS

[ 181 ]

Page 182: Rhinoceros Algorithmic Design Manual

CONCLUSIONES

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULO BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI [O] LOGICS

[ 182 ]

Page 183: Rhinoceros Algorithmic Design Manual

[ 183 ]

Page 184: Rhinoceros Algorithmic Design Manual

El manual permite un conocimiento profundo de la herramienta de diseño. Sin embargo, el mayor énfasis se ha puesto en la aplicación de la misma a la metodología, creando un ambiente híbrido que busca, a través de una cierta confusión inicial, la inmersión efectiva en procesos reales de diseño.

Partiendo de una introducción básica a la herramienta, el manual comienza rápidamente a ganar en complejidad, tocando puntos de modelado en 2 y 3 dimensiones, representación y diagramática de proyectos, así como asuntos de presen-tación y comunicación de los mismos. Finalmente, se hace una introducción a las potencialidades del diseño algorítmico a través de scripting [una vertiente relativamente desconocida pero que ofrece muchas posibilidades], en la que se tocan puntos de recursividad, animaciones, exportación de archivos a Excel y otros formatos, y personalización de la interfaz.

Así pues, el manual es un compendio eficiente y sugerente de métodos que pueden aplicarse por arquitectos, dise-ñadores, gestores de obra y proyectos, en todas las fases del mismo, desde su concepción, promoción y construcción, hasta la gestión posterior del mismo.

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULOS BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI [O] LOGICS

[ 184 ]

Page 185: Rhinoceros Algorithmic Design Manual

ARCHIOLOGICSDISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULOS BÁSICO Y MEDIOADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI[O]LOGICS

[ 185 ]