Page 1

ARCHIOLOGICS WWW.ARCHIOLOGICS.COM DISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MODULOS BASICO Y MEDIO

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


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

INTRODUCCIÓN A LA INTERFAZ

[ 2 ]


[ 3 ]


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

I. INTERFAZ DE RHINOCEROS 1. 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 vistas por 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. 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

[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 herramientas 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 botones 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.

[ 4 ]


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

4. Botones desplegables Un botón de una barra de herramientas puede incluir otros botones con comandos en una barra de herramientas con botones desplegables. Normalmente las barras de herramientas desplegables contienen variaciones del comando base. Después de 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 herramientas para ejecutar un comando. 5. Área gráfica El área gráfica de Rhino puede personalizarse para adecuarla a sus preferencias. La disposición de las vistas puede configurarse de maneras diferentes. 6. Vistas Las 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 vistas Los 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 Disposición de las vistas y luego en Mostrar fichas de las vistas.

[ 5 ]


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

II. ÁREA DE COMANDOS El área de comandos muestra los comandos y las solicitudes de los comandos. Puede fijarse en la parte superior o inferior 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 recientes Haga clic con el botón derecho en la línea de comandos para ver los comandos más recientes. Para repetir el comando, selecció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.

[ 6 ]


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

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ú sombreado]: · 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.

[ 7 ]


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

- 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

[ 8 ]


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

IV. APÉNDICE: INTERFAZ 1. Barras de herramientas

2. Vistas

[ 9 ]


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

3. Toolbar Layout y opciones de visualización

4. CodeMonkey

[ 10 ]


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

5. Principales barras de herramientas de diseño

[ 11 ]


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

INTRODUCCIÓN AL MODELADO 2,5D

[ 12 ]


[ 13 ]


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

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.

2.56

3.78

1.890.71 3.20 0.761.84 4.44 1.70

5.20

14.54 10.34

6.90

1.70

5.20

3.44

5.09

Ø3.20

7.64

0.71

Ø8.40

1.25

1.60 1.70

7.60

2.50

4.20

4.89

1.25 2.07 3.32

2.77

1.58 1.70 5.00 1.70 1.58

2.50 0.79 0.79

5.80

1.53

4.30

[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”. Posteriormente, 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 abandonando estas herencias, y dibujaremos de manera más libre.

[ 14 ]


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

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 conveniente (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. Polilínea Línea Vertical (perpendicular a CPlane actual)

Circunferencia centro-radio Extender línea Empalmar Achaflanar Desfasar Reconstruir

[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.

[ 15 ]


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

[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 necesitas. Es posible, además, que necesites realizar operaciones booleanas de sustracción para crear los huecos de la pieza. Accede a ellas en la barra de herramientas principal 2>operaciones booleanas.

[ 16 ]


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

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 dimensiones 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 resultado 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 copiaremos las veces necesarias).

[ 17 ]


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

[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 modelo 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 encontrar 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 control de la superficie del peldaño (no se pueden activar los de polisuperficies). Esto mostrará una serie de puntos interconectados 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.

[ 18 ]


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

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ñadida 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 objetos 0.2m en sentido perpendicular al plano que los contiene.

[ 19 ]


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

· 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. 10.00

1.25

1.25

1.25

1.25

1.25

1.25

1.25

1.25

1.25

1.25

1.25

1.25

1.25

1.25

1.25

1.25

0.50 0.50 0.10 0.15

0.09

4.82

5.00

0.09

[Fig 2] Dimensiones de la fachada

[ 20 ]


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

[ 21 ]


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

MODELADO E HISTORIAL CONCEPTOS BÁSICOS DE TOPOLOGÍA

[ 22 ]


[ 23 ]


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

I. MODELADO Y COMANDO HISTORY. ANÁLISIS 1. 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”, representació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”.

Punto de control Polígono de control, curva grado 1 Curva grado 2 Curva grado 3 Curva grado 4 Curva grado 5 Curva grado 6 Interpolación para curva grado 2

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

[ 24 ]


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

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 paramé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]

[ 25 ]


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

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 mueven 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 discontinuo 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 pinzamientos 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 control 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

[ 26 ]


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

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]

[ 27 ]

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.”


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

II. COMANDO HISTORY. USOS 1. 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]

[ 28 ]


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

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 determinados 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 principal 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 descendientes 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 accidentales. 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 predeterminada, 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]

[ 29 ]


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

MODELADO TRIDIMENSIONAL E INFORMACIÓN PLANIMÉTRICA

[ 30 ]


[ 31 ]


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

I. MODELADO 3D En el siguiente ejercicio modelaremos un edificio sencillo de un proyecto tipo de vivienda unifamiliar. Veremos asimismo las diferencias de modelasr con diferentes comandos de superficies, y su repercusión en la aplicación de jerarquía e historial. 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 trabajo. 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 encontramos 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]. Obviamente, 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 plano 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

[ 32 ]


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

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 sobre superficie>Curva desde objeto>Contorno”. Tiene un funcionamiento similar a la herramienta de sección, y efectúa, de hecho, 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 tutorial 1. 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”, “Dimensions”, “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 directamente 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.

