Skip to content

Tutorial 3 — A Tour of Joints

Goal: meet the three workhorse joints — Revolute, Prismatic, and Spherical — by attaching each to the same body and watching how differently it moves. You'll build an intuition for the single most important idea in multibody dynamics: a joint is defined by the freedom it leaves, not the parts it connects.

Time: ~15 minutes · Prerequisites: Tutorial 2 (you can add a body, add a joint to ground, set a pivot and axis, Solve, and play back), signed in to BriskFyr in your browser.


Concept — joints remove degrees of freedom

A free rigid body has 6 degrees of freedom (DOF): 3 translations (X, Y, Z) and 3 rotations. A joint takes some of those away and leaves the rest. What's left is the motion the joint allows:

Joint DOF removed DOF left The motion it allows
Revolute (hinge) 5 1 rotation spins about one axis only — a door hinge
Prismatic (slider) 5 1 translation slides along one line only — a drawer runner
Spherical (ball) 3 3 rotations rotates freely about a fixed point — a hip joint

We'll attach each one to the same offset body and see exactly these motions. (Counting DOF this way — 6 per body, minus what each joint removes — is how engineers check a mechanism can move before they ever run it; it's called a Grübler / mobility count.)


Set up the test body

1. Build one raised, offset body

Add a Node (Build ▸ Node) and set its Position to X = 0.5, Y = 0, Z = 2. Add a Rigid Body on it (Build ▸ Rigid Body, 1 kg).

Expected: a 1 kg body sits 2 m up and 0.5 m to one side of the origin. That 0.5 m sideways offset is the moment arm — it's what lets a hinge or ball swing (a body sitting on its pivot has nothing to swing about, as you saw in Tutorial 2).

Body_1 on a node at (0.5, 0, 2) — floating 2 m up and 0.5 m to one side of the grid.

We'll now attach three different joints to this same body, one at a time, each anchored to ground at (0, 0, 2) — directly above the origin, level with the body.


Joint 1 — Revolute (a hinge: 1 rotation)

2. Add a Revolute and aim it

Add a Revolute (Joints ▸ Revolute) — it connects Body_1 to Ground. In the Inspector set: 1. Pivot (global) → (0, 0, 2) — move the hinge to the anchor point, 0.5 m in from the mass. 2. Hinge axis → (0, 1, 0) — horizontal (along Y), so gravity can swing it. (A fresh Revolute defaults to a vertical axis (0, 0, 1), which wouldn't swing — same crux as Tutorial 2.)

3. Solve and watch

Set the run (Solve tab ▸ Duration 3 s, Time step 0.01 s) and Solve. Play it back.

Expected: the body swings down and up in the X–Z plane only, like a falling arm hinged at (0, 0, 2). It cannot move sideways (Y) and cannot twist — the hinge permits exactly one rotation.

The arm mid-swing, rotating about the horizontal hinge at (0, 0, 2) — motion confined to the X–Z plane.

4. See what the joint carries

Turn on the reaction overlay for the joint (select the Revolute; the reaction force/torque arrows appear at the pivot). Scrub through the swing.

Expected: an arrow at the hinge shows the reaction force the joint must supply to hold the body on its circular path — largest at the bottom of the swing (where the body is moving fastest). This is the load a real bearing at that hinge would feel.

Reaction-force arrow at the hinge during the swing — largest near the bottom, where the body moves fastest.


Joint 2 — Prismatic (a slider: 1 translation)

5. Swap the hinge for a slider

Delete the Revolute (select it in the Inspector, delete). Add a Prismatic (Joints ▸ Prismatic) on Body_1 to Ground. Set its Pivot (global) → (0.5, 0, 2) (leave it at the body) and leave the Axis = (0, 0, 1) (vertical — the default is exactly what we want here).

6. Solve and watch

Solve again (same run settings).

Expected: the body slides straight down along the vertical axis and does not swing, tilt, or drift sideways. Gravity pulls it along the one direction the slider allows; every other DOF is locked. Compare with Tutorial 1's free fall — same downward motion, but now the joint forbids all rotation and sideways drift.

The body partway down its vertical slide — still at X = 0.5, upright, no rotation or drift.

Try this: change the prismatic Axis to (1, 0, 0) (horizontal) and re-Solve — now the body doesn't move at all, because gravity (−Z) is perpendicular to the only direction it's allowed to slide. A slider only moves if a force has a component along its axis.


Joint 3 — Spherical (a ball: 3 rotations)

7. Swap in a ball joint

Delete the Prismatic. Add a Spherical (Joints ▸ Spherical) on Body_1 to Ground, and set its Pivot (global) → (0, 0, 2) (back to the anchor, like the hinge). A spherical joint has no axis — that's the point.

8. Solve and watch

Solve again.

Expected: the body swings from the fixed pivot much like the hinge did — but it is free to rotate in any direction, not locked to one plane. The pivot point itself never moves (all 3 translations are removed), while all 3 rotations remain.

The body swinging from the ball pivot at (0, 0, 2) — free to rotate in any direction, pivot fixed.

Try this: give the mass node a small sideways initial velocity (e.g. Y = 0.5 m/s in the node's Initial velocity field) and re-Solve — the body now traces a cone / ellipse instead of a flat arc. A revolute could never do that; a spherical joint's three rotational DOF can.


Verifiable outcome

You attached three joints to one body and got three distinct motions, each matching its DOF:

  • Revolute → swings in one plane about one axis (1 rotational DOF).
  • Prismatic → slides along one line, no rotation (1 translational DOF).
  • Spherical → rotates freely about a fixed point (3 rotational DOF).

That's the whole mental model: pick the joint whose leftover freedom is the motion you want.

The rest of the library, in one line: BriskFyr's other joints are combinations of these — Cylindrical = revolute + prismatic on the same axis (slide and spin, 2 DOF), Planar = free to move in a plane (3 DOF), Fixed/Weld = all 6 removed (rigidly locked, like a Clamp between two bodies). You'll meet them in the joints deep-dive; the three here cover the vast majority of real mechanisms.


Load the finished model

(Pending — there's no joints-tour button in the Demos group yet, so this tutorial is build-from-scratch. See plan decision D-A.)

Troubleshooting

  • The Revolute won't swing → its axis is still vertical (0, 0, 1). Set Hinge axis = (0, 1, 0) (Step 2). Same trap as Tutorial 2.
  • The Prismatic body doesn't move → its axis is horizontal, perpendicular to gravity. Set Axis = (0, 0, 1) to let it fall along the slot (Step 5).
  • A joint button is greyed out → you need a Body first (Step 1), and the previous joint should be deleted before adding the next (we're reusing the one body).
  • The body flies off / behaves wildly → check the pivot is at (0, 0, 2) for the hinge and ball (not left at the body); a mismatched pivot can over-constrain or fling the body.