Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

lo-th/Oimo.js

Repository files navigation


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.
Version Version

Home

Docs

  • docs (in progress)

Demo

Usage

Download the minified library and include it in your HTML.
Alternatively, use Node and install the package: npm install oimo

<script src="js/oimo.min.js"></script>

Create physics world:

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

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

UPDATE

Is time to switch ES6 worker version with the last OimoPhysics 1.2.2 :)
go to new PHY repro

About

Lightweight 3d physics engine for javascript

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 8

AltStyle によって変換されたページ (->オリジナル) /