[ 33 ]


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

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 desbloquearla. 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 tratando 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 indistintamente 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 creación de muros y geometría tridimensional. Para las curvas, usaremos curvas de grado 3, en los puntos de intersección indicados [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 dimensiones 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 posteriori 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.

[ 34 ]


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

12.00 6.00

12.00

6.00

4.75

1.25 7.44

1.00

1.81

1.53

2.31

6.40

1.70

11.40

11.40

R5.00

R2.50

0.20

8.20

5.00

4.00

0.20

0.22

4.00 2.00

3.60

6.00

7.20

3.60

4.00

18.60

2.00 2.00

R5.00 R2.50

11.31°

0.20

5.00

11.40

15.19

15.00

18.60

10.00

11.31°

2.28

3.72

3.72

6.00

6.00

6.00

12.00

12.00 4.34

4.34 1.00

1.81

1.53

0.84

1.81

1.28

16.47

4.97 3.00

3.70

0.700.70

3.50

3.00

3.00

R10.88

2.00

0.50

0.20

2.50

30.56

30.96

4.13

0.20

4.09

18.97

16.47

15.12

10.99

7.66

R9.24

0.91

2.50

9.49

10.67

6.80

7.25

9

9.49

11.9

6.20

0.20

2.63

2.55

5.80

5.79 6.20

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

[ 35 ]

0.21


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

18.60

3.72 6.00 7.20

1.70

2.31

0.20

4.00 7.44

11.31°

12.00

2.00

2.00

1.00

6.00

4.00 0.20

1.81

1.53

11.40

8.20

0.22

6.00

15.19 0.20 6.00 12.00

1.25

11.31°

10.00 15.00

3.60 3.60

6.40

5.00 11.40

6.00

4.75

5.00

12.00

2.00

2.28

6.00

4.00

3.72

R2.50

R2.50

R5.00

11.40 R5.00

18.60

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

[ 36 ]


ARCHIOLOGICS DISEÑO ALGORITMICO, PARAMÉTRICO Y BIM - MÓDULOS BÁSICO Y MEDIO

1.28

0.21

0.50

0.20

3.50

4.97 4.09 15.12

10.99

4.13

R10.88

0.20

10.67

9.49

9

2.50

18.97

5.80

7.66

12.00

11.9

6.20

4.34

16.47 2.50

30.96

30.56

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

[ 37 ]

6.20

5.79 7.25 0.91

0.20

2.00

2.55

3.00

3.00

4.34

1.81

3.00

0.84

3.70

1.81

2.63

6.80

0.700.70

1.00

9.49

16.47

1.53

R9.24

ADOLFO NADAL SERRANO MAS. ARCHITECT - ARCHI[O]LOGICS


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

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 CPlane, 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 superficies 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”.

[ 38 ]


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

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 herramienta “Contorno” para crear secciones independientes o conjuntos de las mismas, en cualquier dirección. Así pues, cualquiera 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.

[ 39 ]


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

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 “Perspectiva” o “Superior”). Una vez las tengas terminadas, ejecuta el comando sección con las siguiente opciones: “Comando: Sección Seleccione los objetos para las secciones ( AsignarCapasPor=ObjetoDeEntrada UnirCurvas=PorPolisuperficie AgruparObjetosPorPlano DeSecció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 comando 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, utilizando 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 superficies 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.

[ 40 ]


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

[Fig 10] Secciones superpuestas sobre el modelo

[ 41 ]


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

VISUALIZACIÓN BÁSICA CON VRAY

[ 42 ]


[ 43 ]


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

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 renderizado seleccionado.

RENDER... PROPIEDADES DEL RENDERIZADO PREVISUALIZAR RENDERIZADO ESTUDIO DE ANIMACIÓN SOLAR DE UN DÍA ESTUDIO DE ANIMACIÓN SOLAR ESTACIONAL

CONFIGURAR RENDERIZADO CONFIGURAR MALLA DE RENDERIZADO EXTRAER MALLA DE RENDERIZADO

ANIMACIÓN DE VISTA AÉREA

GUARDAR IMAGEN DE RENDERIZADO

ANIMACIÓN DE TRAYECTORIA

HERRAMIENTAS DE ANIMACIÓN...

ANIMACIÓN DE PLANO GIRATORIO A 360º

CONFIGURAR ANIMACIÓN... PREVISUALIZAR ANIMACIÓN... GRABAR ANIMACIÓN...

[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 tridimensionales sólidos, superficies o polisuperficies.

[Fig 2. Propiedades de renderizado]

[ 44 ]


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

- 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.

MATERIAL CON MAPEADO TRANSPARENTE

RENDER BASE, FONDO CAMBIADO DE COLOR

RENDER BASE, LUZ AMBIENTAL CAMBIADA DE COLOR

RENDER BASE, MATERIALES Y LUZ DIRECCIONAL

RENDER BASE SIN ASIGNACIÓN DE MATERIALES NI LUCES

MATERIAL CON BRILLO

[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.

[ 45 ]


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

- 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 rendimiento del mismo, así como prolongar el tiempo de cálculo innecesariamente.

EDITOR DE MATERIALES

1 PROPIEDADES BASICAS

MENU MATERIALES

2 TEXTURA DE COLOR

3 MAPEADO DE TRANSPARENCIA (CANAL ALPHA) 4 RELIEVE DE TEXTURA (BUMP) PROPIEDADES DE LUZ DIRECCIONAL

5 ENTORNO

[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)

[ 46 ]


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

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 mediante 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

1 MATERIALES RENDER LUCES

2 CONFIGURACIÓN DE RAYOS Y CÁLCULO

3 OPCIONES DE OUTPUT TAMAÑO ARCHIVO ANIMACIÓN

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

[ 47 ]


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

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 renderizas. 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 activar 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 precisió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 configuració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. Generalmente, é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.

[ 48 ]


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

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 7. Ajustes básicos, efecto de maqueta, 4 prepasos]

[ 49 ]

[Fig 9. Render 1b (sin override materials), tiempo 20 segundos]


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

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 quemado. - 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 10. Ajustes básicos, efecto de maqueta, 4 prepasos]

[Fig 13. GI=1, Brillo = 255]

[ 50 ]


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

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 disposició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 ]

[ 51 ]


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

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 aspecto 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, selecciona “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]

[ 52 ]


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

- 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 reflectante, 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 entorno, por lo que es posible que aparezcan manchas de color negro o blanco, en función del color seleccionado en GI.

COLOR DE FONDO (reflexión total del material)

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

[Fig 18. Material cromado, no reflection map]

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

[Fig 20. Highlight Glossiness 0.75, Reflection Glossiness 0.9 ] [Fig 21. Escena sin planos de contorno, esfera refleja fondo]

[ 53 ]


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

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. Generalmente, 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.

[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]

- 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)

[ 54 ]


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

[Fig 26. Intensidades 1, 0.5]

[Fig 27. Intensidad 3,0.5]

[Fig 28. Intensidad 3,1]

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 utilizado 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 escala 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”. Cambia 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 ademá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.

[ 55 ]


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

[Fig 29. Textura de hormigón]

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

[ 56 ]


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

[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]

[ 57 ]


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

MODELADO AVANZADO EN 3D Ayudas: bloques, worksessions, sectionTools

[ 58 ]


[ 59 ]


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

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 archivos 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.

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

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

[ 60 ]


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

- 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 terminado los cambios, puedes confirmar [aceptar] o cancelar para descartarlos.

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

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.

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

En este sentido, las sesiones de trabajo funcionan como referencias externas, que pueden ocultarse o mostrarse, independientemente 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

[ 61 ]


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

3. Herramientas de sección- section tools Las herramientas de sección permiten automatizar la creación de planos bidimensionales, tanto plantas como secciones, así como modificarlas de manera dinámica. Así pues, SectionTools permite añadir objetos a secciones, modificar los objetos 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. Creación y edición de secciones

