# Box3D Physics Plugin

**URL:** <https://forum.babylonjs.com/t/box3d-physics-plugin/64125>\
**Category:** Demos and projects\
**Created:** [September 17, 2026, 10:38pm UTC](https://forum.babylonjs.com/t/box3d-physics-plugin/64125 "2026-09-17T22:38:54Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![Pryme8](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/pryme8/32/7212_2.png) [@Pryme8](https://forum.babylonjs.com/u/Pryme8)\
**Post date:** [September 17, 2026, 10:38pm UTC](https://forum.babylonjs.com/t/box3d-physics-plugin/64125/1 "2026-09-17T22:38:54Z")

</div>

Been posting a lot lately but its mainly because I have a ton of stuff that is just sitting with nobody looking at it or using it, so I decided its time to be more vocal.

Anyways why would you want to use this over Havok? Simple! Its hands down faster, smaller package, has a few more features and is deterministic. Oh yeah and it has multithreading support!

 ![image](https://us1.discourse-cdn.com/flex024/uploads/babylonjs/original/3X/f/a/fa74c1d1a27d9f79784d987d58318bad1cdd4af5.png)

Just look at these numbers. They should speak for themselves.

You work with it just like you would any other v2 Physics in BJS, it just slips right in.

Check it out and mess with it when you get a chance!

> **[GitHub - Pryme8/babylon-box3d: Box3D (Erin Catto's 3D physics engine) compiled to...](https://github.com/Pryme8/babylon-box3d)**
>
> Box3D (Erin Catto's 3D physics engine) compiled to WebAssembly for the Babylon.js Box3DPlugin

---

<div class="post-metadata">

**Author:** ![Cedric](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/cedric/32/2742_2.png) [@Cedric](https://forum.babylonjs.com/u/Cedric)\
**Post date:** [September 18, 2026, 7:28am UTC](https://forum.babylonjs.com/t/box3d-physics-plugin/64125/2 "2026-09-18T07:28:06Z")

</div>

Wow that’s great! Performance improvement using thread looks good.

---

<div class="post-metadata">

**Author:** ![Cedric](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/cedric/32/2742_2.png) [@Cedric](https://forum.babylonjs.com/u/Cedric)\
**Post date:** [September 18, 2026, 7:36am UTC](https://forum.babylonjs.com/t/box3d-physics-plugin/64125/3 "2026-09-18T07:36:20Z")

</div>

1 thing that could be tried to gain even more performance is to limit the number of calls between JS and wasm. Like a an update function that returns an array of translation/orientation in a float32array. then a JS function would read that and do an update in a single loop. I’m not sure this applies to every call but it’s worth trying if you have the framework to profile it.

@srzerbetto has added a layer to batch calls into a command queue for the USD importer and the speed factor was impressive.

---

<div class="post-metadata">

**Author:** ![Leonardo\_Villalobos](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/leonardo_villalobos/32/9628_2.png) [@Leonardo\_Villalobos](https://forum.babylonjs.com/u/Leonardo_Villalobos)\
**Post date:** [September 18, 2026, 3:07pm UTC](https://forum.babylonjs.com/t/box3d-physics-plugin/64125/4 "2026-09-18T15:07:17Z")

</div>

Could Box3D run stand alone (downloadable version), like Havok?. I mean, Havok can work just with the umd and wasm files downloaded in same folder, a script call from the html file and th Physics engine call from the javascript file (no node running). Running stand alone is a must for me.

---

<div class="post-metadata">

**Author:** ![Pryme8](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/pryme8/32/7212_2.png) [@Pryme8](https://forum.babylonjs.com/u/Pryme8)\
**Post date:** [September 18, 2026, 4:17pm UTC](https://forum.babylonjs.com/t/box3d-physics-plugin/64125/5 "2026-09-18T16:17:30Z")

</div>

Yes aboslutly it could!

---

<div class="post-metadata">

**Author:** ![Leonardo\_Villalobos](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/leonardo_villalobos/32/9628_2.png) [@Leonardo\_Villalobos](https://forum.babylonjs.com/u/Leonardo_Villalobos)\
**Post date:** [September 18, 2026, 5:19pm UTC](https://forum.babylonjs.com/t/box3d-physics-plugin/64125/6 "2026-09-18T17:19:49Z")

</div>

Where may I download the files needed? Search in the link you posted, but no download link to try and test.

---

<div class="post-metadata">

**Author:** ![Pryme8](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/pryme8/32/7212_2.png) [@Pryme8](https://forum.babylonjs.com/u/Pryme8)\
**Post date:** [September 18, 2026, 5:53pm UTC](https://forum.babylonjs.com/t/box3d-physics-plugin/64125/7 "2026-09-18T17:53:17Z")

</div>

The UMD build works without Node — grab `box3d.umd.js`, `box3d.umd.wasm`, and `babylon.box3d.min.js` from unpkg or the npm tarball, drop them next to the HTML, and load via script tags, but it must be served over http rather than file:// since wasm fetches fail from local file access, same limitation as Havok.

---

<div class="post-metadata">

**Author:** ![Leonardo\_Villalobos](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/leonardo_villalobos/32/9628_2.png) [@Leonardo\_Villalobos](https://forum.babylonjs.com/u/Leonardo_Villalobos)\
**Post date:** [September 18, 2026, 6:01pm UTC](https://forum.babylonjs.com/t/box3d-physics-plugin/64125/8 "2026-09-18T18:01:11Z")

</div>

Thanks. I’ll try and come back if tested.

---

<div class="post-metadata">

**Author:** ![Pryme8](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/pryme8/32/7212_2.png) [@Pryme8](https://forum.babylonjs.com/u/Pryme8)\
**Post date:** [September 18, 2026, 6:36pm UTC](https://forum.babylonjs.com/t/box3d-physics-plugin/64125/9 "2026-09-18T18:36:07Z")

</div>

I think that’s what the SharedBufferArray is doing. It’s the only reason the threading works.
