# The Physics Behind BMC's Simulate Mode
### A field guide for AFOLs — what it is, how it works, and what to expect

*Revised 10 September 2026. Supersedes the August edition; the sections on imported models,
engines, turntables, followers and Drive are new.*

BMC's Model Designer has a **Simulate** button. Press it and your build comes alive: towers
stand or topple, pendulums swing, gear trains turn, a crank swings its rods and pistons, a
turntable carries what sits on it, and a Technic clock keeps time at 129,600:1 reduction.
Nothing on screen is a canned animation. Every motion is computed, every run, from the model
you actually built, whether you built it in BMC or brought it in from Studio, LDCad or an
MPD file.

This document explains how that works, in builder's terms, and where we are honest about
shortcuts.

---

## The short version

When you press Simulate, BMC reads your model the way an experienced builder would. It works
out how every part is held to every other part, decides which groups of parts must move as one
rigid piece, which joins can pivot or slide, which axles carry torque, and where power comes
from. Then it hands that description to a rigid-body physics engine, the same kind of software
that powers modern video games, and lets gravity, contact and motors do the rest, 60 steps per
second, in real LEGO dimensions. One LDU is 0.4 mm and gravity is real-world strength.

There is no choreography layer. The clock on our landing page is not a video of gears that
were told how to rotate. It is the actual clock model, simulated, filmed while it ran.

## How it reads your model

Every part in BMC carries its real connector geometry: where the studs, anti-studs, pin holes,
axle holes, bars, clips, hinge fingers and ball sockets are, in exact LDraw coordinates. That
geometry is extracted from the LDraw part library and the LDCad shadow library, with a small
set of hand-authored corrections where those libraries describe a part in a way the simulator
cannot use. The turntable base is one such part: its central boss is declared as a
plain cylinder upstream, and BMC's own description of it is what lets a plate gear sit on it
and turn.

At Simulate time BMC plays apprentice builder:

1. **Find every join.** It scans the model for connector pairs that are compatible, aligned
   and sitting on top of each other. A plate seated on a brick, a pin through two beams, an
   axle through a gear hub, a bar in a clip, a rod's ball in a piston's socket: each becomes
   a *connection*. For a model you built in BMC these are already known from snapping. For an
   imported model they are inferred from geometry when the file is opened, and inferred again
   for any part whose catalogue description has changed since the model was saved.
2. **Group the rigid parts.** Everything held by rigid joins is merged into a single moving
   body. A snapped-together sub-assembly genuinely *is* one rigid object, which is also how the
   simulation stays fast on big models. It simulates assemblies, not thousands of loose bricks.
3. **Classify what each join allows.** This is where real LEGO behaviour lives; see the table
   below.
4. **Find the gear meshes.** Gears are detected geometrically, never declared. On parallel axes,
   two toothed parts whose centres sit at the sum of their pitch radii and share a plane are
   meshing. At a right angle the engine knows the arrangements a builder uses: a worm beside
   the wheel it bites, a bevel pair, a double bevel pair standing off by its flank, a crown
   driving a straight-toothed pinion, and knob wheels. Plate gears on a turntable mesh at their
   own pitch. If you space two gears wrong they simply do not mesh, exactly as in plastic.
5. **Work out what power reaches.** Starting from each driven shaft, the engine grows the
   moving train outward through torque-carrying joins and detected meshes until nothing more
   is reached. Bearings inside that train stay free, so a driven axle turns in its bush.
   Bearings outside it are welded solid, so an idle axle that happens to pass through a beam
   does not become a pendulum. This is the single biggest change since the August guide, and it
   is what lets a 1,500-part Technic motorcycle import run without shaking itself apart.
6. **Anchor or rest.** A model with any Drive is bolted to the ground: to your baseplate if it
   has one, to the widest plate under it if it stands on its own plate, or to an invisible bench
   otherwise. A motor's reaction torque will spin the machine itself if you do not, and every
   builder who has watched a chassis rotate instead of its wheels knows this one. Models
   without a Drive *rest*: they stand on the plate if they are stable and topple if they are
   not.

