You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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.
Download the minified library and include it in your HTML.
Alternatively, use Node and install the package: npm install oimo
<scriptsrc="js/oimo.min.js"></script>
Create physics world:
world=newOIMO.World({timestep: 1/60,iterations: 8,broadphase: 2,// 1 brute force, 2 sweep and prune, 3 volume treeworldscale: 1,// scale full world random: true,// randomize sampleinfo: false,// calculate statistic or notgravity: [0,-9.8,0]});
Add physics object or joint
varbody=world.add({type:'sphere',// type of shape : sphere, box, cylinder size:[1,1,1],// size of shapepos:[0,0,0],// start position in degreerot:[0,0,90],// start rotation in degreemove:true,// dynamic or statiquedensity: 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.});varbody=world.add({type:'jointHinge',// type of joint : jointDistance, jointHinge, jointPrisme, jointSlide, jointWheelbody1: "b1",// name or id of attach rigidbodybody2: "b1"// name or id of attach rigidbody});// update worldworld.step();// and copy position and rotation to three meshmyMesh.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
UPDATE
Is time to switch ES6 worker version with the last OimoPhysics 1.2.2 :)
go to new PHY repro