Rhino is a 3D CAD system based on NURBS geometry and is a commercial product from Robert McNeel & Associates. It features very accessible APIs which has enabled the development of many plug-ins and extensions, including the Grasshopper visual programming language which we will use extensively in the course. The Grasshopper plug-in is only currently available in the Windows version of Rhino.

Getting Started

Start here to learn Rhino Entry level gateway to video tutorials and pdf primers for reference as you begin to learn Rhino.

Start here to learn Grasshopper Entry level gateway to video tutorials and pdf primers for reference as you begin to learn Grasshopper.

Started to learn Python for Rhino Entry level gateway to video tutorials and pdf primers for reference as you begin to learn python for Rhino.

Product Links

Rhinoceros CAD
Grasshopper visual programming and algorithmic modeling for Rhino
Firefly physical computing extensions for Grasshopper
Python scripting object for Grasshopper
Python Rhino API documentation

Reverse Engineering Links

123D Catch: A free app from Autodesk to create 3D scans using a camera.

Rhino Tools: A collection of resources related to reverse engineering in Rhino.

Rhino Reverse: A plugin for Rhino designed to aid Mesh to NURBS translation and handle high polygon count meshes.

Other Links

ArtFab Rhino crash course

Mode Lab Grasshopper Primer (PDF or online)

Motion Capture and Data Acquisition

We will be experimenting with different forms of camera-based motion capture and Arduino-based data acquisition for recording human tool gestures.

The Firefly plug-in for Grasshopper has few ready-made options, including an Arduino client to receive raw data from a generic downloaded client similar to Firmata; Web cam input; Kinect V1 and V2 input including both meshes and images; and reacTIVision marker tracking.  It also has a generic OSC UDP client to receive messages from outside programs using the OSC protocol.

reacTIVision is an open-source marker tracking toolkit which can track multiple markers on a 2D plane (e.g. x, y, angle) at video frame rate.  The markers can be printed on a laser printer, and several hundred unique marks are available.  The data can be transmitted via OSC using the TUIO protocol which is a particular format for encoding OSC messages.  It is also straightforward to receive the marker data stream using a PureData patch, Python, or Max/MSP.