Layout Vistas de secciones de secciones

CPlanes asociados

Edición de secciones

Crear sección Crear array de secciones Cargar secciones de archivo Mover sección Actualizar todas las secciones

Ejemplos de scripting [secciones variables] Dirección de sección Editar sombreado de secciones

Crear informe de secciones

Editar lista de objetos de secciones

Crear layout de sección Layout de todas las secciones

Crear 2d de la sección

Ver secciones Limpiar vistas de secciones/ limpiar una vista

Ajustar vista a sección Ajustar plano de trabajo a sección

Imprimir visualización

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

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.

[ 62 ]


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

- Crear layout de todas las secciones: crea automáticamente un conjunto de secciones en 2D. No se actualizará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.

[Fig 5 a. Modelo completo]

[Fig 5 b. Realizando la sección] [Fig 5 c. Vista de sección] [Workflow de herramientas de sección en el modelo NURBS de la nueva sede Arnaiz]

[Fig 5 d. Render de rhino]

- 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 correspondiente. - 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.

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

- 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.

[ 63 ]


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

- 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 exactamente 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. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21

! -_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 )

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 pertenecen 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, permitiendo 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. Dejaremos este ejemplo para tu propio interés por la investigación.

[ 64 ]


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

[ 65 ]


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

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

[ 66 ]


[ 67 ]


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

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écnicas 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 escalera, 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.

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

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 escalones.

Reducir superficie recortada/ recortada en borde [Fig 2. Reducir superficie recortada]

[ 68 ]


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

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 recortar 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.

[Fig 3. Superficie recortada - trimmed surface]

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 conseguir 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-

[ 69 ]


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

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. Selecciona 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 necesitaremos 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 centrales 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 coinciden 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 pequeños espacios entre ellos. · desarrollable: crea una superficie desarrollable. Las superficies que tienen doble curvatura no son desarrollables. · uniforme

[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 ]

- 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.

[ 70 ]


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

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 interesante 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”.

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

La figura 5 muestra un tipo de escalera semejante al anterior, pero con geometría que podríamos entender más “construible” 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 siguiente punto. En este caso, es suficiente con obtener tantas isocurvas como escalones necesites; el ejercicio lo hemos preparado con 12 escalones.

[ 71 ]


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

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]. EXTRUSION DIRECTION

LOFTED SURFACE

1

ORIGINAL CURVE 1 COPIED CURVE

2

2

3

4 5

3

GEOMETRY BASE LINE 2’

6

4 5

7 6

GEOMETRY BASE LINE 2

8 7

9

8

GEOMETRY BASE LINE 1’ 10

9

GEOMETRY BASE LINE 1 11

10

12 13

11 12 13

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

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.

[ 72 ]


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

[ 73 ]


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

METODOLOG[U]ÍA EN PROYECTOS COMPLEJOS

[ 74 ]


[ 75 ]


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

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 configuració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, necesitará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 procurará 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]

[ 76 ]


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

II. TRABAJO MULTIUSUARIO Rhinoceros v4 solamente permite el trabajo multisusuario en archivos distintos. Esto es, para que trabajen varias personas 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 manera 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, mobiliario o cualquier otro elemento, constructivo o no.

[ 77 ]


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

- 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

[ 78 ]


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

##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] ##[...]

[ 79 ]


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

#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 granMODELO cantidad de ACTUAL DE GESTIÓN INFORMACIÓN archivos a otro basado en uno solo, del que se desprende toda la documentación 2D. 27 JUNIO 2011

DISEÑO

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

RESPONSABLE PROYECTO

VISUALIZACIÓN DISEÑO 3D

DELINEACIÓN

-

3DMax

AutoCAD

DISEÑO

EQUIPO VISUALIZACIÓN

...

Arquitecto Delineante

-

DELINEACION

DISEÑO 2D

...

Diseño manual ACAD

-

CALCULO Y CERTIFICACION ENERGÉTICA

LIDER ECOTEC

PROYECTO BÁSICO PROYECTO EJECUCIÓN

MODELO 2D GESTIÓN Diseño manual ACAD

LIBRO DE EDIFICIO PLIEGO DE CONDICIONES -

GESTIÓN

MEDICIONES PRESUPUESTO OTRA PRODUCCIÓN GESTIÓN RESIDUOS CÁLCULO RUIDO -

excel automatizado

CONTROL CALIDAD

PLANTILLAS

-

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

Como parece evidente, este nuevo sistema de gestión de la información desembocará en un nuevo modelo de estructura 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 información, la figura 5, el nuevo modelo de equipos que de éste se desprende.

[ 80 ]


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

PROPUESTA DE MODELO DE GESTIÓN INFORMACIÓN 27 JUNIO 2011 GESTIÓN DEL MODELO DE INFORMACIÓN -ARQUITECTURA-

CARGA DE TRABAJO -TIPOS DE PROYECTOCÁLCULO Y DERTIFICACIÓN ENERGÉTICA

-%--%

RESPONSABLE PROYECTO

DELINEACIÓN

-%--%

-

-

DISEÑO

VISUALIZACIÓN -

-

... DISEÑO

MODELO 3D DISEÑO

Responsable diseño

Diseño Paramétrico y Generativo

... -

Fases iniciales y Proyecto Básico Proyecto Ejecución

... MODELO 3D GESTIÓN BIM (Building Information Modeling)

LIBRO DE EDIFICIO -

GESTIÓN PLIEGO DE CONDICIONES -

GESTIÓN

MEDICIONES PRESUPUESTO Presto / *.bc3

OTRA PRODUCCIÓN GESTIÓN RESIDUOS CÁLCULO RUIDO -

excel automatizado

CONTROL CALIDAD

PLANTILLAS

-

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

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 decisiones 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 producción.

[ 81 ]


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

- 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.

ESTADO PROPUESTO 12 SEPTIEMBRE 2011

WORKFLOW DISEÑO ARQUITECTURA -PROYECTOSRESPONSABLE CLIENTE

CRM

-

DIRECTOR DE PROYECTO [PROJECT MANAGER]

PRM GESTOR

-

JEFE DE EQUIPO

JEFE DE EQUIPO

[TEAM LEADER] -

[TEAM LEADER] -

TÉCNICO

DISEÑO

J. EQUIPO

J. EQUIPO

J. EQUIPO

[TEAM LEADER] -

[TEAM LEADER] -

[TEAM LEADER] -

