Introduction: Customizable Low-Poly Vase (With Grasshopper Walk-through!)

Hello World! Thanks for checking out my first ever instructable, created for the 3D Printing Contest. I'm going to show you the process used to create a parametric, low poly-count vase that you can not only download and 3D-print, but also completely customize through the use of eight adjustable settings built into the grasshopper definition!

For me, one of the coolest things about 3D printing is the feasibility of becoming a creator instead of just a consumer. With a product that's generated from a computer, customizing, tweaking, and tinkering with the parent file can create so many cool results! For this instructable I knew I didn't want to just make one static object, because for me, that's not what 3D printing is about. Instead, I wanted to create a platform for anyone to use so you can create something unique! So whether you want something sleek and tall or short and round, this vase will truly be your own! If you like this instructable, please vote for it for the 3D Printing contest! :)

click here to go to the contest page

What This Instructable Covers:

  1. links to download the stl file for the print pictured (more to come!) and the grasshopper file to create your own
  2. walk-through of the grasshopper definition used to create the form
  3. steps to check for mesh optimization when preparing your file to be 3D printed

If You Don't Have Rhino and/or Grasshopper:

No worries! If you list your settings in a comment I will plug them in for you and send you a link to download your custom vase. The different settings (which are in bold when they appear at each step) used to create the vase are as follows. Use centimeters!

Height; # of Segments; # of Sides; Twist (in degrees); Bottom Taper (radius); Top Taper (radius); Panelization Amount, Thickness

***A big thank you to Ara's Hub at 3DHubs for doing an amazing job printing my vase! If you're like me and don't have a printer, Ara is the hub to go to: click here to check out Ara's Hub

Step 1: File and Frame

Creating the Rhino File

Once you've downloaded the grasshopper definition, open up a new Rhino file with centimeters as your base unit. The numbers in the grasshopper file will correspond to whichever units are selected in rhino space, and for me centimeters were easiest to visualize.

Opening the Grasshopper File

If you have Rhino but not grasshopper, go download it! It's totally free. I also use a component at the very end of the definition that comes from Weaverbird, a free plugin for grasshopper. (If you don't have it already then you'll be glad you downloaded it!) When you open the low-poly vase definition a base shape and wireframe box will appear in rhino-space. The shape is your customizable vase mesh, and the box is a visualization tool approximating the printer bed volume. This can be adjusted depending on what printer you're using, and it is currently set to the size of a Makerbot Replicator 2X.

Creating the Base Frames for the Vase Mesh

The entirety of the awesome vase you're about to make is all based off of one single point. From there, a line is created with the option for a set length- this controls the height of the vase. This line is the central axis of the vase geometry, and from it, perpendicular frames are created to host the polygons that will loft to make the vase shell. The number of perpendicular frames corresponds to the number of segments the vase is divided into.

Step 2: Twist, Taper, and Loft

Giving the Vase its Twist

Once the frames are created, you can rotate them to give your vase a dynamic edge. A series component controls the amount of rotation (in degrees) that each frame will move in relation to the frame below it. Note the addition component right before the series component. When setting a segment amount for the perpendicular frames component, its output doesn't count the very bottom frame that caps off the first segment. As a result, after the rotation is applied the top two frames will remain parallel to one another. My crude but effective solution was to simply use the addition component to add a value of one (1) to the segments slider and plug that result into the series component. Problem solved! (The print pictures and stl file at the beginning do NOT have this problem solved, but if you like the look then just bypass the addition component!)

Adding a Taper to the Vase

Now that the frames have a nice twist, polygons can be modeled onto them to create the shell of the vase. The polygon component allows you to establish the number of sides your vase has, as well as the radius value, which is where the taper comes in. To create the taper, a domain/range workflow can be used and connected to sliders for its upper and lower values, controlling the amount of taper in the top and bottom of the vase. Note that these values plug into the radius, so think in halves!

Lofting the Polygons

The polygon component plugs into a loft component and, voilà! You've got a twisty tapered shell.

Step 3: Creating the Base

