[HN Gopher] Marble Fountain
___________________________________________________________________
Marble Fountain
Author : chris_overseas
Score : 840 points
Date : 2025-11-09 16:26 UTC (1 days ago)
(HTM) web link (willmorrison.net)
(TXT) w3m dump (willmorrison.net)
| matthewfcarlson wrote:
| This is absolutely brilliant
| dbacar wrote:
| "ramble about marbles"
|
| nice one!
| scubbo wrote:
| A pun? I don't get it, could you explain?
| jwiz wrote:
| Anagram, perhaps.
| dbacar wrote:
| I meant same letters, ramble -> marble
| scubbo wrote:
| Ah, nice, thanks!
| xnx wrote:
| Stupendous project and video as well! The music is very
| complementary.
| neomantra wrote:
| Amazing on so many levels!! Thank you also for including the
| source.
| Levitz wrote:
| Mesmerizing and beautiful in a simple way, I really like this
| type of thing.
| foltik wrote:
| Be sure to turn on sound for maximum mesmerization.
| CGMthrowaway wrote:
| Mesmerizing is the right word. "I can watch them for hours" was
| the key bit for me - I have always been fascinated how humans
| can stare at a random visual generator for forever, if it's the
| right one.
|
| I think there is an instinct built deep in our lizard brain
| somewhere for this. Humans will happily stare at a fire, or an
| ocean, or a wave in a river, or (sometimes, especially
| children) a TV screen - and all I have worked out why is
| because it is constantly changing in an unpredictable way.
|
| This marble run shouldn't even be unpredictable - clearly the
| paths are fixed and the cadence of balls is regular - but
| somehow it is still mesmerizing.
| ecountry wrote:
| This is magical. Thanks for sharing!
| wxce wrote:
| Beautiful, I wonder what kind of craziness would be possible with
| this, at scale. Whole buildings being printed and assembled block
| by block. Real life Minecraft, if you will
| temp0826 wrote:
| Are procedurally generated rollercoasters a thing?
| sergiotapia wrote:
| Blame! is a manga where in the future humans have robots that
| build, and are controlled by people with Net Terminal Genes.
| Something happens and those humans die leaving the robots
| building non-stop procedurally for eons. By the time our
| protagonist moves about in the world, its said the
| Megastructure reaches from Earth all the way to Jupiter.
|
| Also, the movie Fracture features these cool marble machines.
| https://www.youtube.com/watch?v=Y-v6E9H6nh0
|
| Back when movies were made with unique good scripts and not
| marvel slop.
| stavros wrote:
| Where did they get the material for it?
| sergiotapia wrote:
| They never really specify beyond the planets themselves
| being consumed wholesale. Some of the structures are just
| hollow spheres: https://preview.redd.it/7tvkbj5bp2hb1.jpg?w
| idth=1951&format=...
|
| Also conceivable that meteors etc crash into the
| megastructure providing it with endless resources.
| 9dev wrote:
| There are serious efforts and working prototypes of printing
| houses. This works surprisingly well, allows construction in
| days instead of months, and shows a lot of promise. It's a
| great rabbit hole to fall into!
| IshKebab wrote:
| Does it though? I have yet to see a 3D printed house that
| would be cheaper than SIP panels.
| lloydatkinson wrote:
| I wish there was a write up of how some of the code works.
| There's a lot of Python in the repo. Looks fascinating, seems to
| use Python to generate OpenSCAD code, I think.
| WillMorr wrote:
| It's specifically using SolidPython2 to generate the models. I
| originally wanted to do a quick code cleanup and have the
| specific math be much clearer but by the time it was working
| that was an absolutely massive undertaking. If I touch the code
| again I'm probably going to refactor the entire codebase and
| use a different 3D engine.
| fogleman wrote:
| What did you not like about the SolidPython2 / OpenSCAD
| approach? What would you want from a different "3D engine"
| for this?
| WillMorr wrote:
| Mostly speed, I'm mostly doing large boolean unions of
| primitives or chain hulls and OpenSCAD chugs pretty good at
| large numbers of operations. Don't get me wrong, they're
| great tools for what they're good at. I need to do more
| research before I start a port, SDFs seem like the best
| option but I'm not 100% confident. I am considering using
| your SDF library though (github.com/fogleman/sdf) but need
| do do some experimenting/benchmarking first.
| CasperH2O wrote:
| Have you considered Build123D for CAD code?
|
| I am also procedurally generating marble tracks and 3D
| printing them for about a year now and found that library
| very useful.
|
| The community is very active and its very similar to features
| we know from Fusion360/SolidWorks but all in code.
| collingreen wrote:
| This is cool! Great job on the video - Simple voiceover, synced
| music, and the fountain speaks for itself. Bravo.
| MomsAVoxell wrote:
| This is beautiful. It would be amazing to have the tracks
| encode/decode audio, you know? Like, the track of the marble can
| be used to generate different frequencies...
| amenghra wrote:
| There's a Tom Scott music about a musical road in California:
| https://www.youtube.com/watch?v=Ef93WmlEho0
| WillMorr wrote:
| I actually attempted this, the idea of a python script that
| converts a midi track into a marble run is just too good to not
| try. I printed a large drum with different track structures
| inside so I could test various "slopes" by changing the speed
| and it just doesn't work, the balls bounce around too much to
| get an audible pitch. A less rigid material or a larger bearing
| would likely work better but I decided to focus on getting the
| normal version working well.
| smusamashah wrote:
| Did you try changing thickness of rails instead of bumps to
| produce different sounds?
| m_kos wrote:
| I am not surprised you tried given your earlier project :)
| https://hackaday.com/2022/09/25/this-found-sound-organ-
| was-m...
|
| Maybe at the bottom your marbles could land on surfaces with
| different accustic properties. Track selection would
| determine the surface and release time would determine the
| timing.
| aitchnyu wrote:
| Is the banking of the curve for a specific velocity?
| stevage wrote:
| It says that the banking is intentionally excessive.
| LandStander wrote:
| This is a great example of a good use case for 3D printers. The
| smooth marble run action combined with the interwoven organic
| forms would be a huge PITA to fabricate with any other method I
| can think of, even if your just making one.
| stavros wrote:
| A good use case for 3D printers is random, small, custom
| household items that greatly increase my quality of life, much
| more than it is a unique sculpture.
| cissou wrote:
| What printer do you use for that and are you happy about it?
| gaudystead wrote:
| I'm not the person you asked, but depending on what kinds
| of quality of life improvements you're looking for, your
| budget, your 3D design abilities, and your tolerance for
| working on the printer versus printing with it, the answer
| will vary in terms of what works for you.
|
| If you're casually interested, the Bambu Lab A1 combo will
| do most things you'd want it to do, fairly reliably, but
| with a closed ecosystem.
|
| If you want something more robust, go for a Prusa, but be
| ready for a more hands on experience.
|
| If you want an entirely customized bespoke with a high
| learning curve, go for a Voron.
| jstanley wrote:
| If you want something more _open source_ go for a Prusa.
| I don 't buy that a Prusa is more robust than a Bambu.
|
| I used to have a Prusa Mini and now have a Bambu X1C and
| it is a world of difference. I would never go back.
| deaux wrote:
| Really curious to hear a few of these!
| CobrastanJorji wrote:
| I'll give you an example from my life. I got a set of cheap
| LED lights for a closet. They come with a little remote
| control to turn them on, but I didn't have a good place to
| put the remote control, so I made a little wall holster
| that's sized exactly to hold the little remote.
|
| I also got one of those SimpliSafe home security systems.
| It came with a door sensor, but the sensor didn't quite fit
| our door frame. So I printed a tiny piece whose dimensions
| exactly matched the SimpliSafe and my door frame, so it
| allows the parts to meet up but doesn't look weird.
|
| Of course, 99% of what I print is useless stuff that looked
| neat on Printables, but sometimes I make stuff that
| actually serves a purpose!
| eschluntz wrote:
| Very cool! I've designed a lot of Hilbert Curve marble tracks,
| using OpenSCAD and python
| WillMorr wrote:
| That sounds super interesting, do you have a link?
| gaudystead wrote:
| Not the person you asked, but look up "Hilbert Curve" on
| Thingiverse, Printables, or Thangs and I bet you'll find
| somebody who uploaded a marble run with more information for
| you.
| CasperH2O wrote:
| Small world, I opted for a Gosper curve myself, but when it got
| too big, cut out specific pieces and connected those.
|
| It gives everything a uniform look while allowing to fill the
| space in a different way.
| fHr wrote:
| so cool!
| CasperH2O wrote:
| This is really quite interesting and similar to a project I'm
| working on. I've been using procedural generation to generate a
| marble dexterity track similar to a Perplexus. My tools are
| mainly Python, the Build123D library and a 3D printer.
| cyrusradfar wrote:
| I appreciate the work. It's really beautiful and checks so many
| of my "oddly satisfying" boxes as a builder. It seems it hit
| those for you too, obviously.
|
| Separately, the timing of seeing this is uncanny. I've been using
| marble runs to explain probability to my kids and was filming a
| marble run conversion lesson. Seeing this at the top of HN felt
| like someone was reading my minds.
| TealMyEal wrote:
| I would pay silly money for one of those things on my desk
| rwmj wrote:
| Is it printed / sintered in metal?
| hinkley wrote:
| Looks like fiber infused filament.
| randyrand wrote:
| I wonder if you could get it to run silently, or close to it.
| hinkley wrote:
| That guy who makes marble music recently worked out a ball
| funnel that uses inserts in a different material to eat most of
| the noise. But in that case it's also eating momentum as well
| so I'm not sure how that would work for this design. Maybe some
| bushings in the supports to reduce harmonics.
| bigiain wrote:
| Now my brain is doing it's usual "over complicate things to
| the extent a project cannot possibly get started" thing"...
|
| Active noise cancelling. Vibration detectors on oscillating
| parts of the track with LRAs or similar actively driving
| opposing vibrations. Might be able to use whatever the cheap
| active noise cancelling electronics headphones have? Might be
| able to use a high speed camera and video motion
| amplification to work out the best places to deploy it?
| hinkley wrote:
| How you mount things matters a lot, and adjusting shapes to
| prevent harmonics might be something this guy could add to
| his algorithm.
|
| I saved a couple friends in college from getting into
| fights with their downstairs neighbors by finding them milk
| crates to set their speakers on so the bass doesn't all end
| up in the floor. Isolating from the base or making the base
| of TPU could likely help.
| kazinator wrote:
| Designers of marble fountains who don't use computing to design
| the paths run into reliability issues: sometimes balls derailing
| out of their track. They have to observe the contraption,
| identify problems (balls getting jammed up or jumping out) and
| then guess at the root causes and make manual adjustments.
|
| That's the thing here: he has it running for hours presumably
| without any ball jumping out.
|
| Most of the tracks consist of two rails, so the ball has two
| contact points. I'm no physicist but it seems like the goal would
| be to have ideally nearly equal forces at the two contact points
| at all times during the ball's descent. In other words, the track
| has to be perfectly banked so that the gravity and centripetal
| acceleration vector are balanced by a normal vector perpendicular
| to the rails. During a derailment, the ball has to lift away from
| one of the two contact points, so the normal force must have
| dropped to zero.
| WillMorr wrote:
| It's actually much weirder than that: banking changes the axis
| of rotation and thus kills the rotational inertia. The tracks
| bank super aggressively in order to prevent the ball from
| accelerating too much and hopping the track. This is part of
| why the descent is so smooth and all the balls move at more or
| less the same speed.
|
| Also to be fair the final system does lose a ball every 30ish
| minutes. The tuning was largely me staring at the run or taking
| a video trying to catch where they get lost. Instead of hand
| tuning I would just update the generator and print another one.
| I'm considering closing the loop with a camera but that would
| be a whole new project.
| sixtyj wrote:
| For roller coasters there is a software for simulation. It is
| imho similar situation compared with balls in your Marble
| Fountain
|
| https://www.nolimitscoaster.com/
|
| First, I thought about Ansys or CATIA software but I couldn't
| find any module specialized for simulation of balls.
|
| But I think that people from those companies could help as
| well and participate in simulation as an interesting usecase.
| (These software are expensive for personal projects.)
| djmips wrote:
| Well except for this is SIM only whereas the OP (WillMor)
| is making them for real with a 3D printer!
| sixtyj wrote:
| My point was that these software could help to find weak
| parts in trajectory - so instead of trying to figure it
| out by looking where balls are too quick to fall from the
| ride - you can simulate it. I saw real tramway simulation
| done in Ansys.
| stavros wrote:
| I think the physics are different, a ball is basically a
| car without a differential, so it's going to behave
| differently on the tracks. I'd imagine the ball is harder
| to simulate because of that.
| bazzargh wrote:
| One of the results for hilbert curve marble tracks,
| mentioned elsewhere in the thread, was a video showing
| how to make one in blender, which has a physics engine so
| it can simulate it pretty well.
|
| https://www.youtube.com/watch?v=8YeXyUNCnhM
|
| I'd imagine that the 3d-printable models could be
| imported into blender, so it's 'just' adding balls and
| motion to the lift.
| sixtyj wrote:
| You can simulate everything in these professional (and
| expensive) software.
|
| https://ansyshelp.ansys.com/public/account/secured?return
| url...
|
| But for hobby purposes I would suggest to contact some
| university, they have such software, and they could find
| simulation of balls motion at marble fountain interesting
| for research (and educational) purposes.
| adzm wrote:
| Does the temperature of the track change much after thirty
| minutes?
| 4gotunameagain wrote:
| Good thinking! Although I think that would result in a
| change of the failure rate, whereas in this case it appears
| to be constant.
| WillMorr wrote:
| I haven't actually measured it but that's a good thought, I
| may borrow a thermal camera and do some testing! It's not
| noticeably warm to the touch but this functionally a system
| that converts potential energy into heat and sound so
| there's probably a measurable change.
| hdjrudni wrote:
| > That's the thing here: he has it running for hours presumably
| without any ball jumping out.
|
| You can see a ball on the ground at the end of the video :-)
| ljsprague wrote:
| My naive guess would be that you can't change the route of the
| ball without asymmetrical track pressure.
| rjmill wrote:
| Not to dimish the achievement, but TFA is pretty clear about
| the limitations of the piece:
|
| > I was able to get it working consistently, although it did
| lose 2-3 balls an hour and could only run for a few hours
| without the motor overheating.
|
| IMO that's more impressive to hear than if he hadn't mentioned
| it at all. (I would have assumed more marbles getting lost.)
| fho wrote:
| Just nitpicking, but there is at least one ball next to his
| contraption in his video :-)
|
| Doesn't make the whole thing less remarkable.
| jjcob wrote:
| You are missing inertia!
|
| The state of each ball can be described by 9 parameters: the
| current location of the center of mass (x,y,z), the current
| linear velocity (vx, vy, xz) and the angular velocity on 3
| axes.
|
| I don't think the forces acting on the rails need to be similar
| -- they just need to be such that the acceleration of the ball
| is always parallel to the track. Unfortunately the equation of
| motion will look pretty ugly and optimizing the system will be
| quite a challenge.
|
| And finally, the system has to be stable, ie. small
| perturbations should be cancelled rather than grow - if a ball
| gets a little too fast there should be something like a bend
| that slows it down, but that bend should at the same time not
| slow down a ball that is already too slow...
| there4 wrote:
| Another parameter - as a track designer you can manipulate
| the width of the track to change the ball speed. It raises
| and lowers the ball on the track, changing both the rolling
| diameter and the center of gravity. This can be used to make
| subtle changes to the ball speed before a turn.
| hinkley wrote:
| Maybe it's the color and this would look better in a brighter
| shade, but I hate it. It looks wrong. Malignant.
| hinkley wrote:
| I bet this would look baller with green rails and brown
| supports. Also might help with losing the balls visually as
| they get to the bottom. The visual noise makes them harder to
| track.
| underdeserver wrote:
| It looks like Bones from Hades 2. Beautiful, and super cool.
| bix6 wrote:
| Super cool! I would love to see a white / clear one with LEDs.
| Rainbow road :)
| Taek wrote:
| White/clear is just a matter of picking filament, I'm not sure
| LEDs would be easy to incorporate into the build
| WillMorr wrote:
| I've actually done clear prints with LEDs installed. The bottom
| is much brighter than the top and it just look kinda tacky. I
| briefly hollowed out the supports and tried running fiber
| optics but it didn't help much.
|
| I'm realizing now that I tried a lot of weird shit during this
| project that just did not work at all or make it into the final
| product, I should do another video just of all my failed
| abomination marble runs.
| gaudystead wrote:
| Please do! Also just some footage of the machine running from
| specific angles for a few minutes would be lovely! Nice work!
| :)
| ashepp wrote:
| Stl?
| titanomachy wrote:
| The particle simulation approach to generating an organic "tree-
| like" support structure is super creative! If I'm understanding
| correctly, you defined some laws of physics and then ran a
| simulation with the "time" dimension mapped to the z-axis? Is
| this a well-known approach, or something you came up with?
|
| Either way, it produces a beautiful aesthetic. I'd love to play
| around with this idea.
| WillMorr wrote:
| That's pretty much it! It's the simplest method of supports I
| could come up with that allows for robust keepout zones. I did
| have a bunch of issues at first with supports blocking the path
| but with a little tuning it became surprisingly consistent. I
| doubt I'm the first to come up with it but I have not seen any
| similar systems.
|
| Thank you! The emergent forms are much more interesting than
| they have any right to be for such a simple system.
| froh wrote:
| > The emergent forms are much more interesting than they have
| any right to be for such a simple system.
|
| hehe I wonder if this is how evolution in nature "comes up
| with" beauty :-D
| ljsprague wrote:
| Gorgeous!
| ljsprague wrote:
| Why isn't the top-down footprint a square?
| codr7 wrote:
| Up next: https://www.youtube.com/watch?v=IvUU8joBb1Q
| 3oil3 wrote:
| Just wow.
| ch_fr wrote:
| Awesome project, I love to read about all kinds of different
| procedural generation approaches!
| worldmerge wrote:
| Will this is incredible! I've been learning openscad and making
| 3d models with it using python and this is such an inspiration.
| Check out the latest nightly version of openscad it's
| significantly faster, like seconds vs multiple minutes on my
| exports.
| frenchie4111 wrote:
| This is awesome! I'd love to print one for my office. Any chance
| there is an stl around I can print without having to get the
| script running?
___________________________________________________________________
(page generated 2025-11-10 23:01 UTC)