SEGURIDAD Y SALUD

DIRECCIÓN DE OBRA

EFICIENCIA ENERGETICA

EJECUCIÓN

producción propia

3D - MULTIMEDIA

DELINEACION

MULTIMEDIA

renderizado diseño

RESPONSABLE David Díaz/David Vega

RESPONSABLE Prudencio F.

planimetria diseño

e

u

n

pool

DOCUMENTACION

ESTUDIOS PREVIOS

ANTEPROYECTO

PROYECTO BASICO

e

u

n

pool

PROYECTO EJECUCION

[Fig 4 Modelo actual de equipos]

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 especí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 delineantes [mejora de los outputs de los arquitectos]. Así pues, los arquitectos deberán trabajar digitalmente en modelos tridimensionales. De este modo. - Se eliminará la dualidad en el diseño. - Se eliminará el problema de toma de decisiones de diseño.

[ 82 ]


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

- Se mejorará el rendimiento de los delineantes. - Se mejorará el control y la complejidad del diseño. ESTADO PROPUESTO - Se minimizará [o eliminará por completo] el impacto en el trabajo de los delineantes durante el proceso12de diseño. SEPTIEMBRE 2011 WORKFLOW DISEÑO ARQUITECTURA -PROYECTOSRESPONSABLE CLIENTE

CRM

-

DIRECTOR DE PROYECTO [PROJECT MANAGER]

PRM GESTOR

-

JEFE DE EQUIPO

JEFE DE EQUIPO

[TEAM LEADER] -

[TEAM LEADER] -

TÉCNICO

J. EQUIPO

J. EQUIPO

J. EQUIPO

[TEAM LEADER] -

[TEAM LEADER] -

[TEAM LEADER] -

SEGURIDAD Y SALUD DISEÑO

EJECUCIÓN

producción propia

3D - MULTIMEDIA

DELINEACION

MULTIMEDIA

renderizado diseño

RESPONSABLE David Díaz/David Vega

RESPONSABLE Prudencio F.

planimetria diseño

e

u pool

n

e

u

n

pool

[Fig 5 Modelo propuesto de equipos]

[ 83 ]

DIRECCIÓN DE OBRA EFICIENCIA ENERGETICA


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

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

[ 84 ]


[ 85 ]


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

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 últimos 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.

[ 86 ]


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

- 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 cerradas 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 extrusiones 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.

Offset de superficie Offset variable de superficie [Fig 1. Opciones de offset de superficie]

- Procura no tener trozos sobrantes de geometría. Recorta los escalones que sobren con la herramienta “trim”, seleccionando 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 completarse, tener un sólo objeto es un buen objetivo, pero no conviene obsesionarse. Una vez hayas conseguido tener el mínimo 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].

[ 87 ]


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

Reconstruir bordes Seleccionar polisuperficies abiertas Unir bordes “desnudos” Separar bordes Mostrar bordes/ Apagar bordes

[Fig 2. Edge Tools/herramientas de borde]

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 comprobaciones 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 “herramientas 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.

[ 88 ]


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

Triangular malla Cuadrangular malla

Unir Restar Diferencia “Split”

Fill mesh hole: llenar agujero de malla Rebuild mesh: reconstruir malla Rebuild mesh normals: reconstruir normales de malla Soldar malla Borrar cara Añadir cara [Fig 3. Herramientas para malla]

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

[ 89 ]


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

- 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)

[ 90 ]


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

[ 91 ]


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

MODELADO AVANZADO EN 3D Terrenos

[ 92 ]


[ 93 ]


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

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 suficiente 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 contengan 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 superficie [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 comandos 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]

[ 94 ]


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

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 encenderlas 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íamos proponer ocultar las capas correspondientes a los objetos que no necesitemos, es decir, todos aquellos que estén el el plano Z=0.

Delaunay triangulation (2.5D)

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

Connectivity network

Voronoi diagram (2D)

Pixel Grid

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

Quad Tree (2D)

Oc Tree (3D) [Fig 2. PontSet Reconstruction Tools]

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 geometrí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 organizado de puntos de manera que no queden agujeros en la malla que éstos forman. Como hemos dicho anteriormente, el algoritmo 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].

[ 95 ]


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

· 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.

[Fig 3. Solución computada en malla]

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 superior. 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.

[ 96 ]


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

[Fig 4. Superficie final sin recortar y recortada]

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 renderizarla para tener la mejor simulación posible del terreno [fig 5].

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

[ 97 ]


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

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

[ 98 ]


[ 99 ]


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

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 ordenador. 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 requieren mucho esfuerzo o tiempo y que pueden automatizarse (por ejemplo, una secuencia de acciones que abre una imagen, 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 flexibilidad, pero también mayor riesgo de error. Los scripts son, en lo que a nosotros nos concierne, el siguiente paso en la “inteligencia” 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 secuencia 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 entender 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 (escaló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 horas 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 secuencia de órdenes predeterminadas que el programa ejecuta.

[ 100 ]


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

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 accesible 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 sencillas de sintaxis [puedes ver un listado completo en ingés en http://www.rhino3d.com/4/help/information/rhino_scripting. htm]:

Símbolo Nombre

Explicación

-

Guión

_

Guión Bajo

! ; \

Signo exclamación Punto y coma Barra invertida

Pause w r <

Pause

Cancela la aparición de ventanas asociadas a comandos. Todos los comandos pueden, además, escribirse o llamarse 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 rhino Si el comando no comienza por “!” y termina con la barra invertida “\”, la macro se ejecutará en la línea de comandos 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.

Menor que

Y aquí podemos analizar nuestra pequeña macro: Linea

Código

Explicación

1 2 3 4 5 6 7 8 9 10 11

! _Copy _pause 0,0,0 0,0,1 _enter

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

_selLast

Seleccionar último objeto creado

_rotate _pause 0,0,0 10 _enter

Comando rotar con espera para intervención de usuario Punto para el eje de rotación Ángulo de rotación Finalizar Comando

[Fig 1. Escalera creada con macro]

[ 101 ]


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

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 diferentes 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. Menu Emergente

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

[Fig 2. Menú Editar/Mover]

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

En el espacio reservado para el comando del botón izquierdo del ratón pega el conjunto de órdenes que hemos descrito 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-

[ 102 ]


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

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 condicionantes, 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 nosotros. 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álculos 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 variables, 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 nombre 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 obtendremos 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.

[ 103 ]


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

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.

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

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 ejecució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 algunNumero. 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é”.

[ 104 ]


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

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 determinará 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 = “Presidente”, 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 conjuntos 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” solamente], 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 capaces 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 estado, 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 modificar 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:

[ 105 ]


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

Option Explicit Call Main() Sub Main() Dim algunNumero Dim otroumero algunNumero = 90 otroNumero = Rhino.Sin(algunNumero) Rhino.Print algunNumero Rhino.print otroNumero otroNumero = otroNumero +10 Rhino.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 simple, 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 correctamente] 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 comando _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 terminado 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 resolver 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 humano. Verás además, que las palabras contenidas entre comillas [“...”], son consideradas cadenas de caracteres literales.

[ 106 ]


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

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43

1 -5 6 9 12 14 15 17 22 24 25 29 34 -36 37-41 42

[ 107 ]

Option Explicit ‘Comentarios ‘Aquí declaración de variables globales, si procede ‘Llamada a la subrutina principal Call Main() ‘Comienzo de la subrutina principal Sub Main() ‘Órdenes en secuencia ‘Uso de un método Rhino.EnableRedraw(False) ‘Llamada a funciones personalizadas Call DoSinglePoint Call DoPointGrid ‘Uso de método Rhino.EnableRedraw(True) End Sub ‘Fin de subrutina ‘Comienzo de una función Function DoSinglePoint ‘Órdenes en secuencia, incluyen métodos y otros Rhino.AddPoint(array(0,0,0)) End Function ‘Fin de la función ‘Comienzo de una función Function 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 value Dim i, j Dim maxX : maxX = 9 Dim maxY : maxY = 9 For i =0 To maxX For j=0 To maxY Rhino.AddPoint(array(i,j,0)) Next Next End Function ‘Fin de la función

Fíjate en la descripción del script línea por línea para entender exactamente qué ocurre. 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 principal Comienzo 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]


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

