Sign in to follow this  
DrJB

Lego Connectivity - Technic and Others

Recommended Posts

This topic/question has been on my mind for a while. I must warn, this might not be for the fain of heart.

In reality, there are three main/distinct parts. These are:

Inventory/Identify all the possible connections in Lego

1. Axle vs . Axle hole

2. Pin vs. Pin hole

3. Stud as in system bricks

4. Spherical ball joints as in technic tow ball

5. Ball/Socket as in Hero Factory

6. Dual small pins of Lego Factory

7. 2mm bar vs. hole in technic bricks' studs

8. ... I'm sure there are few more

Now, once all connections have been identified, organize 'all' parts based on the type of connections they have.

1. Parts could belong to a single sub-group as in axles/bushings

2. Parts that have 2 types of connections (common amongst technic parts)

3. Parts that do not mate with anything else but parts within their own family (e.g. 90617/90622)

4. Else?

Last, build a connectivity matrix of that list, for a given part, all other parts that could mate with it.

Some skills in Math/Programming might be needed

Any brave souls out there?

Share this post


Link to post
Share on other sites

Sure, we can start with the legal techniques only then extend, or go full-fledge legal/possible and see where that leads us.

This is for sure an 'academic' excursion/distraction and for sure there are people here with the right background. If you pause a minute and think about it, the people who designed LDD had to start with some sort of algorithm that handles connectivity first.

Share this post


Link to post
Share on other sites

Not sure stud in liftarm hole is illegal. Some Technic sets do that for markers, head and tail lights using 1x1round trans-color studs.

Maybe this should be in General. Some of sci fi folks do a lot of crazy connections.

Share this post


Link to post
Share on other sites

A lot of this work has already been done for the LDraw system of tools.

See http://www.ldraw.org...ence/specs/lcd/

Thank you for the reference. That is indeed a very good read, and very much in line with what I was thinking.

