A central circular element is releasing steel ball bearings into a complex nest of eight intertwined plastic paths.

There are few things that can keep a certain kind of mechanically-inclined mind entranced as well as a marble run, and few structures that look as interestingly organic as procedurally-generated designs – combine the two and you get [Will Morrison]’s Marble Fountain.

[Will]’s first approach to generating a marble run was to have a script randomly place some points, generate a path following a spline through those points, and give that path a constant slope. This worked, but the paths it generated were a bit too simple to take full advantage of a 3D printer’s capabilities, so he next wrote a path solver to generate more complicated runs. The solver starts by generating a series of random line segments connecting the top and bottom of the run, then iteratively moves the segments into position. Each segment has to stay within the print volume, be evenly spaced with the others, maintain a constant slope, avoid segments from other tracks, and avoid distant segments of its own track. The result is a complicated network of tracks that keeps the marbles in motion without letting them fly out in fast sections.

A motorized screw runs through the center of the marble fountain and brings marbles back to the top. The screw is constrained on all sides by the rolling marbles, essentially like a ball screw, which lets it avoid using another bearing at the top of the structure. The supports for the tracks grow downward, merging with nearby supports, repelling from other paths, and converging toward a ring around the central screw. A few Python scripts handle the generative algorithms and use OpenSCAD to generate the actual 3D files. The persistence involved in this project is admirable – [Will] went through about 65 design iterations to get these results.

We’ve seen a few computer-generated marble runs before, though it’s fair to say that this is by far the most complex. We’ve also seen another mesmerizing mechanism to bring marbles back to the top of a marble run.


From Blog – Hackaday via this RSS feed