Around April 2021 I came in contact with a small group of enthousiasts, who were investigating an old Dutch made construction toy called: Mobaco (1924-1956).

After reading some posts & discussions, I wanted to anticipate to this research, but from a bit different angle:

Why not make this building toy available in 3D, so everyone could build & play with this?

It’s not only storing cultural heritage, but also for experiencing these various system (virtually). It’s also a nice programming challenge, playing around with 3D environments and potential doing something use-full…

What is Mobaco?

Mobaco consists of thick cardboard base plate with square holes. Wooden columns of various heights could be inserted. With various cardboard like pannels a building structure could be created. Mobaco also used a very efficient building plan system and so having all parts are numbered.

Mobaco came with many different sets (first two sets in 1924) and many different example buildings. Here a building example of Set-3 Model #75.

For more information about Mobaco construction game: mobaco.nl.

LeoCAD & LDraw

LeoCAD seems to be a great tool to re-use, since it’s freely available and working on multiple platforms: Windows, Linux and macOS. Its intended use is building with a virtual Lego library. So that is basically what is needed, right?!

The available Lego library is created in LDraw format, which is nicely documentated. So basically what needs to happen is replacing this Lego library with a Mobaco library… How hard can that be?

The Mobaco library…

Okay the journey started:

  • How to create a single LDraw part?
  • How to create a custom LDraw library?
  • How to replace the library inside LeoCAD?
  • How does Mobaco match with LDraw units?
  • Workflow: How to create these 100+ parts in an efficient way?
  • Sharing: How/where to share this library? Will there be any user at all?

Well, the first 3 bullets are nicely documented on corresponding websites.

LDraw parts

Let’s briefly talk about a single LDraw part: For instance a 2×4 Lego brick, consists of 8 studs, 4 walls and a bottom structure. The LDraw library is broken down in smaller elements, so the geometry of 1 studs is pre-defined already and 8 times refered to, in this 2×4 brick and so could this brick created from multipe pre-defined shapes.

But Mobaco geometry is way different, so these pre-defined Lego geometries don’t work, I’ve to create my own. Alhough the idea behind re-useable defined sub-geometries is nice, I’m looking for a bit more straight forward approach: every part has it’s own geometry included.

LDraw part colors

A standard LDraw part is colorless. The colors are selected by the modeller (like LeoCAD) and this color is stored together with part placement in a model definition. Inside a LDraw part, the color is defined by a Meta-tag:

0 !COLOUR current colour CODE 16

Most Mobaco parts having only one or two colors. Builing with Mobaco, is most easy, when these colors are already pre-defined. That’s why the Mobaco LDraw files are pre-colored and this color cannot be changed by a modeler.

LDraw units

All the vintage toys are re-designed in a CAD program. The units inside my CAD program are in [mm] and on scale with the real game. But LDraw units are specified in LDraw Units [LDU]:

LDraw parts are measured in LDraw Units (LDU):

  • 1 brick width/depth = 20 LDU
  • 1 brick height = 24 LDU
  • 1 plate height = 8 LDU
  • 1 stud diameter = 12 LDU
  • 1 stud height = 4 LDU

Real World Approximations:

  • 1 LDU = 1/64 in
  • 1 LDU = 0.4 mm

An other topic is the LDraw coordinate system, which is orientated different then most CAD packages..

LeoCAD part placement

Part placement in LeoCAD is easy, using grids & snapping tools. But these snapping tools are all based on Lego dimensions: studs, plates & bricks. Especially the horizontal direction, it’s handy to use LeoCAD snapping tools.

Scaling → Version 1.1

For instance Mobaco is having a pitch distance of 57.5mm, which is not nicely scaled with the Lego snapping functionality.

The best compromise for mixing LDraw library with vintage toys:

Due to snapping functionality, raster visability & easy of use/building, all vintage buildings are scalled roughly to 80%, compared to the Lego LDraw library.

The version 1.1 compatibility looks like this:

So what about an efficient workflow, converting real parts into LDraw system?

Workflow: Creation of custom LDraw Library

Well, I like to draw all Mobaco parts in one CAD-file, drawn at real dimensions, it’s simply the quickest way generating new geometries. And so this CAD library also acts as virtual copy of the game and potential remakes of these parts will fit the real system.

The only way, I’m able to access these geometries, is by exporting these CAD geometries into STL files. Then convert these STL files into LDraw files. STL files consists of uncollored triangular faces, which should form 1 complete closed volume. A couple of things happening during this STL to LDraw conversion: different geometry reprensentation, re-positioning, scaling, orientation, coloring/texturing & some meta tags are added.

So just re-invented the wheel, by writing a 3D conversion tool in Python. It’s basically reading a CSV file -containing all conversion data needed-, combined with all necessary STL files and exports these to the current LeoCAD parts libary. This contains mainly the top row of the picture blow.

Now the LeoCAD library is replaced within LeoCAD, it’s possible to:

  • Create new/open existing buildings, based on Mobaco library
  • Store building definitions (.LDR/.MPD files)
  • Export pictures (.PNG)
  • Export Bill of Materials (.CSV/.PDF)
  • Creat building plans (.PDF)

Textures

An other topic are textures. Within the Mobaco library there are very few textured parts (2 clocks & -never found- flag), all other parts are (currently) using pre-defined solid color.
These textured parts are basically simple geometries (a rectangle) with a (transparant) picture projected on. This conversion process is semi-automated.

PovRay

The PovRay rendering module in LeoCAD doesnot work with the pre-colored parts from the LDraw Mobaco library. So like the LDraw library, there is a second conversion script, extracting a seperate PovRay library (.INC) from the STL database. (This time the outgoing library units are in meters.)

Since PovRay doesn’t know where to place those library parts, also the building model (definition) needs to be exported, to a readable PovRay file.

With PovRay it’s possible to program a moving camera position, so pictures for animations could be rendered. These pictures are manual uploaded to this great website: ezgif.com and so the animated GIF’s are created.

What happend next…

Beside Mobaco, we started to investigate more vintage/antique toys and so the library also expanded…

More information & Downloads

For more information about digitalized vintage toys: the collection.

All released libraries could be found on Cults3D.

Installing these libraries in LeoCAD.

Geef een reactie

Je e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *