Security News
Weekly Downloads Now Available in npm Package Search Results
Socket's package search now displays weekly downloads for npm packages, helping developers quickly assess popularity and make more informed decisions.
org.ode4j:parent
ode4j is a Java port of ODE.
ODE is an open source, high performance library for simulating rigid body dynamics. It is fully featured, stable, mature and platform independent with an easy to use C/C++ API. It has advanced joint types and integrated collision detection with friction. ODE is useful for simulating vehicles, objects in virtual reality environments and virtual creatures.
The latest released version of ode4j is 0.5.2, but the master branch may contain fixes and improvements. Release 0.5.0 contains all changes up to ODE 0.16.3.
Resources
ode4j contains numerous custom features that are not present in ODE (see also Wiki).
The ODE forum is useful for questions around physics and general API usage:
There is a new Discord channel around ode4j/Java.
The ode4j forum is for problems and functionality specific to ode4j/Java.
There is also the old website, including some screenshots.
There is also a GWT compatible fork of ode4j.
The following artifact contains the complete physics engine (examples etc. are not included):
<dependency>
<groupId>org.ode4j</groupId>
<artifactId>core</artifactId>
<version>0.5.2</version>
</dependency>
2023-10-07: Release 0.5.2:
2023-09-17: Release 0.5.1:
2023-05-27: Release 0.5.0. Full update to ODE 0.16.3 + Java 8 as baseline:
math
package)DSpace.getGeoms()
now returns DGeom
instead of DxGeom
.2023-03-31: Release 0.4.1 & 0.4.2. Mostly a bugfix release + some API helper methods:
DBody
: addLinearVelocity()
DVector3
: reAdd()
, eqToRadians()
, eqToDegrees()
(convert angles in a DVector3, eq
prefix means that the
object is set equal to the result)DQuaternion
: ZERO
, IDENTITY
, isEq()
, length()
, lengthSquared()
, toEuler()
, fromEuler()
, toEulerDegrees()
, fromEulerDegrees()
, eqInverse()
, reInverse()
.2019-01-03: Release 0.4.0. This release contains most of the changes that happened between ODE 0.13.1 and ODE 0.16.0, plus some original features:
2018-03-26: Snapshot release 0.4.0
2017-11-16: Snapshot release 0.4.0
2017-10-06: Release of ode4j 0.3.1
The "core" package contains the main library code. The public API is in:
org.ode4j.math
org.ode4j.ode
org.ode4j.ode.ragdoll
All other packages are "internal" and should normally not be used.
The "demo" package contains demo application for various simulation problems. The package contains the "drawstuff" library which is handy for visualizing simple physics simulation but should not be used for real applications (it is slow and clunky). Please use proper library such as lwjgl for your own games or simulations.
The "core-cpp" and "demo-cpp" packages are legacy packages and should be ignored.
DWorld.quickStep(...)
instead of DWorld.step()
. The latter is slower and appears to be less stable.DemoCrash
.
The demo disables boxes that have not moved for a few steps. If a whole "island" of bodies is disabled, it is automatically excluded from simulation (bodies are automatically re-enabled when necessary), see also ODE wiki.OdeConfig.dDEBUG = true
for debugging and = false
for best performance.mvn
will automatically use theon-jdk-9-plus
profile and create modules.DContact
objects.
To avoid this, these objects can be nullified and reused. See PerfCards.nearCallback()
for an example.While ode4j is a pretty literal port from ODE, there are some considerable differences (besides one being Java and the other being C++). Some differences concern the API, others are mostly internal.
./configure --enable-double-precision --with-trimesh=gimpact --enable-libccd
. That means:
double
precision throughoutGIMPACT
trimeshes, OPCODE
is not supportedlibccd
for collisionsode4j contains some custom features that are not present in ODE (see also Wiki):
DRagdoll
& DConstrainedBallJoint
,
see DemoRagdoll
and
DemoJointConstrainedBall
.DTrimeshHeightfield
with support for holes.
See DemoTrimeshHeightfield
.SapSpace2
) implementation that allows labelling bodies as "immobile",
see SpacePerformanceTest
.SpacePerformanceTest
.DemoMultithreading
.ode4j's API is very similar to ODE's API, so most tutorials / demos should be easily translatable. However, there are some notable differences:
Almost all objects in ode4j are created via the OdeHelper
class.
Math functions are located in ode4j.math
and OdeMath
. ode4j has different versions for some math objects,
e.g. DVector3
and DVector3C
where the trailing C
indicates an immutable or Const version of the object.
Class names in ode4j start with D
instead of d
in ODE. d...ID
classes have been removed,
use d...
instead, e.g. dBodyID
becomes DBody
.
ODE uses almost exclusively static methods. ode4j uses instead methods on objects where possible and methods have been renamed accordingly and their signature changed. Some examples:
dGeomSetRotation(geom, ...)
becomes geom.setRotation(...)
dJointSetHingeAxis(hingeJoint, ...)
becomes hingeJoint.setAxis(...)
Many ODE methods have a skip
parameter, this has been removed in ode4j.
dCollide
becomes OdeHelper.collide()
and takes as argument a DContactGeomBuffer
.
This can be created via:
DContactBuffer contacts = new DContactBuffer(MAX_CONTACTS);
OdeHelper.collide (o1, o2, MAX_CONTACTS, contacts.getGeomBuffer());
Many classes have a "DESTRUCTOR" that replicates some C++ features, however this can usually be ignored.
ROWPTRS = false
ode4j versions and corresponding ODE versions:
ode4j: Copyright (c) 2009-2023 Tilmann Zäschke <ode4j(AT)gmx.de>. All rights reserved.
Like the original ODE, ode4j is licensed under LGPL v2.1 and BSD 3-clause. Choose whichever license suits your needs.
ODE/OpenDE: Copyright (c) 2001,2002 Russell L. Smith All rights reserved.
GIMPACT (part of ODE/OpenDE): Copyright of GIMPACT (c) 2006 Francisco Leon. C.C. 80087371. email: projectileman(AT)yahoo.com
LIBCCD: Copyright (c) 2010 Daniel Fiser <danfis(AT)danfis.cz>; 3-clause BSD License
Turbulenz Engine: Copyright (c) 2009-2014 Turbulenz Limited; MIT License
Tilmann Zaeschke ode4j (AT) gmx.de
Please let me know if I missed anyone!
FAQs
Java 3D Physics Engine and Library.
We found that org.ode4j:parent demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 0 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Socket's package search now displays weekly downloads for npm packages, helping developers quickly assess popularity and make more informed decisions.
Security News
A Stanford study reveals 9.5% of engineers contribute almost nothing, costing tech $90B annually, with remote work fueling the rise of "ghost engineers."
Research
Security News
Socket’s threat research team has detected six malicious npm packages typosquatting popular libraries to insert SSH backdoors.