For my master’s project, I’m working towards algorithmic-based design process that enable user customization of products. So I decided to take a crack at writing my own generative design tool. I’m using Processing, which is awesome, because it has a large user base and a lot of development in this area. Because of this, there is already a library called Toxiclibs that make it really easy to do the vector math and manipulations, as well as generate a mesh object. Additionally, camera functions are handled by Peasycam, and control objects are done with ControlP5.
In the design tool, you have control over the direction of growth, as well as the speed. These can be changed real-time, so that you can manipulate where the mesh is moving. As it computes, it checks for self-intersections using a modified version of the ray-triangle method that Jose Sanchez used here. It all starts with one seed:
The user then dials in a direction and intensity to start with and presses GROW:
Here is a video of the growing process in action for another model:
Next, the user can either press CLEAR to start over, or press SAVE to create an .stl file of the mesh. I’m still working on the mesh generation procedures, so it’s a little rough. However an awesome tool called MeshLab allows you to fix the mesh if necessary:
After saving it here, you can now bring it into a CAD program like Solidworks to modify the solid. From here, I save it as a step file and use Keyshot to render. Here are some final shots: