PARAMETRIC DESIGN FOR LANDSCAPE ARCHITECTS Parametric Design for Landscape Architects provides a sequence of tutorial-based workfows for the creation and utilization of algorithmic tools calibrated toward the feld of landscape architecture. Contemporary practice and projective theory in landscape architecture require the processing and design of data associated with complex systems to adequately represent composite, emergent scenarios. Aligning to both traditional and nascent processes of analysis and digital modeling, this book unpacks and decodes the characterization of algorithmic-based automation, leveraging software that is widely accessible in both academia and professional practice. Curated throughout are workfows that apply to a multiplex of computation programs that widely support the design, analysis, and production of landscapes, primarily concentrated on digital modeling tools Grasshopper and Rhinoceros. It is a much-needed, visually accessible resource to aid in more effcient understanding and creation of tools that automate and re-examine traditional calculations, analyses, drawing standards, form-fnding strategies, fabrication preparations, and speculative assessments/simulation. This primer provides professionals and students with multifaceted skill-sets that, when applied in practice, expand and expedite conventional and speculative design workfows applicable to spatial design, and more specifcally landscape architecture.The book includes over 200 full-colour drawings, images, and tables to illustrate and support examples throughout. Andrew Madl is an Adjunct Assistant Professor in the School of Landscape Architecture at the University of Tennessee, Knoxville. He positions landscape as a device for retooling the spatial conditions that accompany infrastructural, political, ecological, economical, and social systems at the territorial scale. His approach is grounded in exposing and leveraging implicit systemic intersections that can defne spatial discourse. Andrew’s research focuses on computation and simulation as aligned to the speculative design and representation of landscapes of indeterminate futures. He holds an MLA post-professional degree from the Harvard Graduate School of Design and a BLA from the Pennsylvania State University.
“Madl grounds computational practices in the landscape – sites with urgent ecological and social implications, but which have been overlooked in the parametric focus on architectural space. This book challenges that hegemony with sequences and workflows that will provoke exploratory theoretical and technical design processes in landscape-based projects.” Ron Henderson , Professor and Director, Landscape Architecture + Urbanism Program, Illinois Institute of Technology “Landscape architecture has been slow to embrace parametric tools. We have lacked instructional materials tied to landscape-specific design processes, and parametricism has been understood as a style, rather than a method. Building from using parametric software to facilitate traditional landscape design tasks into more ambitious tutorials that use those same tools to understand landscape as dynamic and ever-changing, Andrew Madl addresses both these issues at once.” Rob Holmes, Assistant Professor, Landscape Architecture, School of Architecture, Planning, and Landscape Architecture,Auburn University
PARAMETRIC DESIGN FOR LANDSCAPE ARCHITECTS COMPUTATIONAL TECHNIQUES AND WORKFLOWS Andrew Madl
First published 2022 by Routledge 2 Park Square, Milton Park, Abingdon, Oxon OX14 4RN and by Routledge 605 Third Avenue, New York, NY 10158 Routledge is an imprint of the Taylor & Francis Group, an informa business © 2022 Andrew Madl The right of Andrew Madl to be identifed as author of this work has been asserted by him in accordance with sections 77 and 78 of the Copyright, Designs and Patents Act 1988. All rights reserved. No part of this book may be reprinted or reproduced or utilised in any form or by any electronic, mechanical, or other means, now known or hereafter invented, including photocopying and recording, or in any information storage or retrieval system, without permission in writing from the publishers. Trademark notice: Product or corporate names may be trademarks or registered trademarks, and are used only for identifcation and explanation without intent to infringe. British Library Cataloguing-in-Publication Data A catalogue record for this book is available from the British Library Library of Congress Cataloging-in-Publication Data Names: Madl, Andrew, author. Title: Parametric design for landscape architects : computational techniques and workfows / Andrew Madl. Description: Milton Park, Abingdon, Oxon ; New York, NY : Routledge, 2021. | Includes bibliographical references and index. Identifers: LCCN 2020057323 (print) | LCCN 2020057324 (ebook) | ISBN 9780367195298 (hardback) | ISBN 9780367195304 (paperback) | ISBN 9780429202957 (ebook) Subjects: LCSH: Landscape design—Data processing. | Landscape architecture—Computer programs. Classifcation: LCC SB475.9.D37 M335 2021 (print) | LCC SB475.9.D37 (ebook) | DDC 712.0285—dc23 LC record available at https://lccn.loc.gov/2020057323 LC ebook record available at https://lccn.loc.gov/2020057324 ISBN: 978-0-367-19529-8 (hbk) ISBN: 978-0-367-19530-4 (pbk) ISBN: 978-0-429-20295-7 (ebk) Typeset in Gill by Apex CoVantage, LLC
CONTENTS Acknowledgments..................................................................................................................................................................... vii Foreword: Parametric potentials...................................................................................................................................... ix GALE FULTON Preface ............................................................................................................................................................................................. xi CHAPTER 01 Transformations, translations, and vectors: Leveraging geometric data.................................................................................................................................. 1 01.01_Create custom vectors and translate/move 3D object to multiple points ....................................................................................................................................... 1 01.02_Deconstruct an input surface to a point grid and place randomly rotated 2D geometry on points .................................................................................................. 6 01.03_ Random distribution of lines with height variation on a geometry ............. 9 01.04_Move, scale, and rotate 3D geometry to randomly populated points on base geometry............................................................................................................................... 11 01.05_ Context.......................................................................................................................................... 15 CHAPTER 02 Landform creation: Base modeling, site design, feld conditions ............................ 16 02.01_Base topographic model from DEM point data (ArcMap) to mesh (Rhino/GH) .......................................................................................................................... 16 02.02_Base topographic model from contour data to surface .................................... 22 02.03_ Using point and line attractors to iterate landform scenarios ....................... 27 02.04_ Translating mesh vertices based on point, curve, and surface attractors................................................................................................................................. 34 02.05_Morphing geometry on a surface to create a feld condition ........................ 42 CHAPTER 03 Landform analytics and calculations: Automation of site dynamics ..................... 51 03.01_Shade 3D mesh landform model based on elevation values ......................... 51 03.02_Shade 3D mesh landform model based on slope values and cull slope ranges ......................................................................................................................... 54 03.03_Calculating the runoff volume of 3D geometry using the rational method.................................................................................................................................... 58 03.04_Highlight areas of a landscape mesh geometry that receive sunlight ...................................................................................................................................... 62 03.05_ Context.......................................................................................................................................... 65 CHAPTER 04 Construction documentation: Mechanization of standards ..................................... 66 04.01_ Label contour and spot elevations ................................................................................. 66 04.02_ Annotation of slope percentage and direction........................................................ 69 04.03_ Planting plan notation........................................................................................................... 72 04.04_Paver section detail and quantity dynamics ............................................................. 75 04.05_ Context.......................................................................................................................................... 78 CHAPTER 05 Digital fabrication: Facilitation and fle preparation ...................................................... 80 05.01_Construct base on mesh terrain model for 3D printing .................................... 81 05.02_ Geometry creation for laser cut waffe landform model ................................... 84 05.03_Preparation of geometry for laser cut contour landform model ................... 87 05.04_ Context.......................................................................................................................................... 91 CHAPTER 06 Urban morphology and analysis .............................................................................................. 92 06.01_Evolutionary solving for FAR calculation ...................................................................... 92 06.02_ Generating an urban scenario .......................................................................................... 96
06.03_Creation of a 3D viewshed/isovist analysis ............................................................... 100 06.04_ Context.......................................................................................................................................... 104 CHAPTER 07 Cartographic representation and data-driven visualization ..................................... 105 07.01_Index geometry based on area metric ........................................................................ 105 07.02_ Visualize point data values as an extension of the landscape ...................... 108 07.03_Circular graph depicting metric data ............................................................................ 112 07.04_ Context.......................................................................................................................................... 116 CHAPTER 08 Cellular models, agent-based behaviors, and simulation: Speculation ................ 117 08.01_Cellular modeling the disturbance of a forest fre ................................................. 117 08.02_ Agent-based model using attractor points to provide seeking behavior ................................................................................................................................... 122 08.03_ Context.......................................................................................................................................... 125 CHAPTER 09 Case studies: Deconstructing the use of computational tools in professional landscape architecture projects ................................................................... 126 09.01_Pocket Park Rocheareal Kaiseraugst: BRYUM landscape architects .......... 126 09.02_ MAX IV Laboratory: Snøhetta ........................................................................................... 130 09.03_ Context.......................................................................................................................................... 134 Image and case study project credits............................................................................................................................. 135 Index................................................................................................................................................................................................. 136 VI PARAMETRIC DESIGN FOR LANDSCAPE ARCHITECTS CONTENTS
ACKNOWLEDGMENTS I am deeply grateful and indebted to the multiple mentors I’ve had throughout my educational endeavors and academic career, who have shaped me as a designer as well as an individual.Your guidance, experience, and support has undoubtedly led to this point. I am thankful to my father, George, mother, Patricia, and brother, Chris, for their constant assistance and support over the years. I wish to thank Gale Fulton for his part in bringing this project to light and for the unwavering value he places on computational design within Landscape Architecture education. I would also like to thank the School of Landscape Architecture at University of Tennessee, Knoxville, which has supported me during the production process. My gratitude goes to all of the students with whom I have worked and shared many experiences at the College of Architecture and Design at the University of Tennessee, Knoxville. In particular, I would like to extend my profound appreciation and thanks to graduate research assistants Breanna Browning and Kerri Nickel, as you both have afforded signifcant time, energy, and skills in helping me bring this project to fruition. I owe the successful completion of this book to my family and the many friends, colleagues, students, and leaders whom I have known and engaged with over the years.
FOREWORD Parametric potentials Gale Fulton Not that long ago I was invited to attend a series of student presentations for an architecture elective course. Students had chosen topics on contemporary themes in architecture, landscape, and urbanism, and were asked to make presentations showcasing their fndings. One presentation in particular stood out to me.The subject matter of the research was “the parametric,” and the primary vehicle through which this student had elucidated the subject was through the work of Zaha Hadid. Equating the parametric with a particular style of architectural or landscape architectural form has not been uncommon in the last two decades as Rhino and Grasshopper have become widespread in the academy and, to a lesser extent, professional practice. Unfortunately, this reduction of a more explicitly parametric approach (aren’t all design processes in some way parametric?) throws out baby and bathwater. Sophisticated formal and spatial effects such as those found in the work of Hadid were ideologically rejected, and with them went the willingness of many to scratch beneath the most superfcial form-giving aspects of this method to mine its potentials for more effectively engaging the complexities of contemporary design. But similar to the early experiments with Maya and other advanced digital technologies in the early and mid 1990s, we have thankfully moved into a post-voronoi era of the parametric where pragmatic generalists like Andrew Madl are helping students – in or out of the classroom – deploy the power of the parametric beyond strictly formal experiments to include sophisticated landscape analysis, the simulation of dynamic site processes, and rapid iteration of complex programmatic scenarios. Educators like Madl are a critical component of the wider adoption of parametric processes in the profession. Learning complex software like Grasshopper is no easy task. It is not unlike learning a new language, and no matter how useful or valuable one knows it would be, how many of us have successfully followed through with that widely held aspiration as adults? And, as with modeling in software like Maya, 3DS Max, and more recently, Rhino, the majority of the instructional content available for designers of the built environment, whether in published books or on YouTube, is aimed at architects.This tendency toward architecture, while understandable given the relative sizes of the two disciplines, undoubtedly results in a certain “architecturalization” of landscape architecture, which is unfortunate given the vast differences in media and methods that the two disciplines increasingly display. Parametric Design for Landscape Architects works to overcome both of these limitations by providing landscape architects with a visually oriented manual that develops a bottom-up understanding of the use of Grasshopper, as well as direction on discipline-specifc tasks, such as aspects of landform analysis and greater understanding of site dynamics. Madl’s pragmatism even includes techniques on ways that designers can “outsource” some of the tedium of offce processes, such as labeling contours, annotating slope percentages, and notating planting plans. But the book is not limited to the analytical or the expeditious.Also included are more projective modes of parametric process including demonstrations of cellular modeling, agent-based behaviors and the generation of urban scenarios – all of which are dynamic processes that landscape architects must continue to embrace in order to truly engage the dynamic nature of the landscape medium. Once exposed to these dynamic, iterative potentials of parametric processes and workfows, it seems obvious that they are, or should be, essential aspects of a contemporary landscape architectural education. Parametric Design is poised to serve as an essential reference text amongst what I hope is a growing body of instructional resources that help old dogs and young turks develop new ways for analyzing, generating, and implementing innovative landscape designs.
Gale Fulton is Associate Professor and Director of the School of Landscape Architecture at the University of Tennessee, Knoxville. He has taught landscape architecture and urban design at the University of Illinois at Urbana-Champaign, the Pennsylvania State University, and the University of Adelaide in South Australia. In addition to his experiences as an educator, Gale has practiced landscape architecture, urban design, and garden design at multiple frms across the United States. At the multi-disciplinary frm Civitas in Denver, Colorado, he worked on projects ranging widely in scale and scope, such as the San Diego Riverpark Masterplan and concept plans for a multi-modal transit facility at Denver’s Union Station. In collaboration with Aptum Architecture, Gale has received awards on several competitions including the Gowanus Lowline in Brooklyn and the Network Reset competition in Chicago. His writing has been published broadly in such venues as Landscape Architecture Magazine, Landscape Journal, Kerb, and Landscape India. X PARAMETRIC DESIGN FOR LANDSCAPE ARCHITECTS FOREWORD
PREFACE When the phrase Parametric Design is encountered or spoken of in the discourse of architectural felds, a certain attitude, aesthetic, and theory are associated with it.Typically, what comes to mind are seemingly fantastic, contentious designs that provoke a set of rules in morphology and practice.These output expressions of contorted geometry along with apparent over-sophistication of organizational systems arouse a sense of precautionary intention of use.This wariness is potentially a product of merely needing to decipher the parametric design process in its output identity. The misconstruing of the parametric process, as aligned to what can be understood as traditional design process, arguably falls to perceptions of how computational design has infuenced built work as well as the aesthetic, often as an overly formal expression of the landscape, or built, that follows. Misinterpretation of computational design as a mode of design agency can stem from a description of the process as being masked and less tangible.This may take the form of an understood limitation of software/language as well as the (lack of) transparency of the aligned workfows with their parameters, functions, and augments to a larger design audience, rather than just to those who specialize in it through academic or professional work. It is not to say, however, that the information and skills related to computational, or, maybe more popularly labeled, parametric, design are held to a privileged grouping connected to an educational generation or phase of design theory. Rather, parametric software and coding languages are still navigating their expanse and place in landscape architecture practice and education. It is not a novel concept that the feld of landscape architecture, along with other design disciplines, are constantly evolving with computational support. Computer-aided drawing software has streamlined production for professional practice and opened up a varied sub-feld of academic research for landscape architecture. As with the rapid nature of technological releases, it takes time for users to accept, learn, adjust, and master these tools to perform at and above the standards of the feld. It is with this conceit of continued adjustment that the tools become imported and not embedded.To def ne embedded in this syntax, the tools should not simply be a supportive device for design, but rather should inform it.The scenarios, systems, and scales that landscape architecture currently and projectively address are extremely complex. Overwhelming amounts of data and parameters fuel these complex systems/ landscapes of investigation, and the capacity and capabilities of tools and their use in the design process needs to match this. While the above generalizes and hints at perceptions of, and needed discourse on, computational design, this book is an indirect response to those propositions. Solicitations of response are provoked through going under the hood, providing a sequence of tutorial-based workfows for the creation and utilization of algorithmic tools calibrated toward the feld of landscape architecture. Contemporary practice and projective theory in landscape architecture requires the processing and design of data associated with complex systems to adequately represent composite, emergent scenarios.Aligning to both traditional and nascent processes of analysis and digital modeling, this book unpacks and decodes the characterization of algorithmic-based automation, leveraging software that is widely accessible in both academia and professional practice. Curated throughout are workfows that apply to a multiplex of computational programs that widely support the design, analysis, and production of landscapes, primarily concentrated on digital modeling tools Grasshopper ®and Rhinoceros ® .This book is intended to be a resource to aid in more effcient understanding and creation of tools that automate and re-examine traditional calculations, analyses, drawing standards, form-f nding strategies, fabrication preparations, and speculative assessments/simulation. This primer on algorithmic workfows provides students and professionals with multifaceted skill sets that, when applied in practice, expand and expedite conventional and speculative design workfows applicable to spatial design, and, more specifcally, landscape architecture.
CHAPTER 01 TRANSFORMATIONS, TRANSLATIONS, AND VECTORS Leveraging geometric data This initial chapter is intended to present a base knowledge that will be expanded upon in the following chapters.The tutorials will introduce basic computational concepts relative to the manipulation of primitive geometries in Rhino by automating basic operations and their associated parameters. Exercises in scaling, rotating, and moving geometries through algorithmic processes will be presented. Data created in this chapter will be leveraged as a framework for further manipulation and development as the publication unfolds. As with any introduction to software or computation language, basic operations and assemblies are at the core of defning cursory understanding.The presented workfows will provide a basic skillset and knowledge that can be leveraged in more complex models for greater depth and representation.The simple competence of automating and repeating typical commands has not only the ability to streamline digital workfows but also to help address function and annotation of larger/territorial scales.The operations of translating and transforming geometry will provide a composition of native functions/components in Grasshopper. These functions align to a better understanding of how the commands in Rhino3D run through and expose all of the parameters that are built into such commands. Extrapolating from these baseline computational operations, held data of these operations associated with direction and distance will be utilized to perform further arguments to fuel representational and analytical outputs.To a degree, a vocabulary regarding such functions, Grasshopper, and computation in general will be introduced. 01.01_ CREATE CUSTOM VECTORS AND TRANSLATE/MOVE 3D OBJECT TO MULTIPLE POINTS Process overview This introductory, generic workfow seeks to provide basic automation of translating a 3-dimensional object to various supplied point locations.This script exhibits and leverages cursory understanding and utilization of vectors. Simply, a vector can be described as a mathematical object that embodies data characteristics of having a magnitude (size/length) and a direction.With this basic identifcation of what a vector is, it becomes necessary to understand how this conceit can be used as, or part of, an operation for 3D modeling.When an object is moved or translated in the model space of Rhino3D, it is done utilizing the Cartesian coordinate system, which is composed of three perpendicular axes, x, y, and z (positive/negative vertical axis).When an object or objects are moved from one coordinate point or location (x1, y1, z1) to another coordinate point (x2, y2, z2), direction and magnitude (vector) needs to be supplied.Through simply using the basic MOVE command in Rhino3D, this direction and distance is created by identifying the coordinate that the cursor was over the top of/snapping to upon clicking.Within this translation operation, a point (coordinate location) on the geometry (mesh, surface, point, curve, polysurface, etc.) is identifed with the frst mouse click.This coordinate is the start of and center of the translation.To complete this operation, the second mouse click supplies the terminal coordinate location to create the vector, the direction and distance from the frst location.With this brief identifcation and expression of a translation operation, the effectiveness of how automation of such an action can facilitate 3D modeling becomes clear. CHAPTER 01: TRANSFORMATIONS, TRANSLATIONS, AND VECTORS PARAMETRIC DESIGN FOR LANDSCAPE ARCHITECTS 1
01.01.00: Create and reference in 3D geometry from Rhino3D to Grasshopper With both the Rhino3D and Grasshopper windows open, a geometry of a closed polysurface/ Brep (boundary representation object) or mesh can be created or imported into the model space of Rhino3D. For this example, a simple polysurface box will be used.This geometry will then be referenced into Grasshopper as the base input of the script. _Model a box in model space by using the Box command. Specify the desired dimensions. _In the Grasshopper window, and on anywhere on the canvas, left double-click and search for the Geometry component. Rather than a Surface or Mesh component, the Geometry component is used in this case to help aid in the re-application of this script in other modeling scenarios, as the Geometry component can reference any geometry used within Rhino3D (surface, mesh, point, curve, polysurface/brep, etc.). There should now be an instance of a geometry component present on the Grasshopper canvas. The component will be rendered orange, as there is no data input into the component. _Right click on the orange Geometry component and select “Set one Geometry” from the menu. _Navigate to the Rhino3D modeling window and click on the Box geometry. Figure 1.1.0 Input box geometry and geometry component Figure 1.1.1 Reference box geometry into Grasshopper Figure 1.1.2 Visualization of referenced geometry in Rhino3D model space and Grasshopper The Box geometry will now be referenced into Grasshopper and will be previewed in red in model space, while the Geometry component will be appearing grey on the Grasshopper canvas. 2 PARAMETRIC DESIGN FOR LANDSCAPE ARCHITECTS CHAPTER 01: TRANSFORMATIONS, TRANSLATIONS, AND VECTORS
01.01.01: Create frst coordinate point of translation through volume calculation and projection With the Box geometry referenced into the Geometry component in Grasshopper, the frst coordinate location or point of the translation can be created. For this workfow, the Box will be moved from its lowest center point. _Place a Volume component on the canvas (by using the same method as mentioned above for the Geometry component) and connect the output from Geometry into the geometry input on Volume.There are two outputs from the Volume component.The frst,“ V”, is the calculated volume of the input object as a number, and the second, “C”, is the centroid or center point geometry of the input object. Figure 1.1.3 Volume and centroid calculation _The centroid point geometry will serve as the base from which the Box geometry will be moved. For this example, and as it might relate more generically to the utilization of the script, the centroid will be projected to the cplane of Rhino, as this is the lowest location of the input geometry. For using this script in other scenarios, and based on how it is presented, all input geometries to be moved and replicated to points will be placed with their lowest point at the cplane/0 on the z-axis. To project the output centroid point to the cplane, place a Project (object not curve) component on the canvas and connect the output “C” from Volume to the input “G” (geometry) on the Project component. Project will output/preview a point geometry in the center of the Box at its lowest point/0 on the z-axis.This point will be the starting location and orientation of moving the Box. Figure 1.1.4 Projected centroid to cplane CHAPTER 01: TRANSFORMATIONS, TRANSLATIONS, AND VECTORS PARAMETRIC DESIGN FOR LANDSCAPE ARCHITECTS 3
01.01.02: Calculate custom translation vectors between the center lowest point of the box and move to the desired end locations Having now calculated the center point of the Box geometry at the lowest point, this point/ location will provide the starting coordinates for the translation.The fnal steps to script will work with further input geometry (points) from the model space of Rhino3D. Multiple (as many as desired for the modeling conceit) point geometries/locations can be added to the model to provide end locations of where the Box geometry will be moved and copied to. _In model space, using the Points command, place multiple point geometries anywhere in the model space. Once the points are drawn, add a Point component in Grasshopper and reference in the newly drawn points by right clicking the component and selecting “Set Multiple Points” from the drop-down menu. When prompted by this operation, select the points in model space and hit enter.The Point component will now be grey, and the points are referenced into Grasshopper. _Next, the vector(s) for the translation/movement of the Box to the point locations will be created. Add a Vector 2pt component to the Grasshopper Canvas. This component receives three inputs, two of which, “A” and “B”, will be used for the purpose of this script.The “A” input will be supplied with the starting point of the vector, which in this case will be the calculated projected centroid of the Box. Connect the output “G” from the Project component into the “A” input on Vector 2pt. Next, plug the output from the Point component, which houses the referenced in fnal point locations for the move, into “B” on Vector 2pt. The vectors, their magnitude, and direction between the projected centroid and the end location points is now calculated. _To visualize, and as a means to check the output vectors before moving the Box, place a Vector Display component on the canvas. Connect the output vectors, “V” from Vector 2pt, into the “V” input on Vector Display. For the “A” input or anchor point to preview the created vectors from on Vector Display, connect the output “G” from Project, as this is the starting point of all the created vectors. Upon these connections, lines with arrows should be previewed in model space, with their lengths matching the distance Figure 1.1.5 End point locations drawn in model space Figure 1.1.6 Referenced end point locations and vector calculation Figure 1.1.7 Visualizing vectors 4 PARAMETRIC DESIGN FOR LANDSCAPE ARCHITECTS CHAPTER 01: TRANSFORMATIONS, TRANSLATIONS, AND VECTORS
of the input points and arrows pointing toward them.There should be the same number of vectors displayed as fnal end point locations. Figure 1.1.8 Visualized vectors previewed in model space _The fnal step in the script is to add a Move component in Grasshopper.This fnal component will provide the operation of moving the starting Box geometry to the fnal end point locations. Connect the output from the original Geometry component (the referenced Box from Rhino) to the “G” or geometry input on Move. The second input on the Move component requires a vector for the translation of the geometry to be moved, ie. a direction and distance. Connect the output “V” from Vector 2pt to the“T” input on Move. Once both inputs on Move are connected to the proper output data, the Box geometry should be copied and moved to the fnal end point locations, completing the intention of the script. _To “export” or Bake the created moved geometry, right click on the “G” output on Move and select Bake from the drop-down menu. The option to choose which model layer the geometry will be baked and placed onto, as well as if the geometry is to be grouped, is presented before clicking Bake. Once this step is concluded, the geometry will be fully present, selectable, and able to be further manipulated. While the resulting output of the script may not be all that exciting, the basic understanding and operation provides the basis for more complex operations and sub-operations to scripting facilitated modeling. Figure 1.1.9 Completed script in Grasshopper Figure 1.1.10 Preview of script output, moved boxes CHAPTER 01: TRANSFORMATIONS, TRANSLATIONS, AND VECTORS PARAMETRIC DESIGN FOR LANDSCAPE ARCHITECTS 5
01.02_ DECONSTRUCT AN INPUT SURFACE TO A POINT GRID AND PLACE RANDOMLY ROTATED 2D GEOMETRY ON POINTS Process overview Building on the understanding of automating basic operations to facilitate modeling, the following workfow provides cursory deconstruction of geometry to provide leveraging in additional operations. In particular, a fat surface geometry will be deconstructed into a grid of points to supply locations on which geometry can be added and further manipulated. Once the geometry is placed at the point locations, it will be rotated randomly based on a supplied list of numbers that will act as the degree values for the rotation. Similar to the last workfow, this example exhibits baseline understanding and manipulation of primitive geometries that can be furthered and/or placed into more complex modeling techniques. 01.02.00: Create and reference in 3D geometry from Rhino3D to Grasshopper To start, a fat surface will be placed into model space. This can be accomplished by using the Plane command in Rhino3D.The surface in the example is equal in length on all sides, but this is not necessary. _Reference in the Surface/Plane geometry into Grasshopper by adding a Surface component to the Canvas. Right click and select “Set one Surface”. _With the geometry now referenced, add a Divide Surface component to the workspace. Connect the output surface from the Surface component into the “S” input on Divide Surface. _The second and third inputs on the Divide Surface component, “U” and “V”, allow for continual updating in dividing the surface into a number of points and segments. Inputs for “U” and “V” require an integer. This can be done though either the use of a Panel component or a Number Slider component. For this workfow a Number Slider will be used so that the input values can be more easily updated live.To place a Number Slider on the canvas, double-click and search for the component or simply type a number and hit enter.This will provide a Number Slider component with a range of numbers that ft the number in which you entered. For instance, if the number “5” is typed then entered, the slider will have values between 0 and 10. If “30” is entered, the slider will have values from 0 to 100. To create a more customized slider without having to right click the component and adjust values, a simple expression can be typed to supply the desired value range. For example, if “20<500” is entered in the search line and enter is clicked, a slider with values from 20 to 500 will appear in the workspace.This workfow Figure 1.2.1 Divided surface into points and segments example is using a Number Slider set at 20. 6 PARAMETRIC DESIGN FOR LANDSCAPE ARCHITECTS CHAPTER 01: TRANSFORMATIONS, TRANSLATIONS, AND VECTORS
Connect the Number Slider to both the “U” and “V” inputs.Two Number Sliders can be used, one for the “U” and one for the “V”, if the values are desired to be different and not the same number of points/segments in the U and V directions. The input Plane geometry will now be previewed with a grid of points in model space. 01.02.01: Place polygon curve geometry at each point on the divided surface This step will use the created point geometry from the surface deconstruction/division to place polygon curves.The point locations/coordinates x,y,z will be used as the center of each polygon. When looking at the outputs of Divide Surface, there are output points and UV parameters. If the mouse cursor is placed over the top of output “P”, a panel of multiple data lists will be shown, one for each point. Right click on the top of “P” and select “Flatten”.When hovering the cursor back over “P”, it will be shown that the data has changed and is now one list of multiple lines with three values. Originally, each point that made up the surface division was maintained as its own list, but now all points are in one list and present themselves each as one line of three values, x,y,z. The same process can show the values for the “UV” output. It is to be noted that the values are different. Each point has an xyz value, as well as a uv value.The xyz values are relative to the entire Cartesian coordinate system of the model space, while the uv values are relative to their position on and within the dimensions of the surface geometry. _Place a Polygon component into the script.To create and control a triangular geometry, add a Number Slider to the “R” (radius) input and a slider with a value of 3 to “S” (segments) input on Polygon.These sliders will allow you to control the size and number of sides/segments to the created polygon curve geometry. _Connect the fattened “P” output of Divide Surface into the “P” input on Polygon. The supplied points from the divided surface act as the center point of each polygon.The output polygons on the surface points should now be previewed in model space. Figure 1.2.2 Polygon geometries placed on division points CHAPTER 01: TRANSFORMATIONS, TRANSLATIONS, AND VECTORS PARAMETRIC DESIGN FOR LANDSCAPE ARCHITECTS 7
01.02.02: Create random rotation value for each polygon Figure 1.2.3 Generate series of consecutive numbers for degree of rotation Figure 1.2.4 Rotation of polygons with generated series of numbers Figure 1.2.5 Preview of output feld of rotated geometry With the polygons/triangles placed at each point of the surface division, an added operation of rotating each with a unique, gradually increasing degree value can be achieved. A series of consecutive numbers will be created, one for each polygon. These values will match to a polygon and allow for multiple transformations to occur at once. _In order to create the degree values to match the polygons, the number of polygons must be calculated to generate a list of values that are the same length/amount as the polygons. Place a List Length component in the script and connect the output polygons, “P” from Polygon to the “L” input in List Length.The output from List Length will provide a number that is the count of how many polygons are being produced. _Now that the number of polygons is calculated, a Series component can be introduced. This component provides the operation of generating a list of consecutive numbers from a controlled starting value, increment value, and amount of values. For instance, the starting value can be 0, the increment value 2, and the amount of values 10, and provide the sequence 0, 2, 4, 6, 8, 10, 12, 14, 16, 18. As an example for this workfow we can use a Panel component and type “0” in it to provide the starting number or “S” input. For the incremental value, or step size, we can use “21” and connect a Number Slider. For the last input, “C”, the output “L” from List Length can be connected, as this is conveying the number of values needed to match the amount of polygons. _Having spawned a list of values to be used as degrees, the fnal operation of rotation can be achieved through including a Rotate component.The polygon output “P” can be connected to “G” (geometry), and the output from Series can be connected to “A” on Rotate. “A” is the angle for rotation, which is, by default, measured in radians.To change to degrees, place the mouse cursor over “A” and select degrees.The f nal input for the rotation to function is to provide “P”, the rotation plane. Point geometry and their associated data act as planes, which allows for the output points from Divide Surface to be used as the reference plane(s). Having connected the output “P” from Divide Surface to the “P” input on Rotate, the polygons should now appear rotated in model space. 8 PARAMETRIC DESIGN FOR LANDSCAPE ARCHITECTS CHAPTER 01: TRANSFORMATIONS, TRANSLATIONS, AND VECTORS
01.03_ RANDOM DISTRIBUTION OF LINES WITH HEIGHT VARIATION ON A GEOMETRY Process overview The previously illustrated processes are quite controlled in their nature and performance.The following script begins to express how to manipulate geometry and modeling to provide more heterogeneity.This workfow provides a basis in controlled yet randomized logic to modeling, as simply visualized through a random population of vertical lines that are characterized by varying heights. Though this simplistic representational model may appear to be reductive, there is a bit of complexity that can be understood and revelatory of a vegetal stratifcation.This notion of slight intelligence to the model and logic can be produced through density of the random line locations, as well as the domain, distribution of possible values, and the length values of the lines. Ultimately, what will be manufactured is an instance of an abstracted scenario of vegetation. 01.03.00: Randomly populate a geometry with a set number of points Place a geometry, mesh, surface, or brep in model space to be populated with points and, eventually, vertical lines. The geometry can be 2D or 3D, and the following will present a simple 2D surface/plane.The initial operation will be to create random point locations/coordinates on the geometry. _Reference in the model geometry into the respective component ( Mesh, Surface, Geo, Brep) in Grasshopper. Connect the output referenced geometry to the “G” (geometry input) on a Populate Geometry component.You will see a preview of points being randomly distributed across the geometry. _To control the number of points to be placed on the geometry, use a Number Slider that holds the desired value or value options. Connect the slider to the “N” (number/count of points) input on Populate Geometry. With these initial steps, the basic environment for the model is created. 01.03.01: Move distributed points on geometry in the positive z-axis The proceeding additions to the script will provide the base composition of the vegetal objects by moving the distributed points vertically and creating a line between the original and moved points. _To translate the randomly placed points use the Move component. Connect the output points from Populate Geometry to the “G” (geometry) input on Move. _A translation vector is needed to give a direction and distance for the movement. Place a Unit Z component on the canvas, as the z-axis is the intended axis of movement.To create the distance Figure 1.3.2 Move randomly populated points in the z-axis and connect with lines Figure 1.3.1 Random distribution of points on geometry CHAPTER 01: TRANSFORMATIONS, TRANSLATIONS, AND VECTORS PARAMETRIC DESIGN FOR LANDSCAPE ARCHITECTS 9
of the translation and effectively create the vector, use a Number Slider with a base value for the movement.This value will be altered in the coming steps to provide randomization of heights. Connect the output vector from Unit Z to the “T” input on Move.The points should now be moved vertically from their original locations to the value that was specifed in the Number Slider. _To connect the original and moved points with a line geometry, use the Line(ln) component.This component allows for the input of starting points “A” and end points “B” to create lines. Use the output points from Populate Geometry as the “A” input and the output “G” points from Move for “ B”. Lines connecting the originally populated points and the moved points should then appear. Figure 1.3.3 Previewed moved points and lines 01.03.02: Randomly scale lines to generate stratif cation Now having the populated points and associated line geometries, the lines can be randomly scaled to provide further intelligence to the modeling strategy. Similar to the previous workfow where each polygon was rotated at a different degree, each line will be scaled to a different height by generating a random list of numbers that matches the number of line geometries. _Incorporate a List Length component into the script and connect to the output “L” from Line(ln).This will isolate and output the number of lines being created (this will be the same number from the Number Slider input on Figure 1.3.4 Create random values from a specifed domain Populate Geometry). _Place a Random component into the workspace and connect the output from List Length to the “N” input on Random. The number of random values is now supplied. For the “R”, or range input, plug in a Panel. This input is requiring a domain to generate random values within. Double click into the Panel and provide a domain in the format of “x to y.” The x value is the lower limit of the domain and the y is the upper limit. The lower limit will be the smallest value of scaling, while the upper limit will be the maximum value of scaling. Held within the domain are random numbers that ft within the limits specifed. The generated random values will be used as factors to scale the input value of the Number Slider that is setting the initial Figure 1.3.5 Use random values to scale lines length of the z-axis movement. Attention can be 10 PARAMETRIC DESIGN FOR LANDSCAPE ARCHITECTS CHAPTER 01: TRANSFORMATIONS, TRANSLATIONS, AND VECTORS
directed to this number and created domain to adequately produce a model that is relative to the accurate sizing distribution of a plant community. _The randomly created values that ft within the specifed domain can now be leveraged to provide scale factor for line geometry. Employ the Scale component and connect the output lines from Line(ln) to the geometry input, “G”, on Scale.The remaining inputs on Scale look for a center of scaling and for a scale factor. Plug in the output points from Populate Geometry to “C” to use as the point to scale from for the operation. Next, connect the output random values from Random to the “F” input on Scale to specify the scaling factor. The result of the script should create a population of randomly placed lines on the geometry of varying heights, providing a simple simulation of a vegetal community. Figure 1.3.6 Output abstracted vegetal community model 01.04_ MOVE, SCALE,AND ROTATE 3D GEOMETRY TO RANDOMLY POPULATED POINTS ON BASE GEOMETRY Process overview The fnal workfow of this introductory chapter leverages and combines the previously discussed operations to provide more detail and complexity for automation of typical modeling needs.The output of the workfow will comprise the random population of a 3D object, a tree in this case, across a geometry with varying size and rotation.The script combines the conceits addressed by the previous workfows to provide insight on how to combine operations to further manipulate and adjust geometry to provide a more robust output. Although the operations of the previous workfows will be replicated, the inputs and composition of the script will slightly differ to create the intended resultant model. 01.04.00: Randomly populate a geometry with points and reference 3D model to be placed at point locations Create a geometry that is either a mesh, surface, or brep to act as the base or landscape parcel across which the 3D object will be populated.The example is simply using a fat surface as the base and a mesh 3D tree as the object to be replicated. The 3D object should have its lowest point at the cplane/0,0. _Following suit to the previous examples, reference in base geometry to either of the respective components—a Surface component will be used here. Do the same for the 3D model that will populate the space. For the 3D mesh tree, a Geometry component is used. _Upon having referenced in the base data geometries, attach a Populate Geometry Figure 1.4.1 Referenced tree and surface geometry, and random points CHAPTER 01: TRANSFORMATIONS, TRANSLATIONS, AND VECTORS PARAMETRIC DESIGN FOR LANDSCAPE ARCHITECTS 11
component to the input Surface. Place a Number Slider, set the desired value for how many points to populate the surface with, and connect to the “N” input on Populate Geometry. 01.04.01: Find the centroid of the 3D object, project to use as a base point of movement Figure 1.4.2 Calculation of centroid from bounding box and connection to translation script The following operations take advantage of the introductory workfow of the book, where vectors are created between various point locations and are used to translate an object. Similar to the start of workfow 01.01_Create custom vectors and translate/move 3D object to multiple points, a point or location must be solved for to be used as the start of the created vectors from the object’s original location. Using similar logic in how the centroid was calculated for the box geometry in the frst workfow, the centroid of the 3D geometry that will be populated is to be derived. _Place a Bounding Box component within the script and connect the output from the referenced Geometry for the 3D object to the “C” input on Bounding Box. This component is providing the process of placing a box geometry around the 3D geometry that aligns to the 3D geometry’s x, y, and z extents. Many complex geometries that can be used with this script may be open meshes or breps, as well as be composed of multiple grouped or block geometry. Because of this, multiple volumes or centroids may be produced, and there is potential for the possible failure of the calculation. These issues can be avoided by using the bounding box to fnd the centroid of 3D geometry, as the box is the same unit extents and will place a point at the general center of the object. _With the bounding box placed around the 3D geometry, the output from “B” (top output) 12 PARAMETRIC DESIGN FOR LANDSCAPE ARCHITECTS CHAPTER 01: TRANSFORMATIONS, TRANSLATIONS, AND VECTORS
from the Bounding Box can be plugged into the “G” input on Volume.With this function, the centroid is now calculated. _The script from workfow 01.01_Create custom vectors and translate/move 3D object to multiple points can now be recalled upon and added to the script, as the required inputs have been staged. _The output points from Populate Geometry can now be plugged into the “B” input on Vector 2pt.With this action, and in working with the completed scripting from 01.01, the 3D geometry (for example the tree geometry) should be previewed at all of the created random point locations. Figure 1.4.3 Bounding box around original referenced tree geometry and populated trees 01.04.02: Randomly rotate the translated 3D geometry Figure 1.4.4 Create random rotation from moved geometry script portion As the 3D geometry (to be further referred to as trees for this example) has been populated across the base surface, further manipulation can be carried out to provide more complexity in the portrayal of the model with regards to aesthetics and accuracy. Up to this point, the previewed trees are all of the same size and orientation.To create more randomness to the vegetal representation, the trees can be randomly rotated. _With the output geometry now placed on the randomized points, the output “G” from Move can be connected to a Geometry component to help organize the script and visually aid in presenting the data that is going to continue to be utilized.To randomly rotate the trees, a list of random values serving as the angles of rotation must be created. Similar to workfows 01.02_ Deconstruct an input surface to a point grid and place randomly rotated 2d geometry on points and 01.03_Random distribution of lines with height variation on a geometry, the List Length component will be utilized to provide the number of tree geometries, so a list of the same length is created for the random rotational values. Connect the output from Geometry into List Length. Figure 1.4.5 Preview of randomly placed and rotated tree geometries CHAPTER 01: TRANSFORMATIONS, TRANSLATIONS, AND VECTORS PARAMETRIC DESIGN FOR LANDSCAPE ARCHITECTS 13
_As in the past example, to create a random list of values, Random can be used. Connect the output value from List Length to the “N” input on Random. Place a Panel onto the canvas to be used as the domain for the random values.The domain can simply be set to be “0 to 360,” so as to provide for a spectrum of full rotational values. Connect the Panel with the specifed domain into the “R” input on random. The values have now been created. _Rotate 3D can provide the desired rotational operation. Connect the output tree Geometry to the“G” input, as well as the output points from Populate Geometry to the “C” or center of rotation input on Rotate 3D. Right click on the “A” input and select Degrees to change the rotation angle from being measured in radians. Finally, plug in the output “R” from Random to “A” on Rotate 3D. The 3D geometry should now be randomly populated and rotated. 01.04.03: Randomly scale the translated and randomly rotated 3D geometry Figure 1.4.6 Completed script with added component group creating random scale operation To add the fnal logic of manipulation to the trees, the same approach as presented in 01.03_Random distribution of lines with height variation on a geometry will be deployed. As with the random creation of rotational values, a random list of values for scaling factors will be generated to create a feld of objects that are randomly sized. _Using List Length the number of rotated objects can be identifed. The length of the list should be the same value as with the previous List Length of the moved geometry.The output can be used again, or a new List Length component can be placed on the canvas and connected to the output “G” from Rotate 3D. _Compose a domain in a Panel to provide the Figure 1.4.7 Output of script presenting randomly rotated and scaled tree geometries range of scale factor numbers and connect to the 14 PARAMETRIC DESIGN FOR LANDSCAPE ARCHITECTS CHAPTER 01: TRANSFORMATIONS, TRANSLATIONS, AND VECTORS
“R” input on a new Random component. Connect the output from List Length to the “N” input on Random.The random values for scaling are output. _Now, having produced the necessary parameters for scaling, place a scale component into the workspace. The geometry (“ G”) to be scaled is the output “G” of Rotate 3D. Plug in the output from Random to “F” to provide the scale factors.The center for scaling, “C”, will be the output points from Populate Geometry, in order to maintain current location and accurate scaling. The output allows for and alludes to more specifcation in automating than what can be considered typical modeling for landscape architects. Control, yet uncertainty, is provoked through randomization in the logic of placement and appearance.Though this is a basic scripting conceit, additions and alterations can add to the output complexity. Multiple lists of points can be randomly added in association to multiple geometries to provide a more in-depth look at a feld condition or vegetal structure. 01.05_CONTEXT The workfows and tools presented within this chapter provide a basic understanding of leveraging operations through scripting to facilitate digital modeling.This skillset extends beyond a competency in 3D digital modeling in Rhino3D and Grasshopper, with the ambition of aligning to contemporary design theory where the feld is shifting focus toward the complexities of territorial analysis and intervention.The automation of the manipulation of geometry aids in superfcially modeling a large site model and, additionally, provides basic iterative design strategies that can be adjusted across such large scales.The capability to rapidly model complexity provides the ability to rapidly evaluate complexity.The simple notion of populating a landscape of investigation with 3D geometry of a plant community provides an immediate recognition and more in-depth reading of the landscape. It is greater control of distribution and evolution of this representational manifestation of the landscape, however, that provokes further interest for the investigation of performance. As the workfows of this book progress, the concept of modeling as a means for continual evaluation and adjustment for performance based on further manipulated and created data follows. CHAPTER 01: TRANSFORMATIONS, TRANSLATIONS, AND VECTORS PARAMETRIC DESIGN FOR LANDSCAPE ARCHITECTS 15
CHAPTER 02 LANDFORM CREATION Base modeling, site design, f eld conditions As computational strategies have become more accessible and grounded in the feld of landscape architecture, 3-dimensional modeling of topographic conditions has become fundamental in the design process.The ability to model the sites and landscapes in which design work is taking place has allowed for increased clarity and accuracy in cataloging and analyzing site conditions. Digital topographic site models allow for design propositions and interventions to be explored through the manipulation of the base model geometry, including considerations of scale, grading, stormwater practices, and speculations on ecological performance. The contextual modeling of terrain to express proposed site conditions has become a common and valuable process for professionals as well as for students.This chapter explores computational workfows that facilitate the creation of territorial and site scale topographic models in choreography with the utilization of open data sources.These data sources provide greater accuracy or may act as a substitute resource when contracted survey data is unavailable. Commonly used data fles associated with the software ArcMap are leveraged to create base terrain models in Rhino by accessing and importing the data via Grasshopper algorithms.The presented processes are benefcial for connecting data driven software (ArcMap) with 3d modeling (Rhino), resulting in a streamlined, efficient workfow for creating base topographic models. Building off base model production, various examples of automating landform creation from user-input, primitive geometries of Rhino are presented.These workfows allow the rapid prototyping and iterating of design propositions that can then be evaluated for performance and augmented based on abstract or grounded site parameters.The use of the following tutorials supports traditional design processes revolving around grading schemes that provide hydrological function.Additionally, resultant geometries and inherent properties can be applied to theoretical and speculative proposals positioning landscape with infrastructural and schematic urban agency. 02.01_ BASE TOPOGRAPHIC MODEL FROM DEM POINT DATA (ARCMAP) TO MESH (RHINO/GH) Process overview The following workfow leverages typical ArcMap elevation data, the Digital Elevation Model (DEM), for analyzing and representing topography.A DEM is a 2-dimensional representation of a surface condition relative to elevation, temperature, or other distributed data across a geographic boundary.These representations are comprised of a matrix of cells (pixels) that each hold a value relative to the associated cell boundary and geospatial location.This raster data is often visualized through color ramps or hillshade methods where color ranges symbolize high or low value extremes.This type of data is created through methods such as Lidar, survey/mapping drones, range imaging, and radar. DEM data sets are generally available for (free) download from county, state, and country GIS websites, research-based organizations, and larger, inventoried GIS databases such as Esri.The resolution associated with a DEM is typically measured in metrics such as meters (much like typical topographic/contour cartographic representation), USGS 7.5-minute quadrangle, or arc-seconds.The 7.5-minute quadrangle map refers to an operative mapping model deployed by the United States Geological Survey, which can cover an area of 49 to 70 square miles enclosed by nonlinear 16 PARAMETRIC DESIGN FOR LANDSCAPE ARCHITECTS CHAPTER 02: LANDFORM CREATION
boundaries aligned to the Earth’s lines of latitude. Arc-seconds refer to the longitude and latitude relative to the associated cell values of the grid being recorded. The typical values associated with arc-second measurements are 1/9, 1/3, 1 (ending at 30), with 1/9 exhibiting the highest resolution.The presented workfow connects two of the most widely utilized computational programs in landscape architecture, ArcMap and Rhinoceros (Rhino), for the purpose of creating a site or territorial scale 3-dimensional digital model. Starting with a raster DEM data set in ArcMap, the raster will be converted into a point shapefle that retains its elevation data per point geometry.The collection of point geometry/data values will be imported into Rhino via Grasshopper and the Grasshopper plugin @it. Once imported, the point geometry will be translated vertically via the associated elevation values to transition the point data from a 2-dimensional geometry collection to a 3-dimensional one. From the created 3-dimensional point geometry collection, a mesh will be produced through point triangulation.This workfow facilitates the creation of 3-dimensional base models for analysis and design. The workfow is especially benefcial for larger scale topographic modeling and for instances where surveys and other contour data sets are not readily available. 02.01.00: Load DEM data into ArcMap After acquiring the necessary DEM for the intended project, load the data layer into ArcMap. Depending on the scale of DEM or the desired boundary for investigation, clipping the raster data set or combining multiple DEM data sets may be required.The larger the territory of the DEM, the longer the computation time will be when converting the raster data into a point shapefle and importing into Rhino. As a basis for this example, a DEM representing the topographic conditions of Downtown Nashville,TN, USA, will be utilized.The DEM used is derived from Lidar and is approximately 33,000 feet by 27,000 feet (20,000 acres). Data source: www.tn.gov/f nance/sts-gis/gis/data. html(accessed February 2021) 02.01.01: Conversion of raster DEM to point shapefle in ArcMap In order to import the elevation data into Rhino, the raster data of the DEM must be converted into a point shapefle.This will create geometry (points) that Rhino can read and geospatially locate. The points are sampled from the raster data and maintain their assigned elevation values. To convert the raster data into a point shapefle, follow the process outlined below: _Navigate to and open the ArcToolbox in ArcMap. _Locate and select Conversion Tools. _In the Conversion Tools drop-down select From Raster and then Raster to Point. _A dialogue box will appear. For Input Raster select the DEM layer and set a fle path for the Output Point Features. Figure 2.1.1 Imported DEM dataset into ArcMap _Select OK at the bottom of the dialogue box. Figure 2.1.2 Raster conversion to shapefle operation in ArcMap CHAPTER 02: LANDFORM CREATION PARAMETRIC DESIGN FOR LANDSCAPE ARCHITECTS 17
02.01.02: Output point data to shapefle Figure 2.1.3 Output point grid generated from DEM shown in ArcMap Figure 2.1.4 Attribute table of point grid representing elevation values Figure 2.1.5 Locating and referencing of point shapefle to the script The length of time needed for ArcMap to process this conversion is dependent on the scale of the DEM as well as the capacity of the machine being used. Once the conversion computing has completed, a new shapefle layer should be added to the Table of Contents. Upon turning the preview off for the original DEM layer in the Table of Contents, a grid of points should be visible in model space. At frst glance, the grid may be a solid black form. Zoom in to see individual points that make up the grid. _Navigate to the Table of Contents and select the new point shapefle layer. _Right click on the layer and select Open Attribute Table from the dialogue box. _The Table of values and correspondent categories of the data will open. _Locate the column labeled grid_code. The values contained in this column are the elevation data associated with each point in the created point shapefle. _Look to the bottom right of the Table. Represented here is the total number of points/elevation values.The more values present, the slower the process of moving into Rhino will be. _Select the frst item (item 0) in the Table by clicking the upper left square tile that is even with the row of values. _Upon clicking the tile, the frst row of data values should highlight in blue. _Zoom to the top left of the point grid shapefle. The upper left point will also be highlighted in cyan. The highlighted point is associated with the highlighted data, in this case representing that the point has an elevation value of 163.437 feet. 18 PARAMETRIC DESIGN FOR LANDSCAPE ARCHITECTS CHAPTER 02: LANDFORM CREATION
02.01.03: Linking fle path of point shapefle to Grasshopper After creating and saving the point shapefle of the DEM from ArcMap, the fle can now be imported into Rhino via Grasshopper. _Place the File Path component on the Grasshopper canvas. _Right click on the File Path component and select Set One File Path. _Locate the folder where you saved the output point shapefle and select the associated AutoCAD Shape Source fle type. Click Open. Figure 2.1.6 Importing of point shapefle through use of @it plugin 02.01.04: Importing shapefle data into Grasshopper The shapefle location is now linked to Grasshopper. To import the geometry and data into Grasshopper use the @it plugin. _Connect the File Path output to the Imp@ It component. _Use a Boolean Toggle component to allow the fle path data to be connected to the Imp@ It. Double click to toggle to true. 02.01.05: Matching data values with shapefle geometry The previous steps allowed for the connection to the location of the shapefle as well as the associated geometry and data. Now the shapefle can be visualized and represented in Rhino model space. _Place the DataVis@it component onto the canvas and connect the output “S” (shapes) from the Imp@It component into the “S” (shapes) on the DataVis@it component. _Connect the Boolean Toggle into the T/F Input on the DataVis@it. The DataVis@it component will be orange at this moment. This does not mean that the component is failing, but rather it is missing information needed for the internal process to occur. An input for the DataVis@it’s GetValueofFeature is required.This matches the attributes of the shapefle fle to the geometry. Figure 2.1.8 Isolating and pairing of elevation value feld to the referenced input shape fle geometry Figure 2.1.7 Associated attribute felds of the referenced point grid shapefle previewed from a panel component CHAPTER 02: LANDFORM CREATION PARAMETRIC DESIGN FOR LANDSCAPE ARCHITECTS 19
_The output “F” of the Imp@It component will provide the features of data as listed in the attribute table in ArcMap. By connecting the “F” to a Panel component, the feature classes will be presented. _Referring to Figure 2.1.5 , the elevation data of the points is located in the grid_code column in ArcMap. _Use a List Item component to isolate the grid_code value list by connecting to the Imp@It “F” output. Set the list item number to the list number associated with the grid_code, as shown in the panel. Connect the List Item output to the GetValueofFeature input on the DataVis@it component. 02.01.06: Vertical translation of point geometry based on elevation values/attributes After connecting the output from the List Item to the GetValueofFeature input on DataVis@it, the component should now be grey and functioning. _To keep the script neat and to visualize what is being output by the DataVis@it, connect a Geometry or Point component to the “Pt” (point output). Figure 2.1.9 Isolating operation for output grid_code value feld Figure 2.1.10 Moving points based on imported elevation values Figure 2.1.11 Preview of translated point grid in model space _Switch back to Rhino model space and click Zoomextent on the Toolbar, or type in Zoom in the control panel and select Extent. This command is necessary because the geometry is not located at the origin in model space. The geometry and data maintain the same spatial coordinate system as in ArcMap and should also maintain these same coordinates in Rhino. _The point grid as created and seen in ArcMap should now be visible in the viewport. Zoom in further to see individual grid points, as was done in ArcMap. The points maintain their 2-dimensional locations at this moment in the process, as that is what was created in ArcMap.The points need to be moved vertically based on their assigned elevation values to create the 3-dimensional positioning as required to create the output mesh. _Place a Move component on the canvas and connect the output points from the DataVis@ it component to the “G” (geometry) input on the Move. 20 PARAMETRIC DESIGN FOR LANDSCAPE ARCHITECTS CHAPTER 02: LANDFORM CREATION
_The points need to move vertically and perpendicular to the ground plane. Use a Unit Z component to carry out this translation. _Connect the output “Val” (Attribute Values) from the DataVis@it to the “F” (factor) input on Unit Z, with the Unit Z output connecting to the “T” (Motion) Move input. Using Unit Z as a directional vector moves the geometry vertically from a starting point to a set, prescribed height. In this workfow, the height values that each point will move to are the associated elevation values for each point. The list of points is the same length as the list of values gained from the grid_code feature class in ArcMap. It is important to note that the points and elevation values are automatically imported, ensuring a proper match. 02.01.07: Constructing a triangulated mesh from the translated points Upon panning in and moving within the Rhino view-port, the points should now be represented in their 3-dimensional locations. From this stage of the process, the moved points can now be used to produce a topographic mesh geometry. _To triangulate the points into a mesh, use a Figure 2.1.12 Creation of triangulated mesh from translated point grid Delaunay Mesh component. _Before connecting the output “G” (the moved points) of the Move, the “P” (points) input on the Delaunay Mesh must be fattened. Flattening places the point data into a single list rather than producing a data list for every input point. In this case, there would be 964,854 lists that would result in 964,854 output meshes rather than a singular mesh object. _Right click on the “P” input on Delaunay Mesh and select “Flatten”. _Connect the output “G” from Move to the fattened “P” input on Delaunay Mesh. _The script is complete. BAKE out the output mesh from the Delaunay Mesh. The resulting topographic mesh can now be contoured and used as a base for design intervention and analysis.The clarity and accuracy of the output mesh is dependent upon the resolution of the original DEM that was used to produce the point data. Figure 2.1.13 Output mesh terrain model with contour curves represented in model space CHAPTER 02: LANDFORM CREATION PARAMETRIC DESIGN FOR LANDSCAPE ARCHITECTS 21
02.02_ BASE TOPOGRAPHIC MODEL FROM CONTOUR DATATO SURFACE Process overview Similar to the last workfow, the following process will leverage topographic GIS data to provide the framework for constructing an accurate landform model that can be used as a base for analysis and design iteration. Rather than using a DEM, a shapefle consisting of contour lines will be used. Contour datasets are available through the same GIS data resources as mentioned for the previous process.Typically, the interval for contour data sets range from 1ft to 100ft, and are available in meter intervals ranging from 1 to 20+. Much like when interpreting a site, the smaller the interval the more detail will be present, which will result in a high resolution, digital 3-dimensional model.The most benefcial aspect of this workfow, aside from the quick production of a site model, is the ability to view and manipulate the contour data without importing and opening the data set in ArcMap.This is particularly useful in situations where a 3-dimensional topographic model is needed for the design process and there is not the ability to access ArcMap, and a survey has not been acquired for the project. Using the previously presented operation(s) of importing ArcMap shapefles into Rhino via Grasshopper, this gives the ability to open and model with raw shapefle data without any further manipulations made in other computational programs. A typical process for working with contour data from ArcMap in Rhino requires the exporting and converting of the shapefle to CAD format in ArcMap. In association with this needed conversion, generally a new column needs to be added to the shapefle’s attribute table—for CAD to read the fle while maintaining the associated elevation to the geometry, a new column must be created and titled “Elevation”.The column holding the elevation data for the fle is typically not named this, thus requiring the creation of the new feld labeled appropriately and the copying of the data from the existing elevation feld.When importing the shapefle into Rhino via the Grasshopper @it plugin you are able to choose the attribute data to pair with the imported geometry as presented in the previous workfow. From importing the contour shapefle, the elevation data will be paired with the associated polylines and used to move the 2-dimensional geometry to their appropriate locations.The moved polylines are then divided into points and a surface can be created from the points and their elevation metrics. 02.02.00: (Optional) opening of shapefle into ArcMap to assess attribute table Once the contour shapefle has been obtained, the data set can be opened in ArcMap to view the geometry extent as well as the aligned attribute table. This optional step gives a better insight into the feld title associated with the elevation data as well as the other data lists. Depending on the extent and contour interval of the data set, Clipping the data in ArcMap may facilitate the computation process of importing the geometry and values into Rhino and Grasshopper through shortening the processing time. For the workfow, a contour shapefle with an elevation interval of 1ft will be used. The site is of Cornelia Fort Airpark, a defunct private airport located in Nashville,TN, USA.The extent of the site data is roughly 6,000ft by 6,000ft, or 820 acres. Data source: www.tn.gov/f nance/sts-gis/gis/data. Figure 2.2.1 Attribute table/associated elevation values and preview of contour shapefle in ArcMap html (accessed June 2018) 22 PARAMETRIC DESIGN FOR LANDSCAPE ARCHITECTS CHAPTER 02: LANDFORM CREATION
02.02.01: Importing the shapefle and data attributes into Rhino/Grasshopper Importing the geometry and elevation data into Rhino follows the same process outlined in the previous workfow example, steps 02.01.03– 02.01.05.The difference lies in choosing the correct data feature from the “F” out of the Imp@ It component, as well as in the geometry output from the DataVis@it. In the case of this example, the feature class output for the elevation data is titled “contour”.The feld name will differ based on the specifc shapefle being used. Such names for the feld can be ELEV, number, FT, etc. If it is unclear which of the feld titles holds the elevation data, a panel can be connected to the DataVis@ it “Val” output and the number slider on the List Item component can be used to scroll through the imported felds—the panel will display the associated data per feld. Rather than points being output from the DataVis@it component as in the last example, Polylines will be produced from the “PLine” output on DataVis@it. 02.02.02: Moving the contours based on their elevation attributes and dividing polylines into points Figure 2.2.2 Importing of contour shapefle and aligned elevation values operations Having output the imported polyline contours into a Geometry component or Curve component through the DataVis@it, the geometry can now be moved in the z-axis based on the elevation values from the “Val” output on the DataVis@it. For this operation see 02.01.06. Figure 2.2.3 Curve translation and point division operations Once the polylines have been moved to their elevations, the polylines can be divided into points so a surface can be produced to make the 3-dimensional topographic model. _To divide the moved polylines into points, place a Divide Curve component on the canvas and connect the output geometry,“ G”, from the Move component into the “C” (curve) input on the Divide Curve component. _Now the number of divisions/points to be distributed along each curve/polyline must be set. Connect a Number Slider into the “N” input on the Divide Curve component.The component’s default number for dividing input curves is set to 10. Adjust the Number Slider to be 100+ for the point count/division. The larger the division and number of points produced, the higher the resolution will be on the output surface. Figure 2.2.4 Translated point geometries from curve division in z-axis, represented in model space CHAPTER 02: LANDFORM CREATION PARAMETRIC DESIGN FOR LANDSCAPE ARCHITECTS 23
02.02.03: Creating a surface geometry from the points Figure 2.2.5 Terrain surface creation from generated contour curve points Figure 2.2.6 Resultant patch surface geometry extending beyond extents of input contour curves in model space Now that the contours have been divided into points, these points and their elevation data (z value) can be used to create a surface, much like a mesh was created from the points derived from the DEM in the previous process. _Place a Patch component on the canvas and right click on the “P” input to “Flatten” the points into one data list (as discussed previously). _After f attening the “P” input on the Patch component, connect the output “P” (points) from the Divide Curve component to the fattened “P” input. _After completing the previous step and navigating to Rhino model space, a preview of the output surface will be represented. _Upon observation, the resolution of the surface may not match the detail of the base contour lines.This is related to the “S” input on the Patch component. The “S” input is the number of “spans” in which the created surface is composed of.The default setting for the “S” input is 10.This number is representative of the U and V divisions of the surface, as typically addressed when rebuilding a surface in a more basic Rhino workfow.The larger the integer value of the spans, the more resolution the output surface will have. Use a Number Slider to set an integer (50– 100) to increase the number of spans or divisions. _After adjusting the number of spans to meet the desired resolution for the surface, preview the Moved contours and the output surface.The Patch surface extends beyond the boundary as set by the original contour lines and will need to be trimmed. 02.02.04: Creating a bounding box around the moved points to produce a cutting object to split the surface Figure 2.2.7 Creation of bounding box geometry around XYZ extents of imported contour curves When using the Patch component to create a surface from a point collection/cloud, the output surface typically extends beyond the original input boundary associated with the points/divided curves. The Patch component has a “ T” input, which is set as a default to “true” as a means to “attempt to trim the result”. Despite being set to “true”, a trimmed 24 PARAMETRIC DESIGN FOR LANDSCAPE ARCHITECTS CHAPTER 02: LANDFORM CREATION
output is not always yielded.The following set of operations will allow for an automated trimmed result regardless of the potential failure in trimming the resultant surface by the Patch component. This automation will bypass any further trim/split operations needing to be performed through Rhino commands after having Baked out the Patch result from Grasshopper. _To start the process of trimming the resultant surface from the Patch component, place a Bounding Box component on the canvas. _Before connecting an input to the Bounding Box, right click on the “C” (content) input on the Bounding Box component and “ Flatten”. After doing so, right click the center of the component and select Union Box, so only one boundary box is placed around the input geometry rather than one box per geometry. In this example we will be placing a bounding box around the point collection from the divided contour curves.This will allow the bounding box to be placed around a geometry that has the z value/elevation value extents associated with the output surface while maintaining the boundary extent of the original contours. 02.01.05: Scaling the bounding box to ensure intersection with the extent of the surface z values Figure 2.2.8 Scaling of bounding box in z-axis to intersect extent of surface elevation values After having created a single bounding box that encompasses the entirety of the point collection, which is the extent of the XYZ boundary that trims the output Patch surface, the bounding box will need to be scaled in the z-axis to ensure that the output Bounding Box geometry cuts through the profle of the Patch surface.This step is necessary as the surface output from the Patch may go slightly beyond the Z extent of the points in which it was created based on the interpolation needed to “drape” the surface over the points. _Place a Volume component on the canvas and connect the output box geometry (either “B” output will work in this case) from the Bounding Box component in the “G” input of the Volume component. This operation will allow Figure 2.2.9 Output scaled bounding box as previewed in model space CHAPTER 02: LANDFORM CREATION PARAMETRIC DESIGN FOR LANDSCAPE ARCHITECTS 25
for isolating the center point of the bounding box, which can be used as the scaling base point. _To scale the bounding box geometry, use the Scale Non-uniform component to scale the geometry in the z-axis. Input the top output “B” from the Bounding box component into the “G” input on the Scale Non-uniform component. Next, connect the output “C” (centroid) from the Volume component into the “P” (base plane) on the Scale Non-uniform component. The centroid acts as the base point from which the scaling in the z-axis will occur. _Connect a Number Slider to the“Z” (scale z) input on the Scale Non-uniform component to set a factor to scale by. In this scenario a factor of 10 is selected to fully ensure the bounding box will intersect. 02.02.06: Splitting the surface with the scaled bounding box Now that we have a geometry that intersects and cuts through the xyz value extent of the surface created from Patch, the output surface can be split to acquire the intended region of the surface for the base model. Figure 2.2.10 Splitting patch surface with created bounding box and selection of surface geometry representing extents of the input contours _Use the Split Brep component to split/trim the surface to the boundary of the box geometry. Connect the output “P” patch surface from the Patch component to the “B” (brep to split) input on the Split Brep component. _Next input the output “G” (scaled geometry) from the Scale Non-Uniform component into the “C” (cutting shape) of the Split Brep component to split the surface with the scaled bounding box geometry. The patch surface has now been split into two pieces—one that lies within the boundary of the box geometry cutting shape and the other that lies outside. To conclude the process, the data item that matches the split geometry that lies within the bounding box geometry must be isolated and output for the fnal surface. _Similar to the process used in choosing the correct attribute data to import to pair with the imported shapefle contents, use a List Item component and Number Slider to choose the split geometry that lies within the cutting shape. Connect the output “R” (result) from the Split Figure 2.2.11 Previewed split surfaces in model space Brep component to the “L” (list) input on the 26 PARAMETRIC DESIGN FOR LANDSCAPE ARCHITECTS CHAPTER 02: LANDFORM CREATION
Figure 2.2.12 Final result of produced terrain surface in model space List Item.Then attach the Number Slider to the “i” input on the List Item to scroll through and fnd the correct list item geometry to output. When scrolling through the List Item component via the Number Slider, with the output of the Patch surface previewed in Grasshopper/ Rhino, the needed split object will be evident through clicking on the List Item component out. The reference geometry based on the list value will be represented in green. 02.03_ USING POINT AND LINE ATTRACTORS TO ITERATE LANDFORM SCENARIOS Process overview The following workfow will be a departure from the previous two in terms of connecting another computational program and data set with the intention of creating a base site model. For this workfow, the process will revolve around native Rhino geometry and Grasshopper components to create an algorithm that will allow for the creation and iteration of landform-based design scenarios.The script will be working with the input of a base surface, point, and line geometry from Rhino to create 3-dimensional forms.The creation of the forms will be based on the location of the point and lines relative to the input base surface.The location of the point and lines (attractors) as they lie within the boundary of the base surface will provide the ability to leverage the geometry location relative to the point locations that construct the input base surface.The distance values between the points/lines and the points that embody the base surface will be used to translate the surface points in the z-axis to create gradual depressions, valleys, mounds, and ridges from the base surface.This process allows for the quick modeling of basic landform typologies from simple geometry inputs, in which the manipulation of the landform movements can be controlled by input elevation values.The workfow facilitates the early expressions and analysis of design schemes and proposals, allowing more room for further detail. CHAPTER 02: LANDFORM CREATION PARAMETRIC DESIGN FOR LANDSCAPE ARCHITECTS 27
02.03.00: Creating a base geometry to manipulate To begin the process, create a planar surface in Rhino. For the example, a Plane that is 100ft by 100ft will be created to be referenced into Grasshopper. The input surface does not have to be an equidistant, regularly bounded surface. It can be irregular and be made from a Planar Surface created from a closed curve.The input can also be the trimmed zone of a base model. In the latter case, be sure to run the command ShrinkTrimmedSrf in Rhino to prevent Grasshopper reading the original boundary of the full surface, but rather read just the trimmed portion. 02.03.01: Referencing input surface and point for attraction into Grasshopper After having modeled or imported the base surface to manipulate and create a landform, the surface must be referenced into Grasshopper. _Place a Surface component on the canvas. _Right click with the cursor over the component and select “Set one Surface”. _Navigate back to the Rhino viewport and select the surface to be referenced. The geometry is now referenced into the Surface component in Grasshopper. Draw a point geometry in Rhino to be used as Figure 2.3.2 Referenced geometries from model space to surface and point components an attractor for basis of the attraction operation to be created in the following steps. _Place a point geometry within the boundary extent of the referenced surface. _Use a Point component in Grasshopper to reference in the point (follow the same process as above to “Set one Point”). Figure 2.3.1 Input base surface geometry shown in model space Figure 2.3.3 Referenced surface and point geometries in model space 28 PARAMETRIC DESIGN FOR LANDSCAPE ARCHITECTS CHAPTER 02: LANDFORM CREATION
02.03.02: Dividing the input surface into a point grid To manipulate the base input surface, the geometry needs to be deconstructed to its principle geometric makeup, which consists of a collection of points. _Use the Divide Surface component to deconstruct/divide the surface into a grid of point geometries. Connect the output of the Surface component into the “S” (surface) input on the Divide Surface component. _To control the number of divisions and produced points, use a Number Slider component. Input the Number Slider into the “U&V” inputs on the Divide Surface component.This controls the number of points in the U and V direction, which are similar to the X and Y coordinates of the surface. U and V values remain constant to the surface extent upon moving the geometry in Rhino model space, unlike X and Y values. Figure 2.3.4 Division of surface geometry into grid of points Figure 2.3.5 Output point grid in model space CHAPTER 02: LANDFORM CREATION PARAMETRIC DESIGN FOR LANDSCAPE ARCHITECTS 29
02.03.03: Finding distance values between surface grid points and input point for attraction After having divided the surface into points, the basis of the attractor operation can begin to be constructed. _To create the attractor conceit, the distance values between the input point (the attractor) and the point grid of the surface must be calculated. To do this, use the Closest Point component. Input the output “P” (points) of the Divide Surface component to the “P” input on the Closest Point component. Next, connect the output from the Point component into the “C” (cloud of points to search from) input on the Closest Point. The output “D” (distance) on the Closest Point is the distance values between the attractor and grid points. Figure 2.3.6 Calculation of distance values between referenced point and point divisions of the surface 02.03.04: Remapping distance values to a new domain to be used to control and manipulate elevation The distance values being output from the Closest Point will be used as a numeric range to manipulate elevation values for moving the point grid based on their coordinate proximity to the input attractor point.The output distance values have a certain distribution, with a lower and upper numeric extent or a domain.This domain and the associated values can be manipulated to ft a new lower and upper limit while maintaining the original distribution pattern of the numbers. _To observe and output the domain, place a Bounds component on the canvas and input the output “D” from the Closest Point. Right click on the “N” (numbers) input of the Bounds and “Flatten” the input data into one data list. Connect a Panel component into the out “I” (domain) of Bounds.The lower and upper limit of the domain will be expressed. _To change the lower and upper limit of the domain, use the Remap Numbers component. Input distance values from the Closest Point into the “V” (values) input, and input the “I” output from the Bounds to the “ S” (source domain). _To set and control the new domain and its extents, use a Construct Domain component and connect Number Sliders to the inputs. Also connect the output domain into the “T” Figure 2.3.7 Output domain of distance values, and remapping of values to ft specifed domain input on Remap Numbers. 30 PARAMETRIC DESIGN FOR LANDSCAPE ARCHITECTS CHAPTER 02: LANDFORM CREATION
02.03.05: Moving surface grid points in the z-axis based on remapped distance values This is not a required step, but to see the new output domain from the Remap Number component, follow a similar workfow as presented previously. Connect a Bounds component with the input numbers “Flattened” to the output “R” of the Remap Numbers component.Then connect a Panel to the out “I”. For this example, the remapped domain of the distance values is now from 0.0 to 10.0 rather that from 0.15 to 70.85.This will allow for the point grid to be moved from 0.0 to 10.0 based on the individual locations relative to the point attractor.The grid points closest to the attractor point will have values starting at the lower limit of the domain, and those further away will have values aligning to the higher limit of the domain.The remapped values will be used to move the grid points in the z-axis based on their proximity to the attractor point. _Similar to the process in which the points were moved in the previous two examples, a Move component will be used in choreography with a Unit Z component. Connect the output points from the Divide Surface component to the input “G” on the Move. _Next, bring a Unit Z component onto the canvas and plug the output “R” domain/values from the Remap Numbers into the“F” input on the Unit Z.The output from the Unit Z connect to the input “T” on the Move.This operation will move the original 2-dimensional grid points vertically in the z-axis, with a gradient of values/heights radiating out from the attractor point location. Navigate to a perspective view in Rhino and observe the representation of the moved points. The surface grid points closest to the attractor point location have a z value of 0.0, and those farther away have a z value of 10.0, based on the values of the lower and upper limit. 02.03.06: Creating a surface from the moved points Figure 2.3.8 Vertical translation of surface points based on remapped distance values Figure 2.3.9 Previewed moved points in model space Figure 2.3.10 Surface generation from moved points CHAPTER 02: LANDFORM CREATION PARAMETRIC DESIGN FOR LANDSCAPE ARCHITECTS 31
After moving the surface grid points in the z-axis based on the remapped distance values, a surface can be created from the points. _To create a surface from the moved points, use a Surface from Points component.This component creates a surface from a grid of points with a defned U count. Recalling back to 02.03.03 of this example, the input surface was divided into points based on a controlled U and V number.The integer set for this division will be used to convey the number of points in the grid for the Surface from Points to interpret. _Right click on the “P” (point) input on the Surface from Points and “Flatten” the input data into one list. Connect the output points from the Move in the Surface from Points input. _Right click the“U” Surface from Points input and select expression and type x+1. This is to ensure the correct number of points, as there is one more point than the number of surface segments created. 02.03.07: Contouring the output surface in the z-axis Figure 2.3.11 Contouring operation in the z-axis of the produced surface Figure 2.3.12 Created contoured surface in model space The output surface should now be previewed in Rhino.The constructed surface can be contoured in the z-axis to be representative of typical graphic standards in viewing topographic data. This will also allow for the constant updating of contour lines as the attractor point is moved throughout model space, or if more points are referenced in. _Connect the output surface from Surface from Points to the“S” (shape) Contour (brep or mesh) component input. _To control the axis in which the surface will be contoured, connect a Unit Z component into the “N” (direction) input on the Contour component.This will allow for the contouring of the surface to be based on vertical elevation. 32 PARAMETRIC DESIGN FOR LANDSCAPE ARCHITECTS CHAPTER 02: LANDFORM CREATION
_Setting the contour interval requires the use of a Number Slider connected to the “D” (distance between contours) on the Contour component.The contour curves can be output and BAKED into Rhino. 02.03.08: Substituting curves to be used as the attractor geometry The following steps will provide further detail to the attractor script through implementing the use of a curve as an attractor rather than a point. The logic behind, and the operations of, the script remain the same, but in order to use a curve as an attractor a few components must be added at the beginning of the script. _In Rhino, draw a curve that falls within the extent of the surface. Reference in the curve to Grasshopper using a Curve Component and “Set one Curve”. _The curve geometry can then be divided into points, making the script still utilize points as the attractor. In this case the points being used follow the form and location of the line. Use Divide Curve to divide the input curve into points. Connect the output curve from the Curve component into the“C” (curve) input (fatten for the inputting of multiple curves) on the Divide Curve. Next, plug in a Number Slider into the “N” (number of divisions) input on the Divide Curve.This will allow for controlling the number of points into which the curve is divided. The more points into which the curve is divided, the more linear or ridge/valley-like the output surface will be.When fewer points are used, the output will be similar to that of simply using point geometries as attractors where a radial mound or depression is associated with the location of the point. Figure 2.3.13 Added component cluster for use of input curve as attractor Figure 2.3.14 Output surface landform from curve attractor 02.03.09: Using the surface edge to anchor the manipulated surface edges When viewing the output attractor surface in Rhino, it may be noted that the edges of the surface do not connect back to the original elevations of the input surface, as they follow the values given to them by the created domain.This output may not be what is required in certain scenarios where the proposed earth movements need to meet back to the surrounding grade of the input surface.To allow for this, the boundary edge curve of the surface must be used as an attractor to pull the moved points back down or up to the desired elevation. CHAPTER 02: LANDFORM CREATION PARAMETRIC DESIGN FOR LANDSCAPE ARCHITECTS 33
Figure 2.3.15 Added point geometries and duplicated input surface boundary for attraction _In Rhino, use the command DupBorder. This command extracts the boundary edge of a surface, brep, or mesh. _Reference the boundary curve into Grasshopper using a Curve component, then divide into points following the previous step. _Both point and line attractors can be used simultaneously to create complexity in exploring landform scenarios or to anchor the surface to the original elevation, as in this example. Hold shift and connect the output points from the Point component and the output points from the Divide Curve component into the fattened “C” input on the Closest Point. This will allow for the boundary curve to anchor the surface to the original surface elevation and the points to create a topographic expression within the boundary. Figure 2.3.16 Generated resultant landform model from curve attractor 02.04_ TRANSLATING MESH VERTICES BASED ON POINT, CURVE,AND SURFACE ATTRACTORS Process overview Building on the previous process of using an attractor algorithm based on the distance values relative to the location of point (attractor) geometry to a point collection of a deconstructed planar surface, the following script will expand the control and attractor geometry used to create and iterate topographic expressions. The script will work with point(s), curves, and surfaces as the attractor geometry while culling and translating a specifc region of points based on a radius to the input geometry.Through controlling the radius and extent of the surface to be manipulated, this approach provides more control with regards to spatializing portions of a site, rather than the whole as presented previously. In choreography with the slope/spread adjustments of the landscape, the ability to control and toggle between a depressed (debossed) or elevated (embossed) landform will be achieved.The extent to which the attraction affects the surface in both XY and Z coordinates will be addressed.Through controlling both the spread and elevation attraction, a higher specifcity can be used in evaluating the resultant landform as such traditional assessment of slope ratios like 1:1, 1:2, 3:1, etc., as both the elevation and spread of the landform to make that elevation have the ability to be adjusted.This workfow is benefcial for the rapid prototyping of landforms, while providing accuracy in the output expression as it can be matched to design concepts and traditional standards. 34 PARAMETRIC DESIGN FOR LANDSCAPE ARCHITECTS CHAPTER 02: LANDFORM CREATION
02.04.00: Rhino and Grasshopper base setup As with the previous workfow example, draw a planar surface in Rhino.The surface can be regular or irregular in its boundary identity.This example is presenting the manipulation of a 100ft by 100ft plane. Once the plane is modeled, place a point geometry within the boundary of the surface.These geometries are to be referenced into Grasshopper. _Reference in the surface using a Surface component, and “Set one Surface”. _Use a Point component to reference in point geometry,“Set one Point”. _Create three Number Sliders and right click on the dark gray tab to rename each. One being “Landform Height/Depth”, the next being “Landform Spread/Slope”, and the last being “‘0’ = Debossed ‘1’ = Embossed”. Give the frst two number sliders a higher max value than the third, such as 100. Figure 2.4.1 Input planar surface and point geometries as base for workfow in model space Figure 2.4.2 Referenced geometry and parameter set-up for script CHAPTER 02: LANDFORM CREATION PARAMETRIC DESIGN FOR LANDSCAPE ARCHITECTS 35
02.04.01: Converting input base surface to mesh Figure 2.4.3 Conversion of input surface to mesh 02.04.02: Deconstruction of created mesh into vertices/point grid Figure 2.4.4 Deconstruction of generated mesh geometry to provide points/vertices Much like in the last example, the input surface must be deconstructed to output a point grid. This process will be working with the fnal output of a mesh versus a surface. Meshes allow for more geometric manipulation in Grasshopper. Such manipulations will be presented in the following chapters. _To convert the input surface to a mesh, use the Mesh Surface Component. Connect the output surface into the “S” (surface) input on Mesh Surface Component. _Similar to the Divide Surface component, the Mesh Surface component allows for the U and V divisions of the surface/mesh to be controlled and adjusted. Use a Number Slider to connect to both the U and V input on the Mesh Surface component. Set the integer to be 100+. After converting the surface into a mesh, the output mesh must be deconstructed into a point grid and the face geometries that constitute the mesh. _Place the Deconstruct Mesh component on the canvas and input the output mesh from the Surface Mesh component. Upon viewing the result in the Rhino viewport, the original input surface geometry will be covered with a dense grid of points. 36 PARAMETRIC DESIGN FOR LANDSCAPE ARCHITECTS CHAPTER 02: LANDFORM CREATION
02.04.03: Obtaining distance values between attractor point and mesh vertices To manipulate the planar surface into a 3-dimensional geometry, an attractor-based conceit similar to the previous will be performed. The distance values between the output mesh vertices from the Deconstruct Mesh and the reference point geometry from Rhino need to be calculated for the attractor algorithm. _Use the Closest Point component to f nd the distance values. Input the output mesh vertices “V” from Deconstruct Mesh into the“P” input on the Closest Point component. _“Flatten” the “P” input on Closest Point. _Flatten the Point component that is referencing in the point drawn in Rhino. _Connect the output point of the Point component into the “C” input on the Closest Point. 02.04.04: Creating radius for the points to be manipulated by the attraction Building on the attractor operation from the previous example, more control in determining the output landform scenario is going to be added as a means of controlling the elevation, radius around the point to be affected, and the slope. _To have the attractor affect only points in the point grid within a certain radius of the point attractor location, use the Subtraction component to subtract the output distance values from the Closet Point component from the radius value (integer held in the “Landform spread/ slope” Number Slider). _Next, use the Maximum component to return the greater of the two items. Set the “B” input to 0.0 with a Panel.This makes any resultant negative numbers output from the Subtraction null. A domain is created where the lower limit is 0.0, and the higher limit is that of the integer from the “Landform spread/slope” Number Slider. _Connect the output result“R” from Maximum to a Mass Addition component to add all list values of the domain. Figure 2.4.6 Manipulation of generated distance values to create radius of distance tolerance and radius to affect Figure 2.4.5 Calculation of distance values between referenced point and mesh vertices using closed point CHAPTER 02: LANDFORM CREATION PARAMETRIC DESIGN FOR LANDSCAPE ARCHITECTS 37