II. PROGRAMACIÓN Y TOPOLOGÍA 1. CodeMonkey Code Monkey [vulgarmente “monkey”] es actualmente el mejor editor de scripts para Rhino. Incluye el editor, compilador 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 encontrar 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 explicativa, 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 cadena 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]

[ 108 ]


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

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

Ejecutar script Corregir script Colocar punto de análisis

Guardar como... Guardar scripts activos en pestañas Guardar script Abrir script Crear nuevo script

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

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 principales, 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”.

[ 109 ]


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

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 corresponden 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 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 10 Punto en espacio cartesiano R3: A(a1,a2,a3)]

[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.]

[ 110 ]


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

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 basadas 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 determinado, y que sus ecuaciones, a las que no podemos acceder, son más complejas. Sin embargo, existe una clara correspondencia entre dichos valores y la curva, que podemos ver en la figura 12.

P0

P6

P1 P5

P2

P7

P4 P8 P3

dom(0)+ dom(0)+ dom(0)+ dom(0)+ dom(0)+ dom(0)+ dom(0)+ 1*step 2*step 3*step 4*step 5*step 6*step 7*step

dom(0) valor mínimo dominio

dom(1) valor máximo dominio

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

- Puntos de control: puntos que definen el polígono de control, a partir del cual se define, en función del tipo de continuidad [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 Geometrí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 “desactivar” los sucesivos pasos a medida que vas avanzando. Te recomiendo que borres los objetos creados en cada uno antes

[ 111 ]


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

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 ejecutar una única función descoméntala, y comenta el resto. Haz esto con cada una de las funciones cambiando los valores. DoPointGrid 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 debemos 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 seleccionada por el usuario. Veremos más sobre curvas en el siguiente apartado.

[ 112 ]


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

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 capabilities Call Main() Sub Main() Rhino.EnableRedraw(False) ‘Call DoSinglePoint ‘Call DoSinglePointWithAnnotation ‘Call DoPointGrid ‘Call DoPointGridWithHeight ‘Call DoLine ‘Call DoLines ‘Call DoLineGrid ‘Call DoSimpleComponentGrid ‘Call DoComplexComponentGrid Call DoLoftSurface ‘Call DoComplexComponentGridWithLoftSurface Rhino.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 keyword Dim pt pt = (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 value Dim i, j Dim maxX : maxX = 9 Dim maxY : maxY = 9 For i =0 To maxX For j=0 To maxY Rhino.AddPoint(array(i,j,0)) Next Next 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 value Dim i, j Dim maxX : maxX = 9 Dim maxY : maxY = 9

[ 113 ]


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

For i =0 To maxX For j=0 To maxY Rhino.AddPoint(array(i,j,i*j)) Next Next 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 DoLines Dim i, j Dim maxX : maxX = 9 Dim 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-1 For i=1 To maxX For j=1 To maxY Call Rhino.AddLine(array(i-1,j-1,0),array(i,j,0)) Next Next End Function Function DoLineGrid Dim i, j Dim maxX : maxX = 9 Dim 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-1 For i=1 To maxX For j=1 To maxY Call Rhino.AddLine(array(i-1,j,0),array(i,j,0)) Call Rhino.AddLine(array(i,j-1,0),array(i,j,0)) Next Next End Function Function DoSimpleComponentGrid Dim i, j Dim maxX : maxX = 9 Dim maxY : maxY = 9 Dim 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 well For i=1 To maxX For j=1 To maxY pt1 = 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)) Next Next End Function Function DoComplexComponentGrid Dim i, j Dim maxX : maxX = 9 Dim maxY : maxY = 9 Dim 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

[ 114 ]


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

‘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 variables that we can use later on For i=1 To maxX For j=1 To maxY pt1 = 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)) Next Next End Function Function DoLoftSurface ‘A loft surface takes at least 2 curves ‘We need to create these and STORE them for future use Dim curve1, curve2 curve1 = 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 = 10 Dim domainStepSize : domainStepSize = domain/nrSteps Dim i For i= crvDomain(0) To crvDomain(1) Step domainStepSize Dim arrPt : arrPt = Rhino.EvaluateCurve(strCrv,i) Rhino.AddPoint arrPt Next End Function

[ 115 ]


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

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

[ 116 ]


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

[ 117 ]


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

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

[ 118 ]


[ 119 ]


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

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 curvas 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 (normalmente “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. CRV DOMAIN (0)

CURVE OBJECT MAIN 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 (X)

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

CRV DOMAIN (Y)

CRV DOMAIN (Z)

[Fig 1. Dominio de una curva]

CRV DOMAIN (1)

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)]

