Coby of tubafrog.com takes the cake. Hard to believe this was all done in
POV-RAY (except the last bit). This is the sort of thing I want to do with
SKDB eventually, but for any manufacturing process, not just snapping
bricks together:
assembly sequences:
http://youtube.com/watch?v=AFwegptAWgA
http://youtube.com/watch?v=wauEdP2jGS4
http://youtube.com/watch?v=JNyiC6udVFk
http://youtube.com/watch?v=dX4oItFzH7Q
kinematics and gears:
http://youtube.com/watch?v=Z1zFaS7q-0Q
http://youtube.com/watch?v=ZJfSbjW2SVs
last but not least, physics simulation:
http://www.youtube.com/watch?v=jUav4Nq497k
if for whatever reason you can't see youtube videos, the still images are
pretty amazing
http://www.tubafrog.com/lego/images/6987.jpg
http://www.tubafrog.com/lego/images/4956%20-%20Creator%20House.jpg
http://www.tubafrog.com/lego/images/951.jpg
And now it works, sorta.
First we specify the interfaces in HeeksCAD: (the origin marks)
http://adl.serveftp.org/lab/fenn/stone-presentation/lego_heeks.png
then extract coordinates from the .heeks file and add them to the yaml file:
http://adl.serveftp.org/lab/fenn/stone-presentation/lego_yaml_interfaces.png
now pick a pair of studs and anti studs and translate one brick
appropriately:
http://adl.serveftp.org/lab/fenn/stone-presentation/lego_demo1.png
http://adl.serveftp.org/lab/fenn/stone-presentation/lego_demo2.png
there are multiple solutions to the problem of course (512 to be precise)
here is another one:
http://adl.serveftp.org/lab/fenn/stone-presentation/lego_demo3.png
theoretically this should work for any pair of legos, we just need people
to input data about each one.
it'll be a while yet before we can put together more than two legos :(
Not bad at all, and where do you specify that "anti stud" goes
together with "stud cup" and not with another anti stud?
http://adl.serveftp.org/git/gitweb.cgi?p=skdb.git;a=blob_plain;f=packages/lego/grammar.yaml;hb=HEAD
in this file:
http://adl.serveftp.org/git/gitweb.cgi?p=skdb.git;a=blob_plain;f=packages/lego/grammar.yaml
(actually "anti stud" only goes with "stud" as far as i know.. one of the
screenshots in that directory was wrong, which I have now corrected)
it's not complete - technic has some weird stuff like chain links and
pneumatic tubing which I don't have any experience with, and there are a
lot more tire types than I expected so I might have to figure out a better
way to do that.
> it'll be a while yet before we can put together more than two legos :(
You can now create random Lego creations with 4 different bricks!
It "only" took a week or so, once I discovered there was a bug in how OCC
handled transformations. Anyway, here's some screenshots:
http://adl.serveftp.org/lab/fenn/pngs/lego_snapping.png
http://adl.serveftp.org/lab/fenn/pngs/lego_snapping2.png
http://adl.serveftp.org/lab/fenn/pngs/lego_snapping3.png
There's no collision detection as of yet; I've highlighted some goofs in
this pic:
http://adl.serveftp.org/lab/fenn/pngs/lego_snapping4.png
It should be fairly simple to add checks to make sure the requested
interface (lego stud) is not already occupied. This won't fix all possible
problems, but should work for a simple set of standard bricks like this.