## The rules it knows

| Connection | Behaviour in simulation | Real-world counterpart |
|---|---|---|
| Stud on anti-stud | Rigid weld | A studded joint does not move |
| Friction pin in hole | Rigid where the pin's own row is a pin; a free hinge otherwise | A friction pin holds, a smooth pin swings |
| Axle through axle hole | Rigid, torque-carrying | A cross-axle drives what it passes through |
| Axle end in a round hole | Free bearing, or a journal in a moving train | A shaft in a bush; a crank pin in a rod |
| Plate gear or turntable top on a turntable base | Free bearing | The turntable turns |
| Ball in socket | Spherical, or a swing hinge where a rod meets its piston | A rod's little end |
| Piston in a bore | A slide along the bore | A piston stroke |
| Bar in clip, hinge fingers | Their real degrees of freedom | A clip, a hinge |

Three details are worth calling out, because they are the difference between a toy and a
tool:

- **Axles transmit torque.** An axle through a gear hub welds that gear to the axle, which is
  why a motor on one end turns a gear on the other. This one rule is what makes gear trains
  *emerge* rather than be declared.
- **Cranks are understood.** An axle pin riding in a rod's hole is a journal, not a weld, and
  a rod's ball in a piston is a hinge, not a socket that locks. A crank web with pins in it turns
  as one piece with its pins. That is enough for a single, an inline four, a V8, a U12, an H16,
  an X24 and a master-rod radial to run from their real Technic parts.
- **Connections can break.** Joints carry strength tiers that mirror real clutch strengths,
  rigid, friction and free. Hammer a joint with enough force and it lets go.

## Motors, Drive and gear trains

Power comes from a **Drive**. You can place a real motor, whose output hub drives whatever
is pushed onto it. The simulator knows nine of them: the Power Functions Medium, Large and
XL motors, and the Control+ Small Angular, Medium Angular, Large Angular, Medium, Large and
XL motors. Any of them placed in a model is recognised as the frame a shaft turns in and
as the power source, and if you press Simulate on a model with a motor and no Drive set, BMC
drives the motor's hub for you at 60 rpm. You can also put a Drive on any axle or hinge
directly, at any rpm, forward or reverse, from the Drive panel, and **Suggest Drive** ranks
the joints in your model that are worth driving, drivetrain gears first, bare axles and
hinges after. Drives are saved with the project.

While a simulation runs, a **throttle** pedal lets you run each drive between 0 and 100 per
cent of its target, and a **Driveline** view fades or hides everything power does not reach,
so you can watch the mechanism on its own. The status line tells you what is running:
"1 motor running · 5 gear meshes engaged".

A Drive is exact. The driven shaft is held at its target speed, and gear meshes are then driven
exactly too: tooth counts fix the speed ratio between meshed gears, so the simulation enforces
the ratio as a constraint rather than hoping tooth-by-tooth contact gets it right. Individual
teeth are not modelled; more on that below. The practical consequences:

- A 24:1 worm stage holds 24:1 to the digit, hour after hour.
- Meshed gears never fight each other physically. Their contact is suppressed and replaced by
  the exact ratio, which is both faster and far more stable.
- Everything power does not reach is bench-solid. No rattling links, no drift, no broken
  joints, regardless of how big the import is.

Gears also collide as what they are, **discs**, not boxes. Two wheels whose circles clear each
other never interact, even where their bounding boxes would touch. The geometry audit that
enforces this has caught real layout bugs.

## Followers: things that move because something touches them

Not everything in a mechanism is jointed to it. The penguin on one tester's turntable model is
rocked by a bar from its own pivot that hangs between two axle pins on a sliding cage. Nothing
connects the penguin to the cage; the cage pushes it.

