Site Modeling in Context
Rhino Terrain Workflow
This is the beginning of a tutorial covering the basics of exchanging terrain data form ArcMap to Rhinoceros and developing a site model using the RhinoTerrain Plugin. This page discusses a workflow that begins with obtaining terrain and groundplan information from public sources, assimilating it using Geographic Information Systems and developing finely articulated design alternatives using RhinoTerrain. This is part of a larger set of workflows for Site Modeling in Context.
References and Resources
- The Demo Dataset For best results, extract the contents of this zip archive to c:\temp See Image
- Obtaining Terrain Models and Orthophotographs
- Georeferencing Scanned Maps
- Exporting GIS Data to CAD
- RhinoTerrain Documentation (must be saved and opened with Microsoft Internet Explorer.
- CNC Modeling Workflow
Compile and Explore the Data in ArcMap
There ae a couple of demo datasets to choose from in the list of resources, above. Or if you like, you can follow the instructions on Obtaining Elevation Data and Aerial Photography. We bring these together in a geographic information system that will reconcile the various coordinate systems used by these layers, and will allow us to explore large datasets to better understnd the context of our project.
- Extract the contents of the demo dataset zip archive to your c:\temp folder.
- Open the file docs/topo_modeling_demo.mxd in arcmap.
- If you feel like it, explore the different layers by turning them opn and off and poking at them with the information tool. The datset includes examples of many different sources of terrain imagery.
- Inspect the source properties of each of the layers. Note that many of them use different coordinate referencing systems
- Inspect the Coordinate System properties of the data frame (the ting that says Layers.
- Open the toolbox panel and take a look at the models in the GSD Terrain Tools toolbox.
- These tools seem to run better if you run them by right-clicking and choosing Edit then choosing File > Run Entire Model
- Make contours from one of the terrain models.
- Explore the drainage using the flow direction tool.
Create a Georegistration Frames and Groundplan Images
You will need three rectangles. One each for your context frame, design frame and surround frame. YOu will also want to have aerial photographs or other groundplan images that fit perfectly within the Context and Surround Frames. The process for creating these is discussed in the page, Creating Geo-Registration Frame and Groundplan Image
Visualize Site Data in ArcGlobe
ArcGlobe is a program for visualizing 3d GIS data. It is very easy to create and fly around in veruy large models that use raster terrain and extruded buildings. ArcGlobe will also render truly 3d buildings.
- Open the document, docs/arcglobe.3dd in the demo dataset folder.
- Take a look at the layer properties that determine how the 2d GIS data is projected into 2.5 dimensions.
- Visit the 3 bookmarks that place you in the sky and on each of the bridges that approach the site from the other side of the river.
Create a Groundplan Manuscript
Here is where you actually design the landscape! In this workflow it does not matter what tool you use for this, of course, you want one that allows you a fluent connection between your mind and the media that you are using. What matters most is that whatever tool you use, that you create an image of your design that is clipped precisely to the design frame polygon. A good way to begin is to simply use ArcMap to export an image or a pdf of your aerial photo with the design frame on it. Then you can print this out and use it as a base photo upon which uyou can lay tracing paper and develop a design using colored pencils. Then scan the design, and crop it in photoshop and put the result in your Manuscript/Groundplan_Images folder.
Export the Terrain Raster to an Ascii File
The best way to get a GIS - based elevation model to Rhino Terrain is by exporting it to an AsciiGRID. This is accomplished with the Raster to Ascii tool in the toolbox, as described in the Digital Elevation Models tutorial.
Import and Arrange your Source Data in Rhinoceros
GIS is a great tool for bringing together diverse and large datasets, but at this stage in its evolution it is not as great a tool for 3d editing as Rhinoceros. The RhinoTerrain plugin bridges the gap between rhino and GIS. So our workflow now involves an exchange with Rhino.
Import your Frames and the Ascii Grid
If you are opening a new Rhino File, choose the template for Large Models in Meters. But for now, just use the Condor_St_wilds_master.3dm file provided in the folder manuscripts\cad.
Use rhinoterrain's Import. > ArcMap Shape File to import your frames. Easy. Importing the asciiGrid is accompished with the RhinoTerrain > Import > ArcInfo AsciiGrid tool. Before importing this ascii Grid it is a good idea to create a new layer called asciiGrid and make it the active layer in Rhino. Otherwise it will go on your default layer, and you will have to move it later. If Rhino does not recognize the ascii file that you made with arcmap, try changing the file-type pull down to recognize "all filetypes" -- not just hose with a .asc suffix.
Shift YOur Model to the Origin
Rhino 4 and many other tools, incluing 3d Studio are not designed to deal with geographical coordinate systems. The designers of these tools did not anticipate the need for such extensive coordinate systems and have created numeric placeholders that aere limited to 34 bits which lacks the number of significant digits. This can cause a severe lack of precision when data are very far from the origin. So we will select all of our data and shift it such that the south-west corner of our design frame is at the origin. Shifting the data this way gives us a precise repeatable way to shift any subsequent data we get form GIS, provided we always export the design frame with each exchange. Since some of our design documents reference elevation in feet, we will now use the Units command in rhino to scale the model to feet.
Create the Context Mesh
Our first mesh is made using the pointcloud that resulted form our import of the asciigrid. Select this pointcloud object and choose Rhinoterrain > Create a Terrain. This command is fairly straightforward. You have to make sure to choose the Complete option to finish it off. Notice that RhinoTerrain creates two new layers. Delaunay Mesh and Delaunay Base. For fun,switch your perspective window to Render Mode. Since RhinoTerrain will clobber the contents of these layers each time you create a terrain, it is a good idea to rename these layers somethign useful -- for example, Context Mesh and Context Base.
Drape the Context Orthophoto
Use the RhinoTerrain > Drape Orthophoto command. When prompted for a bounding rectangle, select youer context frame. Then select your terrain mesh as prompted. Neat!
Begin Articulating your Surround Model
Now that we have set up our context model and our various reference frames n rhino, we are ready to cut out the area of the model that we are going to articulate for our surround and design models.
Create a 3d Surround Frame
The 3d design frame provides a match-line that defines where the surround model leaves off and the context model starts. This line will become an important part of the surround model. We will make this new feature using the rhino Project function. We want to preserve our flat surround frame, so turn Delete Input off. Lets start a new group layer for our surrond model and with in this make a layer for the 3d surround frame, and move your new object to this.
Create a Reference Image
We use the PictureFrame command to import a reference image that we can use in plan as a guide for improving our surround model. The good ting about the picture-frame tool as opposed to BackgroundBitmap is that you can have several pictureframes in your model and you can use layers to keep them organized. You will need to move your pictureframes down below the lowest elevation in your model. It is also important that you only use these reference images in TOP view, since perpective view will give you parallax errors as you ae looking through your wireframe at a spot in your image that is not directly underneath.
Clip Out the Source Surround Mesh
Our source terrain model is rough. It is good enough for context, but for the area surrounding our design we need to fix it up a little. We will use the rough mesh as a start, so we will create a surround mesh using the MeshSplit function applied to the context mesh -- using our surround frame as the splitting object. This works best if you are in top view. We will move the new surround mesh to a new layer in our surround model group layer.
Create Contours for the Surround Model
We need our surround model to provide a context that is logically consistent with our design model and with the context model. In the case of our condor street project, you will notice that that our design frame has soem streets and sidewalks that connect with the outside world. There is also a baseball field accross the street with an earthen grandstand that we want to look right. We also want to model the river channel ion the surrounding area so that we can roughly represent this in our models. So in order to make all of this work we need some handles with which we can gerap the terrain surface and move it around. We don't want top have to adjust every point in the asciigrid pointcloud. What we will do is convert the pointcloud to contours.
Contours are a nice familiar way of visualizing terrain, yet they aren't the most concise way of controlling it, as shown in the Terrain Modeling in Context Page. If you choose a contour interval that is fine enough to express the fine details in a landscape, you wil also get a great deal of geometry that does not actually express anything important. This is fine if we are just visualizing, but if you are looking for handles, too many contours can put you in a similar situation of having to manipulate every point in a pointcloud. Pruning a set of contours to define the critical places in the landscape where the terrain shifts is a large part of the art in developing malleable, expressive terrain models!!
In the case of our demonstration site, some of the critical elevations we have to consider are related to the high and low tides. To get a notion of what these are, we will consult the NOAA navigation Chart. We also want to know more precisely what the elevations are for the top of the seawall and the sidewalks and streets that cross into our design frame. For the latter, we will consult our LIDAR data. After playing around with the RhinoTerrain > Create Contours From Terrain tool, I have decided to make contours at an interval of 3 feet with an index contour every 9.. This interval seems to capture the essential elevations in the surround without too much extra.
Convert Contour Polyines to 2nd Degree Curves
The contours that RhinoTerrain creates are polylines. These are awkward because to manipulate these we would have to attend to each vertex. Luckily we can use the Rhino FitCrv command to convert these to easily manipulated NURBS curves. I choose to use 2nd degree curves because these have one control point for each arc which should allow us to express the sorts of curves that we need. We can adjust the amount that the contours are simplifies by adjusting the Fit Tolerance. Afte fiddling with this I have chosen a fit tolerance of 2 feet. Use PointsOn to take a look at your new control points. We put the new contour curves onto a new layer which will become our Manuscript Layer for contours. The tem Manuscript indicates that this is a layer that we will modify.
Select your contour curves and use RhinoTerrain > Annotate Contour Curves to add labels to your contours. The size of the annotation can be set using Tools > Options > Dimensions. Once a Dimension style has been created it can be selected in the options for the Rhinoterrain command -- but only if you do not select the contours prior to running the command!
Adjust Contours and Add 3D Breaklines
Editing contours is best done in plan view, with the Planar Snaps turned on.
For this is is useful to look at the Surround Contours that are part of my sample model. Notice that I have eliminated some contours, and simplified many of them and added articulation to others. I have also added 3d curves in spots -- such as the bank at the back of the baseball field to express a landform that is difficult to express with contours. I have created a 3d curve for the top of the bank and will treat this as a Soft Breakline which tells the surface interpolator that the resulting surface will pass through this line without creating an abrupt break in the grade.
The elevation of control points on 3d curves can be adjusted by selecting one or more contrl points and using the SetPt command. You want to uncheck setX and Sety so that you are only changing the Z coordinate. The new elevations are set using world coordinates for example, typing w0,0,16 at the command propmt. While this adjustment can be made in plan mode, it is a good idea to ccheck the shape of the 3d breakline curves by tilting in perspective.At the front of the seawall, I have created another line that I designate as a Hard Breakline that specifies that my surface will have a crisp break in grade at this line. The soft and hard 3d breaklines are placed on their own layers. From here on out we will consider our planar countour lines as soft breaklines.
It is important to keep your Hard Breaklines on a separate layer so that they can be independently selected when you make your mesh. I also keep planar breaklines (contours) on a separate layer so that they can be colored differently and selected for annotating with the RhinoTerrain contour annotation tool.
Creating Terran Meshes
Create a Mesh From NURBS Curves
Once you have got the contours adjusted the way that you want them, you can create a mesh directly from the curves. YOu can do this with the Rhinoterrain > Create Terrain tool. To do this we will select all of the contours and breaklines. Then when the tool has been invoked, we will choose the Hard Breaklines option and choose our hard breakline. Then we will choose Complete to finish the mesh. Take a look at the resulting mesh. It has way more faces than we need. This will cause problems for us later. We want a mesh that is no more complicated than we need. Delete this mesh.
Create Polyline Views of our Breakline Curves
We will maintain the contour curves as our terrain control manuscript, but for creating a mesh creat polyline copies of your hard and soft breaklines useing the Rhino Convert command to turn these into Degree 1 (polyline) curves. Set Output=Lines and make sure that the Delete Input option is set to No. You can tool around with the Angle Tolerance setting to determine the number of vertices that you want in your mesh. I used a 10 degree angle tolerance and a 1 foot deflection tolerance. Of course, you should create new sublayers in which to store these polyline views.
Create a Terrain From the Polylines
The mesh made from polylines is much more reasonable! When creating a mesh using the Rhinoterrain > Create Terrain procedure, you begin by selecting all of the controls including the 3d frame, the masspoints and all of the hard and soft breaklines. After the command has started, you can then choose the Hard Breaklines by Select option and select those lines that you want to use as hard breaklines. Don;t forget to hit the Complete option when you are done, or else your meshes will dissapear!!! Once the mesh has been created, if you want to keep it, change its layer name, since rhinoterrain always creates meshes on the Delaunay Mesh layer.
Create your Design0 Model
Our Surround model now also contains a model of the initial condition for our Design Site. What we will do next is repeat the same procedures that we used to clip out our surround mesh frm the context model. Before we begin this we create a new group layer to hold all of the controls that will be used to generate new variations of our design model.
- Create a 3D Design Frame by projecting a copy the Design Frame onto the Surround Mesh.
- Use MeshClip to clip out the design0 mesh from the surround mesh.
- Make new layers for our contour curves, copy the surround curves into these layers and then trim them using the Design Frame.
- Copy the masspoints.
The controls that make up this design model can now be copies to create any number of alternative models. As long as these models all respect the geometry of the 3d Design Frame, they will nest seamlessly inside the Surround model.
Each Design Alternative can have its own PictureFrame
Now to begin creatnig our first design alternative, we will use the pencil drawing created by Kaki Martin and Mark Klopfer when they worked for Hargreaves and Associates. Note that we have to push the pictureframe down ro -30 feet so that it stays below the deeper parts of our model. ALso remember that the Pictureframe should only to be used as a guide when you are in Top View.