MAT 594X Comp Fab Week 02




Introduction: MAT 594X Comp Fab Week 02

About: New Media Artist / INS: @w.e.i.d.i

This week we studied transformation by using Rhino and Grasshopper

Step 1: Notes From Reading Transformation Tutorials

This week the topic mainly covered by our Professor Jennifer is Transformations.

I do not have much experience with Python before, and this is my second week exposed to Grasshopper and Rhino. So the tutorials offered by Jennifer are very helpful. Here are some notes and key points I've been taken from her tutorials.

Construct a new coordinate system and transform the objects to match it

+ Use Curves to as input to python component / A big question I come across is I am not able to connect three curves to the python component, I did some research online and then find out I need to press SHIFT to connect multiple curves to one node. It is a small trick here.

+ Calculate Transformation Matrix in Python / Coming from an art background and with language barrier, I am not quite sure about the term: affine transformation. after searched online I got the definition:

Affine transformation is a linear mapping method that preserves points, straight lines, and planes. Sets of parallel lines remain parallel after an affine transformation. The affine transformation technique is typically used to correct for geometric distortions or deformations that occur with non-ideal camera angles.
The properties of Affine Transformation : 1. Origin does not necessarily map to origin 2. Lines map to lines 3. Parallel lines remain parallel 4. Ratios are preserved

[Interesting to know / and it refreshes my high school math memory]

Then it introduces vectors in Python / each element of the vector coordinates could be acessed as a list

import rhinoscriptsyntx as rs
vec = rs.CreateVector(1.0,2.0,3.0)
print(vec[0]) #it could be also accessed as vec.X<br>print(vec[1]) # vec.Y
print(vec[2]) # vec.Z
Endpoint = [1,2,3]
Startpoint = [4,5,6]

#vector substraction could be used to find the vector between two points
vec = Endpoint - Startpoint

#for loop could be used to access each coordinate in succession
for c in vec:
	print c

[ Interesting to review those basic information ]

+Transform and output geometry / It is important to know that the normalizing the vectors [ unitize ]

Step 2: Note From Tutorial 2 / Stacking and Nesting With Affine Transformations

The second tutorial continues from the previous one

+ Organize code by creating function

It firstly introduces the definition of the function and then move the code under a new function created.

+ Adding Dynamic Scaling by add an additional argument 's' to control scaling

+ Duplication by using for loop to access the 'count' slider created

+ Iterative Translation / though bounding box - to get corners and center of the geometry

+Creating a simple revolved geometric object / opened curve - revolve surface

Step 3: Design a Crumpled Lamp

The prompt is to create a set of small stacking or nesting objects functional or otherwise (cups, baskets, coasters, measuring spoons

My idea is to design a lamp - A prep for next week's assignment I would like to see the lamp is a crumpled paper, with folding evidence, grids, and separate elements together. The light could be seen through the structure.

The first step I did is to use Voronoi pattern as the initial patterns wrap around a cube. I watched a few tutorials on youtube, they were quite helpful.

Step 4: Using SDIFF Component to Create the Structure

It is interesting to learnt from the tutorials that I could create two sets of breps and then perform a solid difference on them. Enjoy the result!

Step 5: Stacking Objects

Then I followed the code from the tutorials offered by Jennifer on Thursday, I wrote python code to pile the structure I created. Besides changing the parameters for displacements, I also did a tiny rotation on each element.

Step 6: [ONLY EXPERIMENT NOT FOR PRINT] Displace the Polygons With Noise Function

I did displacements of the polygons of the structure using noise function. The explosive result is what I expected. I doubt if it is printable though. I will figure it out next week.


This step I actually accomplished in C4D, because I am new to Rhino. I am short of time for realizing this step in Rhino. The process is I export the structure as an Obj, and then import it to C4D. Cinema 4D is a modeling CG software I have been using for a long time. I will try to realize this in Rhino next week. I guess the result will be different because I will optimize and change the design based on the printing situation.


It is just an experiment for now...I am out of time...

Step 7: Initializing 3D Printer and My Very First Print....

Many thanks to our professor Jennifer, she sent a 3d printer to each of us in the class. It is so impressive during the Covid19 pandemic. I am very thankful to my dear friend Jungha who is also in this class. She recommended a video to me to assemble the 3d printer -

It is so helpful!! It took me some time to assemble this machine, and then I did bed leveling. It also took me a long time...

After settling up everything, I printed a model from SD card - a cute pig! I sent it to my families and friends, they are very excited to see this result too.

It is so exciting that my first ever 3d printing object born! It took 6 hours, and I am glad the printer could be paused and resumed next time.

I also initialize the Cura..

This week I did not get to the step to print my own design, I spent too much time to settle up everything. I will focus more on the design procedure next week..

Be the First to Share


    • CNC and 3D Printing Contest

      CNC and 3D Printing Contest
    • Rice & Grains Challenge

      Rice & Grains Challenge
    • Lamps Challenge

      Lamps Challenge



    2 years ago on Step 7

    Weidi, the design at the bottom, where you displaced the geometry based on noise, is stunning! Wondering what the result would be if you did try to print it, and whether the [failed?] print will be aesthetically interesting on its own as well.