Time to cap off your vase! In order to get the base to match the geometry of your vase, a list item component is used to extract the very bottom polygon so that it can be patched and thickened (its thickness value is derived from the same slider that will be used later to thicken the lofted shell). The component used to thicken the base is from the Weaverbird plugin mentioned in Step 1.

In order to keep the vase geometry aligned with the top of the base geometry, the un-thickened polygon brep surface is merged back into the vase geometry down the road. Then, the thickened base mesh is joined together with the final thickened vase mesh. Now you have a base that can be printed directly on the bed without any rafting!

Step 4: Low-Poly Panelization

Extracting and Subdividing the Faces of the Loft

Right now the lofted vase shell is one single brep composed of smooth faces matching the number of sides to the polygons. In order to create the triangulated low-poly look seen on the intro picture, the brep will need to be exploded. It can then be plugged into a subdivision component, where I've limited the u-divisions (horizontal) to the number of segments in the vase, but the amount of v-divisions (panelization slider) can be adjusted to whatever you please! The subdivision component is then run through a grafted iso-trim component to apply the subdivisions to every face of the vase shell brep.

Triangulating the Subdivisions

Now that there are multiple faceted faces, you can go in and triangulate your vase geometry. The breps are exploded once more, but this time the focus is on the vertices- the four corner points making up each face. These are sorted into four lists, each containing the same point from every face (so one list just has all of the top left points, for example). Then three of the four points are used to create two sets of triangles that split the faceted faces in half.

Step 5: Preparing the Mesh for 3D Printing

Joining the Pieces Together

Now that you've decided on how you want your vase to look, it's time to get it ready for a 3D-printer! Due to the last step, the vase geometry is currently exploded and dispersed. By using a merge component, all the geometry can be woven back into a single branch. This will also include the flat polygon surface that was created for the base back in Step 3. Once all the geometry is being outputted by a single component, it can be joined together into one solid brep, then converted into a mesh.

Thickening and Aligning the Mesh

At this point, you have a mesh that has no depth. The 3D printer won't be able to make that, so some thickness needs to be added to make the walls of the vase. Using Weaverbird's thicken component (used back in Step 3 for the base) you can control the thickness of the vase. This amount will also control the thickness of the base mesh, which can now be joined to the vase mesh. After making sure to move the final geometry along the z-axis the amount of the thickness, you have your final low-poly vase mesh ready to be baked into rhino!

Scaling the Mesh in Rhino

Rhino unit settings are always read as millimeters when imported into other programs. So once the mesh is baked into rhino-space you're going to have to scale your vase geometry. When changing the units from centimeters to millimeters, Rhino will ask you if you want to scale your object by 10. Say yes! If you say no, an object that was 5 cm tall will now be only 5 mm tall. Of course, based on personal preference, this step can be skipped if you just start in millimeters from the beginning and adjust the slider values.

Export your mesh to an stl file and you're ready for the printer!!

Step 6: Additional Mesh Optimization (Optional)

Rhino Checks

Once the mesh has been baked, there are a few checks you can do in Rhino to make sure it's valid. You can have rhino highlight all of the naked edges- if you have any, the mesh isn't valid and may create an error when printing. You can also select the mesh and click on the "details" button on the bottom of your properties bar. If it reads the object as a 'valid mesh', you're good to go!

Outside Programs

Once you export your mesh as an stl. file, there are still more options to further optimize your print. One such option is Netfabb, a printing software where you can load your stl files and run optimizations on them. They have a free version that's super useful even if you only use it for its default automated repair. You can also scale objects very easily, which is how I scaled my test print. Click here for the free version!

ENJOY YOUR CUSTOM VASE!!!

And that's it! I hope you all enjoyed this instructable!! I also hope I didn't ramble too much. Feel free to comment with any questions, and like I said at the beginning, if you don't have Rhino then send me values for all the settings and I'll make the stl file for you! And remember, if you liked this then please vote for me in the 3D printing contest! :)

***I'm planning on creating a collection of different forms over on thingiverse, so if my little vase sparked that much interest then be sure to check back for the link!

3D Printing Contest

Participated in the
3D Printing Contest