[ 120 ]


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

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 puntos 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 fachadas estructurales. La edición de las curvas se realiza, como hemos dicho, a partir de sus puntos de control, fácilmente accesibles tanto explícitamente [modelando] como implícitamente [a partir de RhinoScript].

[ 121 ]


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

Curva por puntos de control Curva por interpolación Curva por interpolación en superficies Curva por manejadores Trazar Trazar sobre malla Cónicas y parábolas Hélice y espiral Curvas promedio Activar puntos de control Activar puntos de edición/ desactivar seleccionados Ocultar caras posteriores de polígono de control Mover UVN, toque ligero UVN Insertar nodo/ punto de edición

Extender/Empalmar /Achaflanar línea Simplificar Insertar/Eliminar puntos de control Cambiar modo de arrastre Editar con manejadores Añadir nodo Eliminar nodo Definir peso de puntos de control

Subcurva Insertar línea en curva Booleana de curvas

Cerrar curvas abiertas Eliminar subcurva Extraer subcurva

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

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.

[Fig 3. Dirección en una superficie]

[ 122 ]


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

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, mediante 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 espacio 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 resultantes 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 porcentaje 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]

[ 123 ]


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

4. Creación de superficies, puntos y nubes de puntos, curvas FILA 1 Superficie por 3 ó 4 puntos Superficie por curvas de borde Superficie a partir de curvas planas Superficie rectangular Extruir curva FILA 2 Loft - transición Superficie por network de curvas Superficie parche Sweep 1/2 railes

FILA 3 Superficie de revolución Cubrir objetos con superficie Mapa de alturas desde imagen Superficie desde rejilla de puntos

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

- 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 dichos 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 automá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, calculando 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.

[ 124 ]


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

- DoSinglePointWithNormal y DoSinglePointWithNormalScaled crea, además del punto anterior, otro en la normal 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, debermos 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 resultante 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.VectorScale (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.VectorAdd (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.

[ 125 ]


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

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.2 Call 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 V Dim 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 surface Dim arrPt : arrPt = Rhino.EvaluateSurface(strSrf,array((maxUDomain+minUDomain)/2,(minVDomain+maxVDoma in)/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 V Dim 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 surface Dim arrPt : arrPt = Rhino.EvaluateSurface(strSrf,array((maxUDomain+minUDomain)/2,(minVDomain+maxVDoma in)/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+maxV Domain)/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 V Dim Udomain : Udomain = Rhino.SurfaceDomain(strSrf,0) Dim Vdomain : Vdomain = Rhino.SurfaceDomain(strSrf,1)

[ 126 ]


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

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 surface Dim arrPt : arrPt = Rhino.EvaluateSurface(strSrf,array((maxUDomain+minUDomain)/2,(minVDomain+maxVDoma in)/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+maxV Domain)/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 ASK arrNormalPt = Rhino.VectorScale(arrNormalPt,scaleFactor) ‘As all other vectors, it is STILL -despite the scaling!!!- based on (0,0,0), so 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, 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 V Dim 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 INFO Dim srfUDomain : srfUDomain = maxUDomain-minUDomain Dim srfVDomain : srfVDomain = maxVDomain-minVDomain ‘Let us decide how many “divisions” we need in each direction Dim nrUSteps : nrUSteps = 5 Dim domainUStepSize : domainUStepSize = srfUDomain/nrUSteps Dim nrVSteps : nrVSteps = 5 Dim 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, j For i= minUDomain To maxUDomain Step domainUStepSize For j= minVDomain To maxVDomain Step domainVStepSize Dim arrPt : arrPt = Rhino.EvaluateSurface(strSrf,array(i,j)) Rhino.AddPoint arrPt Next Next 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 V Dim 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 INFO Dim srfUDomain : srfUDomain = maxUDomain-minUDomain Dim srfVDomain : srfVDomain = maxVDomain-minVDomain

[ 127 ]


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

‘Let us decide how many “divisions” we need in each direction Dim nrUSteps : nrUSteps = 5 Dim domainUStepSize : domainUStepSize = srfUDomain/nrUSteps Dim nrVSteps : nrVSteps = 5 Dim 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, j For i= minUDomain To maxUDomain Step domainUStepSize For j= minVDomain To maxVDomain Step domainVStepSize Dim arrPt : arrPt = Rhino.EvaluateSurface(strSrf,array(i,j)) Rhino.AddPoint arrPt Dim 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) Next Next 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 V Dim 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 INFO Dim srfUDomain : srfUDomain = maxUDomain-minUDomain Dim srfVDomain : srfVDomain = maxVDomain-minVDomain ‘Let us decide how many “divisions” we need in each direction Dim nrUSteps : nrUSteps = 5 Dim domainUStepSize : domainUStepSize = srfUDomain/nrUSteps Dim nrVSteps : nrVSteps = 5 Dim 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, j For i= minUDomain To maxUDomain Step domainUStepSize For j= minVDomain To maxVDomain Step domainVStepSize Dim arrPt : arrPt = Rhino.EvaluateSurface(strSrf,array(i,j)) Rhino.AddPoint arrPt Dim srfFrame : srfFrame = Rhino.SurfaceFrame (strSrf, array(i,j)) Dim arrNormalPt : arrNormalPt = srfFrame(3) ‘Remember to scale before the addition takes place arrNormalPt = Rhino.VectorScale(arrNormalPt,scaleFactor) arrNormalPt = Rhino.VectorAdd(arrPt,arrNormalPt) Dim strNormalPt : strNormalPt = Rhino.AddPoint(arrNormalPt) Call Rhino.ObjectColor(strNormalPt,vbBlue) Next Next 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

[ 128 ]


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

[ 129 ]


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

SUPERFICIES Y COMPONENTES diseño paramétrico con scripting

[ 130 ]


[ 131 ]


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

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 dependencia 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 animaciones 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-

[ 132 ]


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

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.

[Fig 2. Familia de componentes sobre una superficie]

Aun a riesgo de ser excesivamente insistentes, incluyo otro ejemplo del uso del método Rhino. SurfaceDomain [recuerda que el lenguaje natural para la programación es, por excelencia, el inglés]: Const rhObjectSurface = 8 Dim strObject, arrDomU, arrDomV strObject = 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

[ 133 ]


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

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 componentes en función de la distancia a este punto]. En la línea 13 usamos el comando GetPoint que nos devuelve direcatamente las coordenadas del punto. · El primer paso es subdividir la superficie en función de su dominio, por lo que deberemos tener en consideració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 componente [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 llamando 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. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43

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))

[ 134 ]


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

44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105

‘-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 d,dblDist/d,dblDist/d)) Call Rhino.ScaleObject d,dblDist/d,dblDist/d)) Else Call Rhino.ScaleObject array(0.9,0.9,0.9)) Call Rhino.ScaleObject array(0.9,0.9,0.9)) End If

