Three.js中使用Ammo.js作为物理引擎。Ammo.js 使用Emscripten将 Bullet物理引擎直接移植到JavaScript。Bullet物理引擎是一个开源的物理引擎,世界三大物理引擎之一(另外两种是Havok和PhysX)。Blender 3D、Cienma 4D、3Ds Max、Maya支持Bullet物理引擎。
Ammo.js支持刚体和柔软体之间的碰撞,支持重力,支持多个物体之间的连接,例如:弹簧连接、合页、铰链等。Three.js示例中有相关的示例。
Emscripten可以直接把C/C++代码编译为js代码,运行在浏览器上。这种js不是普通的js,是一种asm.js的变体。