BMC handles this as a **contact follower**. When an assembly is not part of the frame, would
come loose if its idle bearings were cut, and is touching a moving part, its bearings are left
free and its contact with the mechanism stays on. The penguin tilts because the cage hits it,
which is what the plastic does. A hinged lid resting on two smooth pins behaves the same way.

## What you can expect

- **Honest gravity.** Unstable builds topple; stable builds stand. The staircase demo topples
  because its centre of mass genuinely leaves its base.
- **Hinges with real limits.** A flap falls until something stops it, a declared range *or* a
  physical stop you built.
- **Settle.** One button runs the model at full speed until every part is at rest and tells
  you whether it stood and what moved, the answer to "does it stand?" without watching it.
- **A verdict.** After a run, Simulate reports whether the model held together and stood, and
  what speed every shaft turned at.
- **Imports that behave.** A Studio .io, an MPD or an LDR opens with its connections inferred
  from geometry, and if a part's description has improved since you saved, the affected
  connections are re-inferred when you open it and you are asked to save.
- **A mechanism summary on MOCHub.** When you save from the designer, a short summary of what
  the simulation found, how many bodies, joints, drives and meshes and whether it is
  motorised, travels with the model and shows as a badge on its MOCHub page. Version diffs read
  it too, so "the crank now drives the second bank" is a line in the history, not a mystery.
- **The Examples menu.** Every demo scene has exactly one physically unambiguous outcome that
  an automated suite asserts. It is a demo reel *and* a test bench.
- **The landing-page film.** The cinematic on the front page is the real Technic clock, 20
  gears, 11 shafts, 129,600:1, simulated by this exact engine and filmed while it ran. The
  on-screen disclosure tells you the truth about playback speed: the physics always runs at
  real rates; the film shows you more seconds per second so the hour hand is worth watching.

## Where it is honest about shortcuts

No simulator models everything, and we would rather tell you the edges than have you find
them:

- **Teeth are not modelled individually.** Meshing gears are held at the exact pitch distance
  with their contact suppressed and the ratio enforced. Visually and kinematically this is
  indistinguishable at any sane speed. It means gear teeth cannot chip, jam on debris, or
  transmit shock loads through the mesh.
- **Driven shafts are prescribed.** Once a train is turning, every stage is held at its exact
  derived speed rather than pushed through tooth contact. Loads do not propagate backwards
  through a train.
- **A jammed train does not jam.** This is the sharp edge of the point above, and the one most
  likely to surprise you. Because a driven shaft is *told* its speed rather than pushed to it,
  nothing downstream can stop it. Build a gear train into a wall, or bind a gearbox that would
  seize in plastic, and the simulation turns it anyway; the parts pass through the obstruction
  instead of stalling against it. So Simulate will tell you truthfully whether a mechanism
  *fits together and turns*, and will not tell you whether it *would survive its own load*.
  For a heavy GBC or a tightly packed gearbox, that is the question you still answer with
  plastic. Motor authority in the Drive panel is a solver setting, not real-world torque.
- **Parts collide as boxes.** Apart from gears, which are discs, and bars, pins and axles,
  which are capsules, a part's collision shape is its bounding box. Curves and teeth cannot
  bind, and a part cannot pass *through* an opening narrower than its box.
- **Some gear families still turn no corners.** Right-angle drive covers bevel and double bevel
  pairs, a crown driving a plain pinion, knob wheels including the 45° variant, and the
  turntables' plate gears. It does not cover **differentials**, whose housing simulates as an
  ordinary part while the bevel gearing inside it does not turn, or Duplo gears, which are on a
  different tooth module altogether. A pairing the engine does not recognise simply does not
  mesh. You will see the driven shaft sit there rather than turn at a wrong ratio.
- **Chains and belts show but do not drive.** A flexible chain from LDCad renders on an
  imported model, and its links sit where the file put them, but power does not cross a chain
  or a belt. Drive the shaft on the far side directly if you want to see it turn.
