A portrait-first Three.js bowling campaign where launch geometry and live magnetic polarity jointly determine every pin collision.