JavaScript 3D physics engine.

  • oimo

Downloads in past


1.0.96 years ago6 years agoMinified + gzip package size for oimo in KB


Oimo.js is a lightweight 3d physics engine for JavaScript.
It's a full javascript conversion of OimoPhysics
Originally created by Saharan for actionscript 3.0.

Home ###

Docs ###

Demo ###

Usage ###

Download the minified library and include it in your HTML.
Alternatively, use Node and install the package: npm install oimo ```html ``` Create physics world: ```javascript world = new OIMO.World({
timestep: 1/60, 
iterations: 8, 
broadphase: 2, // 1 brute force, 2 sweep and prune, 3 volume tree
worldscale: 1, // scale full world 
random: true,  // randomize sample
info: false,   // calculate statistic or not
gravity: [0,-9.8,0] 
}); ``` Add physics object or joint ```javascript var body = world.add({
type:'sphere', // type of shape : sphere, box, cylinder 
size:[1,1,1], // size of shape
pos:[0,0,0], // start position in degree
rot:[0,0,90], // start rotation in degree
move:true, // dynamic or statique
density: 1,
friction: 0.2,
restitution: 0.2,
belongsTo: 1, // The bits of the collision groups to which the shape belongs.
collidesWith: 0xffffffff; // The bits of the collision groups with which the shape collides.
}); var body = world.add({
type:'jointHinge', // type of joint : jointDistance, jointHinge, jointPrisme, jointSlide, jointWheel
body1: "b1", // name or id of attach rigidbody
body2: "b1", // name or id of attach rigidbody
}); // update world world.step(); // and copy position and rotation to three mesh myMesh.position.copy( body.getPosition() ); myMesh.quaternion.copy( body.getQuaternion() ); ```

Note ###

Oimo Physics uses international system units: 0.1 to 10 meters max for dynamic body.
In basic demo with THREE, I scaled all by 100 so objects are between 10 to 1000 in THREE units.

/!\ Shape name change in last version
SphereShape to Sphere, BoxShape to Box, CylinderShape to Cylinder