- **Studded joints are ideal.** A seated stud is a perfect weld: no micro-creep, no clutch slip
  below the break threshold, no stud friction. Plastic has a little give; the simulation's
  joints do not, until they break.
- **Driven shafts wobble a hair.** Under sustained drive a shaft can oscillate a fraction of an
  LDU inside its bearing, solver churn that is sub-pixel on screen. We measure it: on the
  engine examples the crank journals drift by no more than 0.03 LDU over fifteen turns.
- **No stress, flex or wear.** Parts are rigid; nothing bends, cracks or wears out.

## How we keep it honest

The physics runs under an automated suite of 187 headless checks that rebuild every demo scene
and assert its outcome: the arch stands, the staircase topples, the pendulum's pivot stays on
its pin to within a hair, the worm train holds 1:24 through a full soak, a bevel pair holds 1:3
round a corner, a crown steps a plain pinion up threefold, every engine's pistons stroke
20 LDU with their journals on their pins, the clock's hour shaft really turns at 1:129,600,
and no two parts interpenetrate anywhere. A second harness rebuilds every scene through the
application's own data path, real part catalogue, real connector rows, and diffs it against
that suite, so what you simulate in the browser is provably the same machine the tests
verified. Another 270-odd browser specs cover the planning decisions themselves: what gets
anchored, what gets welded, what a follower is, which way a mesh turns. Geometry audits pin
every authored position to the stud grid, and a render-time check confirms each gear is thin
along its own shaft.

When the physics and the build disagree, we treat it as a bug in our understanding of the
build. That attitude is why the clock on the front page can honestly claim every ratio
emerged from the simulation, and why the turntable in a community MOC turns today when it did
not last week.

## Try this first

Open **Examples** in the Model Designer and load them in this order.

- *Archway*, to feel what "settles" means, then *Staircase*, because toppling is a
  centre-of-mass story, and *Two towers* and *Free-fall brick* for the plainest gravity there
  is.
- *Pendulum*, a rod and bob on a friction pin with a 16t for mass.
- *Motor crank*, *Gear-web crank* and *Two to one*, visible motors and exact ratios, then
  *Motor + gear train*.
- *Rack & pinion*, rotation into translation through a slot, and *Worm drive*, 1:24 in a
  single mesh.
- *Limited flap*, a hard stop you can watch it hit, and *Clipped bar*, a clip gripping a bar,
  the smallest thing that either holds or drops.
- The three that turn a corner: *Right-angle drive*, a 12t bevel into a 36t at 1:3; *Crown
  gear*, a crown stepping a plain 8t up threefold; *Knob wheels*, 1:1, the bluntest right-angle
  coupling LEGO makes.
- The engines, built from the real Technic engine parts on LEGO's own layouts: *Single-cylinder*,
  *Inline-4*, *V8*, then *U12*, *H16* and *X24*, and the three master-rod radials, *Radial-12*,
  *Radial-28* and *Radial-42*. Open the Driveline view on the V8 and throttle it down to a
  crawl.
- *MOC inline-4*, an engine built the way a MOC builder builds one, with none of LEGO's engine
  parts: thin liftarms and short axles for the crank, 3/4 pins as wrist pins, brick stacks as
  pistons sliding in walls of plain bricks, a PF motor's 8t driving a 40t rear web at 5:1.
  Twenty-seven scenes in all, every one asserted by the test bench.
- Finally the *Technic clock*, the whole idea in one build.

Then build something of your own, or import one, press Simulate, and see whether the engine
agrees with your builder's intuition. That conversation, between what you know plastic does
and what the simulation does, is the whole point.

---

*Questions, findings, or a build that behaves in a way you don't expect: please tell us, and
open an issue on the model's MOCHub page if it is published there. The simulator's favourite
bug report is "my model should do X and it does Y". That is exactly the kind of disagreement
that makes it better.*
