Three.js Physics with Cannon-es — Real-Time Simulation
Cannon-es brings rigid-body physics to Three.js scenes — gravity, collision, constraints, rope and cloth simulations.
Cannon-es is the maintained ES module fork of cannon.js, the most-used physics engine for Three.js. It handles rigid-body dynamics (gravity, collisions, restitution), constraints (joints, springs, hinges), and basic cloth simulation. For web 3D projects, physics earns its keep when interactivity drives the experience: a particle field that reacts to mouse, a ragdoll character that responds to drag, a chain link that swings under gravity. For static showcases or simple animations, physics is overkill — direct keyframe animation is cheaper. I default to cannon-es for medium complexity, switch to rapier (Rust-based, faster) for production projects with heavy simulation.
What you get hands-off
After delivery: source repository on GitHub (private), commented code, a 5-min Loom walkthrough explaining the scene logic, and the asset pipeline documented. First year of hosting and minor revisions is included. After that we agree on a maintenance plan if needed.
What this delivers
Concrete output: a working three js physics cannon integration on a real production site, not a demo. The integration includes device-tier detection so weak phones get a lighter version automatically. Source files are handed over in their original formats — Blender, GLSL, glTF — so any future developer can continue where I stopped.
How I work with it
On a typical project, three js physics cannon ships as a self-contained module: one entry-point JS file, one CSS file, asset bundle below 1.5MB total. I keep the integration sandboxed so the rest of the site stays SEO-friendly classical HTML. Frame budget targets 60 FPS on a mid-range Android, with a measurable fallback below.
Performance budget
Lighthouse mobile target: 85+ across all categories. I measure on real devices, not just emulator. Asset compression: glTF + Draco for meshes, KTX2 for textures, Brotli for shaders. Lazy-load any three js physics cannon scene that isn't above the fold so the first paint stays under 1.5s.
Frequently asked questions
Why pick this technology over alternatives?
What if a newer tool comes out next year?
How long does this take?
What does it cost?
What if my visitors are on weak phones?
Ready to ship a 3D experience?
Tell me what you need — fixed price, fixed deadline, no surprises.