Skip to content

Harlem Globetrotters (Bally 1979)

A Blender toolkit build notable for the spinner dual-bakemap cross-fade technique, trigonometric spinner rod animation code, layer separator debugging across toolkit versions, and movable object setup documentation. Key contributors: apophis79, mcarter78, retroritchie, cyberpez, benji084, and tomate80.

Build Story

The Harlem Globetrotters build advanced the toolkit's handling of animated objects, particularly spinners which require special baking and animation approaches compared to simpler movable objects like drop targets.

Table-Specific Details

Mechanisms & Hardware

  • Spinner dual-bakemap technique: Spinners require two baked positions (0 and 180 degrees flipped) with opacity cross-fading during rotation based on currentangle. The 180-degree version must be slightly larger (e.g., scale 0.575 vs 0.570) to prevent z-fighting when both meshes overlap during cross-fade. HDRI dependency: spinner lightmaps render incorrectly (dark on back face) without a world HDRI applied in Blender.
  • Spinner rod animation: Trigonometric positioning using Sin functions based on spinner current angle, with an offset factor accounting for vertical shift when the spinner flips. BTTF (Back to the Future) has the canonical spinner rod animation code by gtxjoe. Each spinner's geometry requires different offset constants -- trial and error with multipliers.
  • Toolkit movable object setup: Local axes must align with the rotation axis for animation. Movable objects hidden from other objects' bake passes to avoid baking their shadows into static lightmaps. Static rendering must be unchecked in VPX. Each movable needs its own UV unwrap.
  • Kicker arm pivot: Arm mesh imported separately from kicker body with correctly placed pivot point for rotation animation.

Art & Visuals

  • Layer separator material issues between Blender 3.6 and 4.1: Lights not visible through plastics when layer separator enabled in 4.1. Root cause: copy-pasting the layer separator object between tables caused material conflicts with duplicate materials. Fix: import materials from the toolkit library rather than copy-pasting between tables. Key tuning values: decal material alpha 0.8, separator z-value adjustment (try 0.2 if plastics look dark).
  • 31-character name limit affected this build: toolkit-generated names like BP_Spinner_sw25_Wire can exceed the limit, causing duplicate name conflicts and script reference errors.
  • VR reflection artifact: White bar reflection from backbox area -- the fully-lit bottom surface reflected onto the playfield. Fix: uncheck "reflections enabled" on the Pincab_Cabinet primitive or make the bottom surface black.
  • Refraction probes for clear plastics: Adding a refraction probe to Layer 1 gives plastics a realistic slightly clouded appearance -- a post-bake VPX-side enhancement.

Known Issues

  • Insert brightness differences between 2x and 3x multiplier inserts were too subtle to distinguish in VR. Insert brightness levels for different game states need sufficient visual contrast for VR readability.
  • Ball occasionally kicked back into trough from plunger lane. Fix: add a one-way gate at trough exit.

Techniques Developed Here

  • Spinner dual-bakemap cross-fade with size offset to prevent z-fighting
  • Spinner rod trigonometric animation code
  • Layer separator material import rule (library, not copy-paste)

See Also