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.
- oimo.js (in progress)
- docs (in progress)
- Basic test
- Compound test (chair)
- Compound test (capsule)
- Ragdoll test
- Collision test
- Moving test
- Terrain test
- Car test
- Walker test
- Worker test
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());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
Is time to switch ES6 worker version with the last OimoPhysics 1.2.2 :)
go to new PHY repro
