curiositech/physics-rendering-expert
Real-time rope/cable physics using Position-Based Dynamics (PBD), Verlet integration, and constraint solvers. Expert in quaternion math, Gauss-Seidel/Jacobi solvers, and tangling detection. Activate on 'rope simulation', 'PBD', 'Position-Based Dynamics', 'Verlet', 'constraint solver', 'quaternion', 'cable dynamics', 'cloth simulation', 'leash physics'. NOT for fluid dynamics (SPH/MPM), fracture simulation (FEM), offline cinematic physics, molecular dynamics, or general game physics engines (use Unity/Unreal built-ins).
npx skills add https://github.com/curiositech/some_claude_skills --skill physics-rendering-expert
Expert in computational physics for real-time rope/cable dynamics, constraint solving, and physically-based simulations.
Use for:
Do NOT use for:
| Topic | Novice | Expert |
|-------|--------|--------|
| Constraint approach | Uses spring forces (F=ma) | Uses PBD (directly manipulates positions) |
| Why PBD | "Springs work fine" | Springs require tiny timesteps; PBD is unconditionally stable |
| Solver choice | "Just iterate until done" | Gauss-Seidel for chains, Jacobi for GPU |
| Iterations | 20+ iterations | 5-10 is optimal; diminishing returns after |
| Rotation | Uses Euler angles | Uses quaternions (no gimbal lock) |
| Integration | Forward Euler | Verlet (symplectic, energy-conserving) |
| What it looks like | Why it's wrong |
|--------------------|----------------|
| force = k * (distance - rest_length) with high k | High k requires tiny dt for stability; low k gives squishy ropes |
| Instead: Use PBD - directly move particles to satisfy constraints |
| What it looks like | Why it's wrong |
|--------------------|----------------|
| rotation = vec3(pitch, yaw, roll) | Gimbal lock at 90° pitch; unstable composition |
| Instead: Use quaternions - 4 numbers, no gimbal lock, stable SLERP |
| What it looks like | Why it's wrong |
|--------------------|----------------|
| solver_iterations = 50 | Diminishing returns after 5-10; wastes cycles |
| Instead: Use 5-10 iterations; if more needed, use XPBD compliance |
| What it looks like | Why it's wrong |
|--------------------|----------------|
| Gauss-Seidel on 1000+ constraints | Gauss-Seidel is inherently sequential |
| Instead: Use Jacobi solver for GPU parallelization |
| Solver | Parallelizable | Convergence | Use Case |
|--------|---------------|-------------|----------|
| Gauss-Seidel | No | Fast | Chains, ropes |
| Jacobi | Yes (GPU) | Slower | Large meshes, cloth |
| System | Budget | Notes |
|--------|--------|-------|
| Single rope (100 particles) | <0.5ms | 5 iterations sufficient |
| Three-dog leash (60 particles) | <0.7ms | Include tangle detection |
| Cloth (1000 particles) | <2ms | Use Jacobi on GPU |
| Era | Key Development |
|-----|-----------------|
| Pre-2006 | Mass-spring systems, stability issues |
| 2006-2015 | PBD introduced (Müller et al.), unconditional stability |
| 2016-2020 | XPBD adds compliance for soft constraints |
| 2021-2024 | ALEM (2024 SIGGRAPH), BDEM, neural physics |
| 2025+ | XPBD standard, hybrid CPU/GPU, learned corrections |
Choosing constraint solver:
Choosing integration:
| File | Contents |
|------|----------|
| references/core-algorithms.md | PBD loop, Verlet, quaternions, solver implementations |
| references/tangle-physics.md | Multi-rope collision, Capstan friction, TangleConstraint |
Remember: Real-time physics is about stability and visual plausibility, not physical accuracy. PBD with 5-10 iterations at 60fps looks great and runs fast.
Take curiositech/physics-rendering-expert from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.