(strCrv2, arrFrPt(k-1,l-1)(0),array(dblDist/ (strCrv4, arrFrPt(k-1,l-1)(0),array(dblDist/

(strCrv2, arrFrPt(k-1,l-1)(0), (strCrv4, arrFrPt(k-1,l-1)(0),

‘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.FirstObject End Function

[ 135 ]


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

VISUALIZACIÓN AVANZADA: renders y animaciones

[ 136 ]


[ 137 ]


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

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.

1 CAMARA CAMARA FISICA DEPTH OF FIELD MOTION BLUR

2 ENVIRONMENT GI (SKY) BACKGROUND

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

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

[ 138 ]


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

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 cualquiera 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 animaciones 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 superficie. 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 menor 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 requieren más muestras.

[ 139 ]


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

1 INDIRECT ILLUMINATION GI CALCULATION ALGORITHMS *ENGINES

2 MONTE CARLO

3 IRRADIANCE MAP RATES OTHER OPTIONS

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

- 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.

[ 140 ]


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

· 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)”. 1 VISTA PREVIA

2 EXPLORADOR

3 CAPAS DEL MATERIAL

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

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):

[ 141 ]


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

· 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 reflectantes 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 indeseables. 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 5. Resultado con mapeado esférico]

[Fig 4. Settings para HDR]

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

[ 142 ]


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

3. Uso de la cámara física para renders interiores: Irradiance Map y Light Cache La cámara física permite emular el comportamiento real de una película en su exposición a la luz. Esto implica no solamente mayor control, sino mejores resultados. - Para usar la cámara física debemos tener Skylight con mapa Sky -Sun activado. Para ello podemos crear un sistema de sol cualquiera de manera casi automática en el menú VRay. - Además, previo al ajuste de la cámara, debemos 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 aproximadamente. Estas cifras no son siempre exactas y puede requerir un poco de paciencia alcanzar un número apropiado. - Tipo de cámara: seleccionamos “still camera”. - Ajuste de exposición: · Introducimos 125 en el valor ISO (sensibilidad). · Introducimos 100 en la velocidad de obturación en lugar de los 300 por defecto. - Balance de blancos: ajustar al color que se necesite. - 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 complejo para nuestro ejercicio.

[Fig 7. Ajustes para Skylight, Sun parameters]

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)

[ 143 ]


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

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 espacios 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.

[Fig 8a. Render interior sin luces]

[Fig 8b. Render exterior sin luces]

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]

[ 144 ]


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

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 aspecto 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, selecciona “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 reflectante, 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 entorno, 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. Generalmente, 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.

[ 145 ]


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

- 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.

[Fig 12. Bump map aplicado a textura]

[Fig 13. Bump y transparency maps]

[Fig 14. Displacement map]

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 utilizado 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 escala 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.

[ 146 ]


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

· 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”. Cambia 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]

[ 147 ]


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

- 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 ademá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]

[ 148 ]


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

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]

[ 149 ]


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

PRODUCCIÓN Y EDICIÓN GRÁFICA

[ 150 ]


[ 151 ]


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

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 posteriormente 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 previamente) 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 RHINOCEROS 1. 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 configuració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.

RENDER... PROPIEDADES DEL RENDERIZADO PREVISUALIZAR RENDERIZADO ESTUDIO DE ANIMACIÓN SOLAR DE UN DÍA ESTUDIO DE ANIMACIÓN SOLAR ESTACIONAL

CONFIGURAR RENDERIZADO CONFIGURAR MALLA DE RENDERIZADO EXTRAER MALLA DE RENDERIZADO

ANIMACIÓN DE VISTA AÉREA

GUARDAR IMAGEN DE RENDERIZADO

ANIMACIÓN DE TRAYECTORIA

HERRAMIENTAS DE ANIMACIÓN...

ANIMACIÓN DE PLANO GIRATORIO A 360º

CONFIGURAR ANIMACIÓN... PREVISUALIZAR ANIMACIÓN... GRABAR ANIMACIÓN... [Fig 1. Opciopnes de animación]

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.

[ 152 ]


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

II. EDICIÓN DE MULTIMEDIA EN AFTER EFFECTS 1. 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 fotogramas. 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 segundo 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).

[Fig 2. After Effects layout]

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

[ 153 ]


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

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 duració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 QuickTime. - 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 especificaciones que se introduzcan.

[ 154 ]


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

VISUALIZACIONES Y FOTOMONTAJES Para crear una visualización, lo primero que se precisa es tener una buena imagen de base. Esto requiere buenas capacidades 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 además importar los archivos o partes de archivos correspondientes a la parte de fotomontajes, es decir, elementos complementarios 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 informació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 PHOTOSHOP 1. 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

[ 155 ]


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

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. 1 BARRA DE MENUS 2 MENU DE HERRAMIENTA

3 BARRA DE HERRAMIENTAS 4 LIENZO

5 AREA DE MENUS [Fig 1. Photoshop interface]

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 luminosidad 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.

[ 156 ]


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

AJUSTE DE SATURACIÓN

AJUSTE DE EXPOSICIÓN

AJUSTE DE CURVAS

AJUSTE DE NIVELES

[Fig 2. Ejemplos de ajustes]

[ 157 ]


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

- 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. 1 AJUSTES

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

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 planos 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.

+

=

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

[ 158 ]


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

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

[ 159 ]


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

CREACIÓN DE DIAGRAMAS Y TRABAJO CON ADOBE ILUSTRATOR

[ 160 ]


[ 161 ]


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

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 bidimensional. 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 vistas independientes. 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]

[ 162 ]


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

- 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 correcta. · 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.

[ 163 ]


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

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.

PESTAÑA DE DIBUJO

PESTAÑAS DE INFORMACION

BARRA DE HERRAMIENTAS PRINCIPAL

BARRA DE TRAZO

BARRA DE CAPAS

[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.

[ 164 ]


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

[ 165 ]


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

INTRODUCCIÓN AL DISEÑO ALGORÍTMICO

[ 166 ]


[ 167 ]


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

GEOMETRÍA COMPUTACIONAL AVANZADA I. INTRODUCCIÓN AL DISEÑO ALGORÍTMICO 1. 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 determinada. 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 geometrí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]

