Rhino is a NURBS-based 3D CAD package produced by Robert McNeel and Associates. It also plays host to the Grasshopper parametric design plug-in which will be the main focus of this course, however before we begin looking at that tool it is useful to understand the basics of Rhino itself.
After loading up Rhino and choosing a unit system (I like metres, myself), you should see something that looks a little bit like this (click for bigger):
Menu Bar: All the things you might expect of a windows menu bar such as Save/Load etc. Also contains menus of modelling tools categorised by type.
Command Prompt: Type here to make things happen. Press enter or right-click without typing anything to repeat the last command. See below for a list of useful commands.
Command History: A list of commands previously used as well as any other little messages Rhino may want to give you from time to time.
Toolbars: A set of buttons that give quick access to various tools. Most tool buttons have different functions assigned to left and right mouse buttons – hover over them to see a tooltip that describes each function. Holding down the left mouse button over a button for a second or so will bring up a sub-menu of related tools.
Properties Tab: Displays the properties (such as name, display colour and so on) of the currently selected item.
Layer Table Tab: Displays the current layer table. Like most CAD packages, objects in Rhino all sit on a particular layer. You can select, colour, hide and lock all entities on a layer quickly an easily, so they are a useful tool for organising your model and keeping it clean. Newly created objects are (usually) added to the current layer (the one with the tick). Double-left-click on a layer to make it the current one.
3D Viewports: Where the magic happens. Provides you with a 3D view of your current model geometry. By default is split into four separate views with the view name in the top left corner. To make one view take up the whole screen, double-left-click on its name (and do the same again to make it return to the previous arrangement). Right click on the name or left-click on the little drop down arrow to see a list of options for that viewport. The most important option is probably the rendering style – this defaults to ‘Wireframe’, meaning that only points, curves and the edges of surfaces will be displayed. Turn on ‘Shaded’ mode to see surfaces in all their glory.
In the viewport, left-click to select objects. Hold and drag the right mouse button to navigate – in perspective mode this will rotate the view, in orthographic view modes (Top, Front, Right etc.) it will pan. To pan in perspective mode, hold shift at the same time.
In each of the viewports you should see a grid (if you don’t see it, hit F7 to toggle its visibility) – this is the construction plane. The construction plane is important because it is Rhino’s way of dealing with the problem of interacting with a 3D space through a 2D screen and input method. When you pick points or do other operations in the 3d view, they will default to being projected onto the current construction plane, unless being overriden by…
Object Snap Toggles: VERY useful. Use these to snap to different objects in the 3d view when picking points – vital when modelling to ensure that various things connect properly. Turn on the ‘Project’ option to enforce projecting your input onto the current construction plane. You may not be able to see these toggles when you first open Rhino – turn them on by clicking ‘Osnap’ on the…
Status Bar: Gives you various bits of useful information such as the current mouse position, layer and so on. Also home to important toggles such as the aforementioned Osnap.
Rhino contains hundreds if not thousands of different commands and I’m not going to cover them all. Here is a list of some of the most useful/commonly used ones. These can be used either by typing in the command name at the prompt or by clicking the equivalent button in the toolbars or menus. Pay attention to the command prompt – it will guide you through the inputs needed for each command. Note that often there are several ways of providing the input – for example with the Point command you can position the point either by clicking in the 3D view or by typing in the x,y,z coordinates of the new point.
Help – Access Rhino’s built-in help file. Good for more detail on what all these commands do.
Options – Gives access to Rhino’s (many many) options, including useful things like the current document’s units and display options.
Point – Create a single point object
Line – Draw a straight line between two points
Polyline – Draw a set of joined straight lines through a set of points in sequence
Arc – Create a single-radius curve around a point
Curve – Draw a curve by manually specifying its control points
CurveThroughPt – Create a curve that passes through a selection of point objects. Note that you’ll need to have created the point objects beforehand and that the order in which you select them is the order in which the curve will pass through them.
SrfPt – Create a quadrilateral surface by specifying it’s corner vertices
Loft – Create a surface that passes through a selection of curves. The Surface equivalent of CurveThroughPt.
PlanarSrf – ‘Fill in’ a planar closed curve with a planar surface cut to the right shape.
Move – Move an object along a particular vector. You can also move objects just by holding down the left mouse button on them and dragging, however it is usually preferable to use the Move command as it gives you more control, with the ability to make use of object snaps and numerical input.
Rotate – Rotate an object about a particular point with a particular angle. By default, rotation is done on the current construction plane.
Copy – Create a copy of an object
Rebuild – Change the degree or number of control points of a curve or surface.
Join – Join several objects together into one larger object. For this to work the ends (of curves) or edges (of surfaces) must be exactly touching – this is where object snaps are vital.
Explode – The anti-join. Breaks joined objects up into their component parts.
Intersect – Create points and curves at the intersection between two (or more) objects.
Trim – Cut off a bit of one object using another as a cutting tool. The cutting object must intersect the object to be trimmed.
Split – Like Trim, except you keep the offcut as a separate object.
CPlane – Allows you to reposition the construction plane of the current viewport in a number of different ways.
PointsOn – Turn on the control points for the selected surface or curve. This lets you manually adjust the topology of these objects without having to create a new one.
PointsOff – Turn control points off again. Until you do this you won’t be able to select the object itself.
EditPtOn – Turn on edit points for the selected curve. Edit points can be used similarly to control points, however they lie on the line itself and thus can be a bit easier to use.
EditPtOff – Turn off edit points.
InsertEditPoint – Add a new edit point to a curve at the selected location. Useful to get a bit more local control of a curve.
Blend – Smoothly join two curves
BlendSrf – Smoothly join two surfaces
Project – Project curves and points onto a surface. Projections always happen ‘down’ onto the construction plane (i.e. in the direction of the current CPlane’s z-axis). Useful when trimming a surface with a curve to make sure that the curve exactly intersects the surface.
ProjectToCPlane – Like project, only it projects everything onto the current construction plane. Useful when you want to make a bunch of curves all occupy the same plane in a hurry.
Grasshopper – You’ll need this one next week. If nothing happens then download and install grasshopper…
NURBS Curves and Surfaces
To use Rhino (and also Grasshopper) well, it helps to know a little bit about the way that Rhino deals with its geometry ‘under the hood’. Rhino is heavily focussed around NURBS, or Non-uniform Rational Basis Splines. This is a way of mathematically representing curves and surfaces using one or more polynomial functions and a set of control points. Compared to other ways of representing 3D geometry such as meshes they have a number of advantages in that they are more precise and far more scalable. Meshes can only approximate curved geometry and if you zoom in or blow up the geometry the individual faces of the mesh soon become apparent. NURBS, however, can represent a smooth curve exactly at whatever scale you need them to. The main disadvantage of NURBS compared to meshes is that they can be a bit more difficult to work with since you do not have quite such a direct level of control over their shape. They can also be a bit more computationally ‘heavy’ since they cannot be rendered directly and must be converted into a mesh before they can be drawn to the screen.
The two most important properties that define a NURBS curve in Rhino are its control points and its degree (there are also knots, but we’ll ignore those for now since you never really need to get directly involved with those in Rhino). The control points act as attractors that ‘pull’ the curve towards them and define the general shape of the object. The degree refers to the degree of the polynomial that defines the curve itself. The degree also determines the number of control points that will influence any particular point along the curve. A curve of degree 1 consists of straight lines between control points as the position of a point on the curve is only being determined by the position of the control point directly ahead and behind it. Higher-degree curves will be also influenced by control points further down the chain and so will have a smoother appearance.
A degree 1 curve (a polyline) between control points
A degree 3 curve using the same control points
A degree 5 curve with the same control points
NURBS surfaces work in exactly the same way except rather than a single string of control points they have a two-directional grid.
A simple surface and its control points
It’s worth noting that all surfaces in Rhino need to have a full rectangular grid of control points. All surfaces are therefore, behind the scenes, distorted rectangles. Often you will wish to have a surface which does not have a rectangular boundary and so will apply a trim. When trimming a surface, Rhino adds an additional layer of trim data to the object, which marks out certain areas of the surface as being, for most purposes, non-existant. Note though that this does not affect the underlying NURBS definition of the surface – the full rectangular grid of control points will remain intact, even if some of those points only have influence over areas of the surface which do not appear to exist anymore. This is important to bear in mind, as some Rhino commands and Grasshopper components will treat surfaces as being the full untrimmed distorted rectangle, so even trimmed parts of a surface can be important sometimes.
A trimmed surface, with its control points
- Often creating anything other than basic geometry in Rhino will be a multi-step process and you are likely to need to create plenty of temporary ‘construction’ geometry in order to position and trim things correctly.
- In particular, most ways of creating surfaces will first require you to create a set of curve inputs to define the shape.
- Use layers to group related parts of the model together and give them descriptive names – when you have 300 layers and can’t find the turned-off bit of the model that you want you’ll understand why.
- Get into the habit of using object snaps, but turn off any you don’t currently need – it’s easy to accidentally snap to something that looks right in 2d, but ends up being miles in front of or behind the point you wanted when you look at it in 3d.
- The help tab on the sidebar automatically displays the help documentation for the command you’re currently using. Useful if it’s a command you’ve not used before.
- The categorised commands on the menu bar can be a good way of browsing through commands and learning what’s available.
- Objects that are locked (or on locked layers) cannot be selected but objects snaps will still use them – this can be useful to ‘trace over’ 3d geometry.
Obviously, this only gives you the bare bones of how to use Rhino – learning to use it properly will take practice! Take a look here, here or search YouTube for tutorials. If you find any good ones or have any other tips that you want to share then add them in the comments below.