Final Project – Patrick Fry

Introduction:

For my final project I wanted to build on my butterfly artifact from the GCode assignment and use L-systems to design interesting wing venation. Originally, I wanted to print these in midair but that quickly proved to be basically impossible. I decided to use L-systems I found and modify them to fit within the ellipses that I used to create the wings of the butterfly. These L-systems are created to simulate biological growth usually in plants. I created 3 butterflies with different L-systems to create the venation in the wings.

Background Research:

To start my process I needed to gain a deeper understanding of L-systems and how they work. These works I originally found helped build the foundation for my project by providing me with different creative ways people have used L-systems to create butterfly wing venation or cracks in windows or concrete for video games. I also found this website created by Paul Bourke that implements L-systems discussed in lecture notes by Przemyslaw Prusinkiewcz and James Hanan that really helped me fully understand these L-systems and how they are created. I used and altered some of Paul Bourke’s L-system designs to create my butterfly wing venation in this project. These articles and academic papers are only scratching the surface of the use of L-systems to create beautiful and creative designs for many different fields.

Research of Plant Growth Model Based on the Combination of L-system and Sketch | IEEE Conference Publication | IEEE Xplore

An Improved Method for Modeling of Leaf Venation Patterns | IEEE Conference Publication | IEEE Xplore

Generation of Cartoon 2D Cracks Based on Leaf Venation Patterns | IEEE Conference Publication | IEEE Xplore

Design and performance of micromolded plastic butterfly wings on butterfly ornithopter | IEEE Conference Publication | IEEE Xplore

L-System manual

Process:

For the L-systems in my project I just implemented a loop that would read a sequence of characters one char at a time and depending on the character I would direct the turtle to do a task. For example, if the loop read the character ‘F’ then it moves the turtle forward a certain length, if it reads the character ‘>’ it would increase the length by a given scale. I created a method that would then update my sequence after I finished reading through it. For my altered L-system I created a curl method that would make the turtle move forward in a curve instead of a straight line. In the curl method I also made it so at certain distances away from the start point I would begin to curl it in the opposite direction to keep it more centered.

For the ellipses, I had variables throughout the L-system methods that would determine how far in the x-direction and how far in the y-direction the turtle would go while drawing the L-system to determine the semi-major and semi-minor radii. I often had to slightly edit these so the ellipse intersected the L-system at the edges so it was easier to get off of the print bed.

I have a body method that created the rectangular spiral shape to create the butterflies body. I decided to print a layer of this body first and then the wings to make it a little easier to get it off the print bed and to help keep the wings intact when I did.

There are lots of sections in my code where I had to reposition the turtle. While this wasn’t super stressful, it was slightly complicated to think of where the turtle could be and where its facing so I can properly orient it for the next part of the print. I also slowed the extrude rate and the nozzle speed to help get a better design on the wings.

Outcome:

I am very proud of the first 2 prints with the leaf venation and the altered Bush but the third print proved to be more difficult than anticipated. However, I am very happy with the results and I had a lot of fun with this project.

Future Work:

In the future I would definitely spend more time fitting the ellipses and designing my own L-system. I spent a lot of my time on this project trying to figure out a general approach to fitting the L-system into to the ellipse perfectly. I didn’t want the turtle to just stop when it new its next position was outside of the ellipse. I wanted it to then determine exactly how far it needed to travel to reach the edge of the ellipse and I felt like could not figure it out. I also wanted to spend more time designing my own L-system pattern. I definitely did not expect it to be as difficult as it was and I would like to revisit it to maybe design a more personal L-system.

Reflection:

I had a lot of fun with this project. I did not expect creating G-Code with Grasshopper/Python was going to be this rewarding and I feel like it opens a new world of design possibilities. I struggled a lot with the mathematical portion of this assignment when it came to creating the wings and bounding the L-system within them. Other than that, I felt like it was fairly straightforward. Even though some of my butterflies did not come out as I had hoped, I still feel a great amount of accomplishment in them, and I am very proud that I was able to get anything to print at all. I will absolutely be displaying these butterflies around my house!

Leave a Reply