[ 168 ]


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

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 usadas en arquitectura y construcción, las cuales son restrictivas en su uso y posibilidades [y por tanto ejercen un papel homogeneizante], el diseño algorítmico nos permite la creación de herramientas “ad-hoc”. Esta metodología permite crear herramientas 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.

1 -1 triangle

2 - 4 triangles

3 - 16 triangles

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

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 ecuaciones recursivas, de ahí su complejidad. Veamos el código que nos permite crear este tipo de geometría recursiva en Rhino. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27

[ 169 ]

Option Explicit ‘Script written by Adolfo Nadal ‘Script by archi·o·logics www.archiologics.com ‘How to create a recursive sierpinski pyramid Call 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-------> UBOUND userLength=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, tetrah4 Dim Curve0, Curve1, Curve2, Curve3, Curve4, Curve5, Curves Dim Srf0, Srf1, Srf2, Srf3, PolySurface, Surfaces, userLength Curve0 = 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)


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

28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85

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 surfaces PolySurface = 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 them Curves=array(Curve0, Curve1, Curve2, Curve3, Curve4, Curve5) Call Rhino.DeleteObjects(Curves) ‘ if length less than x then do not subdivide If (minLength > userLength) Then ‘-------------------------------------‘Surfaces=array(Srf0, Srf1, Srf2, Srf3) ‘Call Rhino.DeleteObjects(Surfaces) ‘-------------------------------------Call Rhino.DeleteObject(PolySurface) ‘ get points vertexPts = 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 coordinate midPt0 = 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 function subdivideTetrahedron tetrah0,userLength subdivideTetrahedron tetrah1,userLength subdivideTetrahedron tetrah2,userLength subdivideTetrahedron tetrah3,userLength End If End Function

[ 170 ]


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

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. 1 -5 6

9-11 14 15

18 21-24 25-30 31-36 37-40 42 50 52-53 55-90 55 60 69-74 75-78 80-83 85

Aunque está perfectamente comentado, vamos a ver brevemente las partes más relevantes del código: 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 principal Comienzo 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 nuevo Calcular 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

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ángulo 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.

mid 1

mid 2

mid 3

BASE SURFACE

SUBDIVISION

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

[ 171 ]

ELEVATION


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

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62

Option Explicit ‘Script written by Adolfo Nadal ‘Script by archi·o·logics www.archiologics.com ‘How to create a recursive structure Call recursiveExample() Sub recursiveExample() Dim triangle triangle = Rhino.GetObject(“select your triangle”,8) ‘ in brackets whatever you want Rhino to ask the user Rhino.EnableRedraw False subdivideTriangle(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, triangle3 Dim 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 anything Rhino.SelectObject triangle Rhino.Command(“_DupBorder enter”) triangleCrv = Rhino.FirstObject triangleLength = Rhino.CurveLength(triangleCrv) ‘ the FIRST OBJECT COMMAND returns the LAST OBJECT CREATED BY THE USER If(triangleLength > 10) Then ‘ centerpt centerPoint = CurveAreaCentroid(triangleCrv) ‘ normal srfParam = Rhino.SurfaceClosestPoint(triangle, centerPoint(0)) srfNormal = Rhino.SurfaceNormal(triangle, srfParam) ‘ get corners of each triangle vertexPts = Rhino.PolylineVertices(triangleCrv) ‘ get midpoints of each edge ‘ in the vertexPts the first () tells which point it is, the second the coordinate midPt0 = 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 vector srfNormal = Rhino.VectorUnitize(srfNormal) srfNormal = Rhino.VectorScale(srfNormal, triangleLength*0.1) ‘move midpoints by normal midPt0 = 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 direction triangle0 = 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 function subdivideTriangle(triangle0) subdivideTriangle(triangle1) subdivideTriangle(triangle2)

[ 172 ]


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

63 64 65 66

‘borrar el triángulo original Rhino.DeleteObjects Array(triangle, triangleCrv) End If End Function

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 independientemente de su posición. 6 10 13 17 20 27-30 27 28 29 30 32 34 36 37 39 42-44 47-48 50-52 55-57 60-62 64 66

Aunque está perfectamente comentado, vamos a ver brevemente las partes más relevantes del código: Llamada a la subrutina principal Obtenció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 triangular Duplicar el borde mediante acceso al comando de Rhino Obtenció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] entonces 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ón Finalizar la función

[Fig 4. Resultado del fractal]

[ 173 ]


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

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 principales 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.

[Fig 5. Escultura automática]

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23

Option Explicit ‘Script written by Adolfo Nadal ‘Script by archi·o·logics www.archiologics.com ‘How to create an oriented sculpture Call 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)

[ 174 ]


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

24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85

[ 175 ]

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


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

8-13 15-85 17

20-27 30-34

36-39

42-46 48-60 65-71 73-78 81 82-83

Adjuntamos de nuevo una breve descripción del código: Subrutina principal: en ésta se obtienen todos los objetos e inputs necesarios Comienzo de la función MakePyramid Obtenció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 funciones 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

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 introducido 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 sustancialmente la cantidad de geometría del modelo.

[ 176 ]


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

[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]

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39

[ 177 ]

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))


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

40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98

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,arrVN Ptmp))(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,finalColorArray End 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

[ 178 ]


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

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:

6-74 7 10 14-16 18-20

22-26 28-31 33

36-60

36 37 38 39 40 41 42 44 48

49 50 51 54 55 56-58 63 64 65-70 73

[ 179 ]

Subrutina principal: en ésta se obtienen todos los objetos e inputs necesarios Obtención del objeto malla por el usuario Obtención del número de vértices de la malla Declaració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 guardadas], 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 defecto, en (0,0,0). · Obtención del valor del vector normal proyectado. Inicialmente será igual que el normal, pero con su coordenada 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 correspondientes. · 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.


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

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

Array de vértices

Array de caras

0 1 2 3 . . . . . . . . N

0 1 2 3 . . . M

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

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

Ejemplo CARA 92

VÉRTICES [INDICES]

VÉRTICES [COORDENADAS]

32

(x32,y32,z32)

29

(x29,y29,z29)

55

(x55,y55,z55)

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

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, definiendo 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.

[ 180 ]


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

[ 181 ]


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

CONCLUSIONES

[ 182 ]


[ 183 ]


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

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 presentació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.

[ 184 ]


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

[ 185 ]

Rhinoceros Algorithmic Design Manual  

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

Read more
Read more
Similar to
Popular now
Just for you