Again, if one pauses and thinks a bit more about the whole lego system, there is way more TLG does than just molding plastic (reminds me of another thread). Such connectivity database must be hardcoded within LDD, and yet none of this exists in the LDraw based suite (anyone knows otherwise?). Given that for any given connection, any male part can mate with a multitude of female parts (and vice-versa) complicates the math considerably. Because for any connection, there are ensuing degress-of-freedom (I'm sure Sergio SR3D has already stumbled upon this) that are allowed or not. For example pin+hole has only rotation, but must also account for smooth/friction. Likewise, the tow ball connection has 3 rotations as DOFs, but they are limited in range. So, for each type of connection, one must specify the degrees of freedom, the range/bounds for each of those, and whether they are tight/loose. The more one thinks about this, the more one appreciates (gets humbled by) the effort the TLG programmers (and mathematicians) had to invest into LDD. Connectivity itself is only the beginning, as on top of that, there ARE always exceptions: a 2x1 tile cannot mate with a liftarm (illegal in LDD), but two 1x1 tiles can (side by side). This means that the connectivity matrix (or database) not only handles general principles/connections, but most likely every single part combination !

One of the 'events' that got me thinking more about this is, I was building the yellow Aventador in LDD, and on the car's underside, the author uses the old differential, coupled to a transmission ring. Essentially as below:

6573.gif + 6539.gif+6542.gif

While building gear boxes, LDD lets you move the coupler (center part) left/right to engage either gear. If you try to engage the driving ring into the differential, LDD won't let you. Some call this an LDD bug. To me, it makes me appreciate even more the amount of work TLG must invest to make new parts available in the LDD palette. It is way beyond geometry only. The connectivity has to be right, and I'm sure there are many other part attributes I/we haven't even thought about.

I said enough for a post. Who's next?

Edited by DrJB

Share this post


Link to post
Share on other sites

none of this exists in the LDraw based suite (anyone knows otherwise?).

This has actually been implemented by several authors. You already mention SR3DBuilder, but LDCad manages connections as well (I believe using a slightly different methodology). There are also other lesser known applications that do this.

There are several threads in the LDraw forums (http://forums.ldraw.org/index.php, particularly in the Official File Specifications/Standards and LDraw Editors and Viewers subforums) that discuss this in great detail.

I have not used LDD, so can't comment there.

Share this post


Link to post
Share on other sites

You're right. I guess I was focusing on mainly technic and few system, but if you look more, I'm sure there are many types of connections possible out there, some we might have not thought of yet.

This has actually been implemented by several authors. You already mention SR3DBuilder, but LDCad manages connections as well (I believe using a slightly different methodology). There are also other lesser known applications that do this.

There are several threads in the LDraw forums (http://forums.ldraw.org/index.php, particularly in the Official File Specifications/Standards and LDraw Editors and Viewers subforums) that discuss this in great detail.

I have not used LDD, so can't comment there.

Very interesting read indeed. Bookmarked for tomorrow's lunch break.

Share this post


Link to post
Share on other sites

How about no connection? My roof is basically held on by gravity. Turn the house upside down and it falls off. :laugh:

Picture_zpsfdwjsehv.jpg

Share this post


Link to post
Share on other sites

You' right, and all this connectivity makes sense in the context of developing software that handles all the connections. Or at least, that is how the discussion might evolve. That said, i do not know of any Lego CAD program that knows about gravity or which was is up. LDD is the only one that does not tilt the z-axis, but I'm sure this was done to be easy on the young lego audience. That said, you can be assured that your roof will not fall off :)

Edited by DrJB

Share this post


Link to post
Share on other sites

Likewise, the tow ball connection has 3 rotations as DOFs, but they are limited in range. So, for each type of connection, one must specify the degrees of freedom, the range/bounds for each of those, and whether they are tight/loose. The more one thinks about this, the more one appreciates (gets humbled by) the effort the TLG programmers (and mathematicians) had to invest into LDD. Connectivity itself is only the beginning, as on top of that, there ARE always exceptions: a 2x1 tile cannot mate with a liftarm (illegal in LDD), but two 1x1 tiles can (side by side). This means that the connectivity matrix (or database) not only handles general principles/connections, but most likely every single part combination !

I think the angle limitation can be solved with the basic collision detection LDD already has, no need to have separate data.

Plus I don't think every part is added to a huge database and connectivity matrix, I think having having some kind of invisible connecting primitives added to the part models is a better way. Every part has a visible and collision meshes (I guess they are the same) and have some connection primitives too, which are invisible and override collision near or inside the connection mesh (I guess) in case of a connection is found.

The connections doesn't have to be perfectly aligned for LDD to recognize it's a connection, so I guess for recognition, LDD uses a simple cylinder-cylinder collision detection method (and I also think that the snapping feature is separate from the recognition feature. The snapping perfectly transforms the parts).

I can imagine that you only need a few types of the connection primitives and pairs. Maybe the stud+pinhole restriction between two parts is simply solved by maximizing the allowed contact number of such type to one.

I have another argument against a connectivity matrix on a part-by-part basis: Unimog tire and rim bug. If they are not orientted in the same way (the polygon-approximated connecting cylinders are not in the same angle), LDD detects it as a collision. I guess the tiny, but numerous collisions of the corners in the approximated circles collide.

Edited by Lipko

Share this post


Link to post
Share on other sites

How about no connection? My roof is basically held on by gravity. Turn the house upside down and it falls off. :laugh:

Picture_zpsfdwjsehv.jpg

The old set in place held by gravity connection. That is a good one Dr_spock, Lots of LEGO parts can fill this role.

You're right. I guess I was focusing on mainly technic and few system, but if you look more, I'm sure there are many types of connections possible out there, some we might have not thought of yet.

87994.jpg?130241b.jpg?14083.gif?02780.jpg?1

Here is another a connection that is unique for LEGO, the Light saber Bar connections. The ideal connection with the bar is usually with a clip like that on the 1x1 brick. However that not the only connection the bar can make and basically any open Studd hole the Bar can make a tight fit with it. Also if you have the right friction pin you can also insert the Bar inside that Technic pin as well but not every friction pin this will work on.

Share this post


Link to post
Share on other sites

- clips and bars (modern hinges)

- old 2 and 3 finger hinges

- hinge brick 1 x 2

- bars and the half-pin

- the half-pin and flex axle ends

- clips can hold tiles [and plates?]

- tiles [and plates?] can be put vertically between two studs on a brick/plates, although this may be "illegal".

- power function cable ends, old 9V cable ends and Mindstorms cable ends

- unimog ball joints

- wheels and tires...

- the CV joint

- pulleys and rubber bands

- the old toothed angle connectors, toothed bushes and technic 1xN plates

- knob wheels

- the very old gears

- 8880 ball joints and hub elements

- the 8466 black wheel connector, CV joint spindle and yellow housing element with ball joints

- pneumatic tubing and everything they connect to (including connectors and bars)

- fibre optics cable and corresponding light brick

- flex system ends and cables. Flex system cables and soft axles

- the bottom of the new brick separator fits on 2xN plates

- you can put a normal Technic pin in the bottom of a 1x1 brick, but that might be illegal.

Somewhat more far-fetched, but technically they are connections:

- the halves of a turntable [each type separately]

- the Unimog hub spindle and housing element

- the plug in the old 9V train controller ;)

Edited by Erik Leppen

Share this post


Link to post
Share on other sites

DrJB, I am currently working on a similar project. I have had converted ldr released files of Lego sets in a dataset and realized all the transformation matrix to get the vertices, so that I can analyze Lego architecture. I am currently reviewing my work, before diving into a connector database analysis. Anyone willing to tag along in this review?

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.