Create a program which makes 3D objects.
You are asked to create a program which generates 3D objects. More specifically, your program should generate a family of 3D objects, which are all parameterized in the same way, but which differ when their parameters are set to different values. The objects generated by your program should be suitable, at least in principle, for rapid prototyping in the real world.
Disrupting the depersonalizing effects of mass production can be liberating. If you are hunting for a concept, it may be helpful to think of things in the world around us which are mass-produced, but which could be personalized.
Give consideration to the potential of your parametric object to operate as a cultural artifact. How might it somehow attain special relevance by generating things which address a real human need or interest? Does your generative object have a perspective? Is it possible for an object to be critical? Tactical? (What could those terms mean when applied to generative objects?) Is it a tool? Garment? Decoration? Can it be funny, surprising or unexpected?
If you really have absolutely no idea what to do, write some software that generates vases.
Furthermore: some of the possible development environments (such as OpenSCAD and Rhino) allow you to load in 3D files. Your generative object could be some kind of insane mashup of other objects.
The one firm rule is that the objects generated by your software must be fit (at least in principle) for fabrication in the real world — presumably, with the use of 3D printing, laser cutting, CNC milling, or some related technology. By contrast, the following cloud of magically floating cubes, while technically a parametric 3D design, is unfit to be fabricated in the real world, because of, um, gravity:
In this assignment you will write code which generates 3D objects, parametrically. You may use any environment you prefer, but the following are strongly recommended:
- OpenSCAD (with instructions here): computationally slow, but easy to learn
- Rhino+Python (see Caitlin Morris’s workshop): fast and powerful, but lots to learn
It is permissible to use alternative programming environments for this project, but if so, you’re on your own. The following are great tools, but not recommended for this assignment unless you know what you’re doing:
- Blender, with Python
- Rhino with Grasshopper3D
- Processing, with the PDF export library (for 2D lasercutting)
- Processing, with Marius Watz’s 3D ModelBuilder library
- Processing, with Karsten Schmidt’s ToxicLibs libraries (more)
- openFrameworks, with James George’s ofxSTL addon
- Remember to SKETCH FIRST. (You’ll be asked to include your sketches in your blog post.)
- If you’re using OpenSCAD, download and install it. Instructions and resources for getting started with OpenSCAD are here. Spend 15-30 minutes just tinkering with OpenSCAD in an open-ended way. Try all of the examples (under File>Examples). When you create your own .SCAD file, be sure to use Git and upload your work to GitHub. (You’ll be asked to present a link to your GitHub project.)
Now it is time to document your work. Anything worth making is worth documenting well, so that others can find it, appreciate your brilliance, and build on your effort. Do the following:
- Create a blog post in this WordPress site. This will be the locus for your documentation. Categorize your blog post with the Category, 23-parametricobject. (Categorizing your posts is important, as it facilitates searching later.)
- At the top of your blog post, write a tweetable summary or abstract sentence, which is absolutely no longer than 110* characters. Consider writing this in one of the the following formats, or something similar: “ProjectTitle by @yourname is a generative noun for verbing”, “A customizable noun by @yourname”. (*As you know, tweets are up to 140 characters long; we’ll reserve 30 extra characters so that a tweet can contain a URL link to your project.)
- Write a 100-200 word narrative that describes your project. Discuss where your inspiration came from; some of the problems you had to solve in developing it; and an evaluation of your results, considering what you could have done better, and what you think you did well.
- Document your project in renderings. (If you’re using OpenSCAD, you can use the Design>ExportAsImage operation.) Present two or three images which show your object’s variability. Optionally, You can also experiment with the Animation feature of OpenSCAD if you’d like to present an animated GIF.
- In the code of the blog post, include your code using the WP-Syntax plugin for pretty code formatting. (Tell WP-Syntax to parse your code as Java, which is close enough.) Make sure your code is also on your Github, and provide a link to that.
- Register for a user account on SketchFab, an important global clearinghouse for 3D designs. Export a 3D instance of your object in a valid format (such as .STL), and upload this to SketchFab. Give your object good tags and a clear, descriptive title so that others can find it. In your blog post, embed your SketchFab object (instructions are here). Better yet, upload and embed two or three versions of your object, in order to show the expressive range of your program.
- (Optionally) You’ll get a gold star if you can 3D print your object and include a photograph of the print. Warning: 3D printers can be a soul-sucking black hole of despair when they aren’t working properly, which is most of the time.
As a recap, your blog post should present all of the following:
- A blog post, labeled with the Category, 23-parametricobject.
- A tweetable summary (described above).
- A written narrative, of approximately 100-200 words.
- An image (scan or photograph) of your sketches.
- An image of [one instance of] your project, linking to high-resolution version.
- 2 or 3 more renderings of your parametric object, demonstrating its variability.
- Code for your project, embedded in the post using the WP-Syntax plugin.
- A link to your project’s code (OpenSCAD, Python, etc.) in your Github account.
- An instance or two of your meta-object, embedded from SketchFab.
- Optionally, an animated GIF showing your project rotating or evolving.
- Optionally, a photograph of a real 3D print of your object.