CompFab Nested Frogs
For this assignment, I applied affine transformations to create a series of hollow frogs that are meant to nest within each other. The goal was to rival our neighbors' decorative frogs, which are both sinister and impressive.
I created the initial geometry for the frog model by combining some of the standard shapes in Rhino and generated the series procedurally with Grasshopper.
Supplies
Rhino 6 with Grasshopper (for Windows 10)
Ultimaker Cura
Creating the Initial Frog Model
I created the frog by combining spheres and ellipsoids of different dimensions, from Rhino's surface menu. The first two screenshots above show the frog from the front and side during this phase. It was here that I realized I don't know frog anatomy that well and I only really looked at one picture of a drawing of a frog for reference.
In order to treat the model as a single physical object, I then converted all the surfaces to meshes and did a MeshBooleanUnion to combine them. The combined mesh is shown in the third screenshot.
I had also tried converting the model to a polysurface, since that's what we had worked with in the previous project, and I got a fairly complex object. It behaved perfectly fine within Rhino, but I found that Rhino would hang or crash when trying to export the polysurface as an STL file. I also found that the step that seemed to be causing the problem was converting the polysurface back to a mesh during the export, so I decided to work entirely with meshes for this project to avoid that step entirely.
Creating the Hollow
Once I had the basic frog model, I needed to make it hollow so that they would be able to nest within each other, like Inception.
I created a mesh sphere with the size I wanted the hollow to be, then positioned it within the frog mesh in the space I wanted to hollow out. I made sure it was offset from the center so that it intersected the front of the frog's body. I then performed a MeshBooleanDifference to subtract the sphere mesh from the frog mesh. As shown in the first screenshot above, the intersecting section of the sphere and the frog was removed, creating a large opening in the front of the frog's body. The rest of the sphere was left within the frog mesh and formed the inner wall of the hollow. I then did a Join on the remaining parts of the frog and sphere to create a single mesh.
Next, to give the mesh some physical thickness, I called OffsetMesh on the frog and created an outer offset mesh, then Joined the offset and original meshes. The final frog mesh is shown from the front and side in the last two images above. I opted not to create an inner offset because I didn't want to decrease the size of the hollow space.
Checking the Single Frog in Cura
Just for fun, I exported the single frog as an STL and checked what it would look like if I created the nested frogs by hand in Cura. I wanted to make sure that the mesh joins had worked as I'd intended and created the edges of the hollow properly, and that the hollow could realistically fit a smaller frog. The frogs looked very jaunty yet eerie.
Generating the Frog Series
I then created a Grasshopper file that generates a series of progressively smaller frogs, which should be able to nest within each other.
As shown in the screenshot above, the Grasshopper construction itself is relatively simple. Its inputs are the frog mesh, a slider indicating how many frogs to generate, and a single curve used to create the transformation applied to the frogs. The curve dictates the scaling factor that is iteratively applied to the frogs, as well their placement as they're generated.
The Python script creates and applies the scaling and translation to the frog and generates a list of transformed frog meshes. The contents of the script are provided here in "grasshopper_script.py". It was largely based off the example scripts from the project introduction, but I modified the transformation matrix and scaling calculations to get a better result for the frog, which is a slightly irregular shape. The second screenshot shows the generated series after baking: the large frog on the bottom is the original, the four frogs aligned on the diagonal are the generated frogs in the positions assigned by the script, and the curve used to create this transformation is visible on the canvas just to the left of the smallest frog.
This step was a little tricky for me since I kept getting a lot of strange transformations in my early attempts. I spent a lot of time tweaking the constants and calculations in the script, as well as experimenting with different input curves, until I got a transformation I was happy with. Even with this transformation, I'm not entirely sure that the third-largest frog will nest perfectly into the second-largest.
Downloads
Align, Measure, and Export the Frogs
As the first screenshot shows, the scaling isn't uniform across the series. The first frog is more than 2x the size of the second, the next three frogs scale down by a factor of about 1.5x each time, and the final frog is less than a third of the size of the fourth. However, as you can see in the second screenshot, the position of the hollow should allow them to nest within each other properly for the most part (though, as mentioned before, there could be an issue between the second and third frogs). If I were to do this again, I might try to scale them relative to the size of the hollow space rather than the entire frog, since that would better ensure that they'd fit together.
I then exported the series of frog meshes as an STL.
Slice in Cura
Finally, I sliced the series in Ultimaker Cura to get an idea of how long it would take to print. The models seemed to be really small when I first imported them, so I scaled them up slightly before slicing and got an estimation of 37 minutes. However, I could see that the frog shapes had a lot of overhang (shown in red in that first image). Since their bodies are hollow spheres, they'd likely collapse if I tried to print them directly like this.
I went back into Rhino and aligned all the frogs on the xy-plane, then imported them back into Cura, scaled them up a little more, and added supports and a build plate brim. As the second image shows, this increased the estimated print time by almost 30 times, but will result in much more robust objects.
I don't have my printer yet, but these frogs will certainly be the envy of the entire neighborhood once I do.
As a gift, I have provided the attached the STL of the single frog model. Please be responsible.