- Bugfix: logic error in
CollisionShape.nativeMargin()
- Disallowed GImpact shapes with zero triangles.
- Publicized the
CollisionSpace.setLocalThreadPhysicsSpace()
method, so apps creating spaces on multiple threads can stop a memory leak. - Moved the
DacWizard
andVhacdTuner
subprojects to new GitHub projects. - Added the
TestIssue2282
andTestManyBoxes
apps for testing. - Updated dependencies:
- v9.1.0 of the Heart library,
- v3.1.9 of Antora, and
- v20.17.0 of Node.js .
- Built using Gradle v8.10.1 .
-
Bugfix: JVM crash while serializing
BoundingValueHierarchy
(issue #41) -
Bugfix: crash in
processAllTriangles()
whenm_bvh==NULL
(issue #43) -
Bugfix: wrong inertia for a
CustomConvexShape
whenmass != 1
-
Changed the default setting for collision-shape contact filtering (from enabled to disabled) to address issue #40. This change may cause unwanted behavior for rigid bodies in contact with a gimpact, heightfield, or mesh shape; see issue #18 for details.
-
Started regenerating the bounding-value hierarchy if it was serialized with a different floating-point precision.
-
Bugfix: the RK4 flag of a MultiBody isn't de-serialized
-
Added 2 convex collision shapes:
ConicalFrustum
SphericalSegment
-
Made BVH serialization optional:
MeshCollisionShape.isSerializingBvh()
MeshCollisionShape.setSerializingBvh()
-
Added a setting to visualize the collision margins of concave shapes.
-
Added the new
CollisionConfiguration
class and related methods, to configure penetration depth solvers:BulletAppState.getCollisionConfiguration()
BulletAppState.setCollisionConfiguration()
CollisionSpace.getConfiguration()
PhysicsDescriber.describe(CollisionConfiguration)
- a 5-argument
CollisionSpace
constructor - a 4-argument
PhysicsSoftSpace
constructor - a pair of 5-argument
PhysicsSpace
constructors
-
Added 14 accessors for the native user indices of
CollisionShape
,MultiBody
, andPhysicsCollisionObject
. -
Added 20 other public methods:
BoundingValueHierarchy.copyAabb()
BoundingValueHierarchy.copyQuantization()
BoundingValueHierarchy.countLeafNodes()
BoundingValueHierarchy.countNodes()
BoundingValueHierarchy.countSubtreeHeaders()
BoundingValueHierarchy.escapeIndex()
BoundingValueHierarchy.isCompressed()
BoundingValueHierarchy.isLeafNode()
BoundingValueHierarchy.partId()
BoundingValueHierarchy.setTraversalMode()
BoundingValueHierarchy.traversalMode()
BoundingValueHierarchy.triangleIndex()
GImpactCollisionShape.countSubmeshes()
GImpactCollisionShape.getSubmesh()
HeightfieldCollisionShape.countColumns()
HeightfieldCollisionShape.countRows()
HeightfieldCollisionShape.upAxis()
MeshCollisionShape.countSubmeshes()
MeshCollisionShape.getBvh()
MeshCollisionShape.getSubmesh()
-
Enhancements to the MinieExamples subproject:
- Added 2 test apps:
TestIssue40
TestIssue41
- Added 3 custom collision shapes:
CustomLemon
CustomParaboloid
CustomSegment
- Added more options to the
ShapeGenerator
class and also to theDropTest
andSplitDemo
apps. - Started displaying the number of persistent manifolds in the
DropTest
app. - Reduced the CCD motion threshold in the
DropTest
app. - Added getters for the dimensions of custom collision shapes.
- Made 4 custom collision shapes more scalable.
- Added margin to the radii of custom collision shapes.
- Added 2 test apps:
-
Updated dependencies: v3.0.1 of the jme-ttf library and v20.13.0 of Node.js .
-
Built using Gradle v8.7 .
-
Updated the native libraries to v21.2.1 of Libbulletjme.
-
Updated VHACD v4 to version 4.1 .
-
Deleted 9 public methods that had previously been deprecated: (API changes)
CollisionShape.getObjectId()
CollisionSpace.getSpaceId()
PhysicsCollisionObject.getObjectId()
PhysicsCollisionObject.listIgnoredIds()
PhysicsCollisionObject.setIgnoreList()
PhysicsJoint.getObjectId()
RigidBodyMotionState.getObjectId()
RotationalLimitMotor.getMotor()
TranslationalLimitMotor.getMotor()
-
Privatized the
setIgnoreCollisionCheck()
method in thePhysicsCollisionObject
class. (API change) -
Added the capability to define custom collision shapes using JVM code:
- Added the (abstract)
CustomConvexShape
class. - Modified
PhysicsDescriber
to recognize custom shapes. - Added 7 custom shapes to the MinieExamples project:
CustomBox
CustomCone
CustomCylinder
CustomEllipsoid
CustomFrustum
CustomHalfCylinder
CustomHemisphere
- Added custom shapes to the
DropTest
example app.
- Added the (abstract)
-
Bugfix:
CharacterController.onGround()
returns false positives after stepping (not jumping) off a cliff -
Added runtime checks to
MeshCollisionShape
for meshes that are too complex. -
Bugfix: JME issue 2002 (
TerrainGridTileLoaderTest
fails to load tiles) -
The "+big3" build flavor was replaced with "+big4" that includes native binaries for MacOSX_ARM64.
-
Changed how meshes for debug visualization are generated:
- Added an
IndexedMesh
constructor to efficiently generate visualization meshes for collision shapes. - Replaced
DebugMeshCallback
withIndexedMesh
inDebugShapeFactory
. - Deprecated the
DebugMeshCallback
class.
- Added an
-
Added 10 new public methods:
BetterCharacterControl.getInitialHeight()
BetterCharacterControl.getInitialRadius()
CompoundMesh.countSubmeshes()
CompoundMesh.getSubmesh()
IndexedMesh.copyTriangles()
IndexedMesh.distinctVertices()
IndexedMesh.footprint()
IndexedMesh.maxDistance()
IndexedMesh.surfaceArea()
IndexedMesh.volumeConvex()
-
Updated dependencies:
- v9.0.0 of the Heart library,
- v2.0.0 of the Acorus library,
- v0.9.37 of the jme3-utilities-nifty library,
- v3.1.7 of Antora, and
- v20.11.0 of Node.js .
-
Built using Gradle v8.6 .
-
Updated the native libraries to v20.1.0 of Libbulletjme.
- Bugfix: BVH algorithm fails
- Updated the native libraries to v18.6.1 of Libbulletjme.
- Bugfix:
PhysicsCharacter
disregards ignore lists - Bugfix:
makeMergedMesh()
uses theJME_PHYSICSIGNORE
tag differently from other methods inCollisionShapeFactory
- Added the
ContactManager
interface and split off theDefaultContactManager
class the from thePhysicsSpace
class. - Optimized
PhysicsSpace
to instantiate collision events only when a corresponding listener is registered. - Added a 4-argument
addContactListener()
method to thePhysicsSpace
class. - Updated to depend on v8.8.0 of the Heart library, v1.1.0 of the Acorus library, and v0.8.1 of the Wes library.
- Built using Gradle v8.5 .
- Updated the native libraries to v18.6.0 of Libbulletjme.
-
Fixed bugs:
NullPointerException
after rebuilding aDynamicAnimControl
- unhelpful warnings while cloning a
PhysicsRigidBody
SplitDemo
app crashes caused by attempting to rotate heightfields
-
Added to the library:
- the
MinkowskiSum
collision shape - the
ClassFilter
class, for filtering physics objects
- the
-
Specified a more precise return type for
Convex2dShape.getBaseShape()
. -
DynamicAnimControl
now logs a warning if armature scaling exceeds 1%. -
Improvements to the
DacWizard
application:- Re-scale the 3-D model for each pose.
- Added a "rebuild" action to test mode, bound to
KEY_F3
.
-
Improvements to the
MinieDump
application:- Added command-line options to specify an asset root.
- Added help/usage hints.
-
Improvements to the
MinieExamples
applications:- Added more shapes to
DropTest
andSplitDemo
. - Reduced the risk of fallthru in
DropTest
, by disabling contact filtering.
- Added more shapes to
-
Updated to depend on v3.6.1-stable of JMonkeyEngine and v8.7.0 of the Heart library.
-
Built using Gradle v8.3 .
-
Updated the native libraries to v18.5.2 of Libbulletjme.
-
Bugfix: the gravity of a rigid body isn't read/written/cloned
-
Bugfix: ignore lists are never cloned for non-joined collision objects
-
Bugfix:
IllegalStateException
inDropTest
while creating a ragdoll -
Allow zero-mass kinematic rigid bodies.
-
Added the an "addLinksForTris" parameter to
SoftBodyControl
. -
Updated to depend on v8.6.0 of the Heart library.
-
Built using Gradle v8.1.1 .
-
Updated the native libraries to v18.3.0 of Libbulletjme.
- Bugfix: during cloning, Bullet's ignore list gets out-of-synch with the JVM list
- Added the
applyAllExceptIgnoreListTo()
method to theRigidBodySnapshot
class. - Made private fields
static
in the tutorial apps. - Built using Gradle v8.1.0 .
- Fixed bugs:
BetterCharacterControl
oscillates while unducking near an overhangBetterCharacterController.isOnGround()
is unreliableTestIssue18Heightfield
application throws anIllegalArgumentException
- excessive logging from the
TestIssue13
application
- Implemented kinematic modes for
BetterCharacterControl
andJoinedBodyControl
. - Deprecated 7 library methods for obtaining native IDs:
CollisionShape.getObjectId()
CollisionSpace.getSpaceId()
PhysicsCollisionObject.getObjectId()
PhysicsJoint.getObjectId()
RigidBodyMotionState.getObjectId()
RotationalLimitMotor.getMotor()
TranslationalLimitMotor.getMotor()
- Updated dependencies:
- v3.6.0-stable of JMonkeyEngine,
- v3.0.0 of the jME-TTF library,
- v8.3.2 of the Heart library,
- v1.0.0 of the Acorus library,
- v0.7.5 of the Wes library, and
- v0.9.35 of the jme3-utilities-nifty library.
- Fixed bugs:
- ignored collision objects may be garbage-collected prematurely
- adding a
DynamicAnimControl
to a spatial resets its armature PhysicsCollisionObject.cloneIgnoreList()
throws aNullPointerException
BetterCharacterControl.setPhysicsLocation()
never updates the field- tasks passed to
PhysicsSpace.enqueueOnThisThread()
never execute TestAttachDriver
example doesn't reset properly (JME issue 1975)
- Added the
JointedBodyControl
class. - Added 7 methods to the library:
CollisionSpace.isForceUpdateAllAabbs()
CollisionSpace.setForceUpdateAllAabbs()
DynamicAnimControl.blendToKinematicMode(KinematicSubmode, float, Transform)
DynamicAnimControl.saveCurrentPose()
DynamicAnimControl.setKinematicMode(KinematicSubmode)
PhysicsCollisionObject.listIgnoredPcos()
PhysicsCollisionObject.setIgnoreList(PhysicsCollisionObject[])
- Added the "reset" kinematic submode to
DynamicAnimControl
. - Publicized 3 library methods:
- a constructor for the
IndexedMesh
class DacLinks.getTransformer()
RagUtils.findMainJoint()
- a constructor for the
- Deprecated 2 library methods:
PhysicsCollisionObject.listIgnoredIds()
PhysicsCollisionObject.setIgnoreList(long[])
- Added some runtime checks and strengthened others.
- Made improvements to the DacWizard application:
- added the "torso" screen to select the torso's main bone
- added posing capability to the "load" and "test" screens
- fixed a bug that caused generation of syntactically incorrect Java code
- fixed a bug where the wrong main bone was used to estimate ranges of motion
- when generating Java code, provide a
configure()
method - generate practical classnames for Java code
- Updated dependencies:
- v3.6.0-beta3 of JMonkeyEngine,
- v1.6.0 of the SimMath library,
- v8.3.1+for36 of the Heart library,
- v0.9.18+for36 of the Acorus library,
- v0.7.3+for36 of the Wes library, and
- v0.9.34+for36 of the jme3-utilities-nifty library.
- Built using Gradle v8.0.2 .
- Updated the native libraries to v18.1.0 of Libbulletjme.
- Bugfix:
PhysicsCollisionObject.findInstance()
creates a weak global reference that can never be deleted - Bugfix:
DynamicAnimControl.totalMass()
returnsNaN
even when the control is added to aSpatial
- Bugfix: weak global references in
PhysicsCollisionObject
andMultiBody
can never be deleted - Added 2 methods to the library:
CollisionSpace.jniEnvId()
NativeLibrary.jniEnvId()
- Updated the native libraries to v17.5.4 of Libbulletjme.
- Added the capability to generate cylinder shapes in a ragdoll.
- Publicized the
RagUtils.makeRectangularSolid()
method. - Added
DynamicAnimControl
tunings for a Mixamo rig. - Added the capability to display angles in degrees or radians in DacWizard.
- Updated
DacWizard
andVhacdTuner
to depend on v0.9.33 of the jme3-utilities-nifty library.
- Bugfix:
NullPointerException
inrebuildRigidBody()
while de-serializing an old model - Bugfix: DacWizard doesn't write rotation orders to Java source code
Bugfix: NullPointerException
in PhysicsCollisionObject.readPcoProperties()
-
API changes:
- Privatized
PhysicsCollisionObject.getCollisionFlags()
(a native method) - Added the
static
qualifier toPersistentManifolds.listPointIds()
- Renamed the public logger in the
ConvexShape
class to avoid conflict. - Added a 2nd argument to
PhysicsBody.cloneJoints()
- Corrected the return type of
CharacterController.jmeClone()
- Finalized 3 classes:
NativeSoftBodyUtil
PhysicsRayTestResult
PhysicsSweepTestResult
- Privatized
-
Bug fixes:
DynamicAnimControl
may pass illegal arguments toMyMath.slerp()
- assertion failure when
toString()
is invoked on a collision object or physics joint with no native object assigned - out-of-range exception upon re-entering DacWizard's "bones" screen with a different model
- transforms are not updated for the
getCalculatedOriginA()
andgetCalculatedOriginB()
methods in theNew6Dof
class getPhysicsLocationDp()
andgetPhysicsRotationDp()
return incorrect values for a soft body- cloning bugs:
- physics joints are cloned inaccurately
- ignore lists are cloned inaccurately
- cloning or rebuilding a collision object results in different collision flags
- the feedback parameter of a
Constraint
isn't cloned DacLinks
incompletely clonedBoneLink.tmpMatrix
is shared between clones
- serialization bugs:
NullPointerException
inPreComposer.read()
RigidBodyMotionState
is never serialized- the pivot offsets of single-ended constraints are de-serialized incorrectly
PhysicsLink.density
is never saved or loaded- the feedback parameter of a
Constraint
is never saved or loaded - the
bindTransform
andpreComposer
fields of aDacLinks
are never saved or loaded
-
Publicized the
PhysicsLink.velocity()
method. -
Added 9 double-precision setters:
CharacterController.warpDp()
MultiBodyCollider.setPhysicsLocationDp()
MultiBodyCollider.setPhysicsRotationDp(Matrix3d)
PhysicsCharacter.setPhysicsLocationDp()
PhysicsGhostObject.setPhysicsLocationDp()
PhysicsGhostObject.setPhysicsRotationDp()
(2 signatures)PhysicsRigidBody.setPhysicsRotationDp(Matrix3d)
PhysicsSoftBody.setPhysicsLocationDp()
-
Added 8 other double-precision methods:
CollisionShape.getScaleDp()
CollisionSpace.rayTestDp()
ManifoldPoints.getPositionWorldOnADp()
ManifoldPoints.getPositionWorldOnBDp()
PhysicsCollisionObject.getPhysicsRotationMatrixDp()
RigidBodyMotionState.getLocationDp()
RigidBodyMotionState.getOrientationMatrixDp()
RigidBodyMotionState.getOrientationQuaternionDp()
-
Added 6 other methods:
New6Dof.calculatedBasisA()
New6Dof.calculatedBasisB()
New6Dof.getRotationMatrix()
PhysicsCollisionObject.collisionFlags()
PhysicsDescriber.describeMatrix()
PhysicsDumper.dump(PhysicsJoint, String)
-
Added
INFO
-level log messages to theNew6Dof
andPhysicsRigidBody
classes. -
Made incremental improvements to the
PhysicsDumper
output format. -
Strengthened argument validation.
-
Updated the native libraries to v17.4.0 of Libbulletjme.
-
Updated
DacWizard
andVhacdTuner
to depend on v0.9.32 of the jme3-utilities-nifty library. -
Built using Gradle v7.6 .
- Added 3 methods:
PhysicsSpace.isCcdWithStaticOnly()
PhysicsSpace.setCcdWithStaticOnly()
NativeLibrary.countClampedCcdMotions()
- Updated the native libraries to v17.0.0 of Libbulletjme.
- Updated to depend on v0.9.17 of the Acorus library.
- Bugfix:
PreComposer
isn't properly cloned or serialized - Added library support for dynamic collision-shape splitting:
- Added 8 public constructors:
ChildCollisionShape(Vector3f, CollisionShape)
CompoundMesh(CompoundMesh)
CompoundMesh(CompoundMesh, Vector3f)
GImpactCollisionShape(CompoundMesh, Vector3f)
HullCollisionShape(Vector3f...)
IndexedMesh(FloatBuffer)
MeshCollisionShape(boolean, CompoundMesh)
MultiSphere(Vector3f[], float...)
- Added 17 other public methods:
ChildCollisionShape.split()
CollisionShape.aabbCenter()
CollisionShape.canSplit()
CollisionShape.scaledVolume()
CollisionShape.toSplittableShape()
CompoundCollisionShape.connectivityMatrix()
CompoundCollisionShape.countGroups()
CompoundCollisionShape.split()
CompoundMesh.maxMin()
CompoundMesh.split()
ConvexShape.toHullShape()
GImpactCollisionShape.split()
HullCollisionShape.split()
IndexedMesh.copyTriangle()
IndexedMesh.maxMin()
IndexedMesh.split()
MeshCollisionShape.split()
- Added 8 public constructors:
- Other library enhancements:
- Added the
createGImpactShape()
method to theCollisionShapeFactory
class. - Added the
pairTest()
method to theCollisionSpace
class. - Added the
countMeshTriangles()
to theGImpactCollisionShape
class.
- Added the
- Added the
SplitDemo
andSweepDemo
applications. - Enhanced the
ShapeGenerator
class to use diverse axes when generating capsule, cone, and cylinder shapes. - Added the "teapotGi" collision shape to the MinieAssets project.
- Updated to depend on v8.2.0 of the Heart library.
- Updated the native libraries to v16.3.0 of Libbulletjme.
- Bugfix:
DacLinks
never re-enables hardware skinning (performance issue) - VhacdTuner GUI tweaks:
- Removed the "ACDMode" buttons.
- Added buttons to toggle the "async" setting.
- Added a button to quit ranking the newest test result.
- Added glTF loading capability to DacWizard.
- Protected the no-arg constructors of 6 abstract classes. (API changes)
- Bugfix: issue #30 (
NullPointerException
after removingDynamicAnimControl
from aSpatial
) - Bugfix: I/O resources not safely closed in
VHACDParameters
. - Added V-HACD version 4 including the
Vhacd4
,Vhacd4Parameters,
FillMode, and
Vhacd4Hullclasses plus a new
HullCollisionShapeconstructor and a new
CollisionShapeFactory` method. - Added the VhacdTuner subproject.
- Added the
toMap()
method to theVHACDParameters
class. - Updated the native libraries to v16.1.0 of Libbulletjme.
- Bugfix:
PhysicsRigidBody.setInverseInertiaLocal()
andPhysicsRigidBody.updateMassProps()
don't update the world inertia tensor - Bugfix: when rebuilding a rigid body, many properties are lost
- Added a
DynamicAnimControl
mechanism to report the completion of a blend-to-kinematic operation. - Added the
CompletionListener
interface. - Added the
RigidBodySnapshot
class. - Added the
setIgnoreList()
method to thePhysicsCollisionObject
class. - Added a simpler constructor to
PhysicsSoftSpace
. - Publicized the
rebuildRigidBody()
method. - Updated the native libraries to v16.0.0 of Libbulletjme.
- Built using Gradle v7.5.1 .
- Bugfix: static rigid body misbehaves after being assigned a positive mass
- Bugfix:
DynamicAnimControl
withAnimComposer
exhibits glitches during blends to kinematic mode - Bugfix: when rebuilding a rigid body, its ignore list is lost
- Updated to depend on v8.1.0 of the Heart library.
- Built using Gradle v7.5 .
-
Replaced the "ano" build with "droid" build that includes Java classes.
-
Changes to the library API:
- Replaced the
DebugMeshNormals
enum withMeshNormals
(from Heart). - Protected the no-arg constructors of the
DacConfiguration
andDacLinks
classes. - Protected the public constructors of 3 classes:
AbstractPhysicsDebugControl
IKController
SoftPhysicsJoint
- Qualified 17 utility classes as
final
. - Removed the
static
qualifier from the protectedcreateWireMaterial()
method of theBulletDebugAppState
class. - Deleted the deprecated
setContractCalcArea3Points()
method of thePhysicsCollisionEvent
class.
- Replaced the
-
Library bugfixes:
PhysicsCharacter.onGround()
is unreliable (stephengold/Libbulletjme#18)TorsoLink
continues writing the model transform after a blend to kinematic completesDynamicAnimControl
rebuilds the ragdoll for minute changes to bone scalingTorsoLink
plays some bone animations, even in dynamic mode- outdated constant values in
ConfigFlag
DynamicAnimControl
is still marked "ready" after removal from thePhysicsSpace
DebugMeshCallback.maxDistance()
modifies the vertex listConfigFlag.describe()
ignores 3 flags
-
Other library improvements:
- Warn if the native library version differs from the expected version.
- Throw an exception in
AbstractPhysicsControl.jmeClone()
if the control is added to aPhysicsSpace
. - Add capability to specify the main bone of a ragdoll, which needn't be a root bone.
- Added accessors for global deactivation settings:
PhysicsBody.getDeactivationDeadline()
PhysicsBody.isDeactivationEnabled()
PhysicsBody.setDeactivationDeadline()
PhysicsBody.setDeactivationEnabled()
- Added debug visualizations of rigid-body angular velocities and soft-body wind velocities.
- Added a "relative tolerance" parameter to
DynamicAnimControl
. - Reimplemented
BulletDebugAppState
usingBaseAppState
. - Added the
DeformableSpace
class that supports both multibodies and soft bodies. - Added
SDF_MDF
andSDF_RDN
bitmasks toConfigFlag
.
-
Added the
Pachinko
andWindlass
apps to MinieExamples. -
Added the
HelloGhost
andHelloWind
apps to TutorialApps. -
Updated the project URL in the POM.
-
Added 10 "package-info.java" files.
-
Updated to depend on:
- v8.0.0 of the Heart library,
- v0.7.2 of the Wes library,
- v0.9.16 of the Acorus library, and
- v0.9.30 of the jme3-utilities-nifty library.
-
Updated the native libraries to v15.2.1 of Libbulletjme.
-
Added the "checkstyle" plugin to the build.
- Eliminated the last dependency on JCenter!
- Bugfix:
IllegalArgumentException
caused by slerps inTorsoLink
- Changed
CollisionShapeFactory
to skip meshes without triangles. - Added the
GearJoint
class. - Changes to the apps:
- Bugfix: rigid body becomes deactivated in
HelloContactReponse
- Bugfix:
get(Limits.TextureAnisotropy)
returnsnull
on some platforms - Renamed
TestDebugToPost
and moved it from MinieExamples to TutorialApps. - Added
TestGearJoint
to MinieExamples. - Added 3rd body to
HelloDeactivation
for a visual reference point. - Added monkey-head test to
TestSoftBodyControl
. - Added display-settings editors to
NewtonsCradle
andRopeDemo
. - Enabled window resizing for
DacWizard
and all apps in MinieExamples.
- Bugfix: rigid body becomes deactivated in
- Updated to depend on:
- v3.5.2-stable of JMonkeyEngine,
- v1.5.0 of the SimMath library,
- v7.6.0 of the Heart library,
- v0.9.15 of the Acorus library, and
- v0.9.29 of the jme3-utilities-nifty library.
- Built using Gradle v7.4.2 .
- Updated the native libraries to v14.3.0 of Libbulletjme.
- Bugfix: issue #23 (access violations on 64-bit Windows)
- Split off "TutorialApps" from the "MinieExamples" subproject.
- Updated dependencies:
- v0.9.11 of the Acorus library and
- v0.9.28 of the jme3-utilities-nifty library.
- Updated the native libraries to v14.2.0 of Libbulletjme.
- Added native libraries for the MacOSX_ARM64 platform, so that Minie applications can run on "Apple Silicon" Macs.
- Created the "+ano" (Android natives only) build, for use in Android signed bundles (for distribution via Google Store).
- Added the
contactErp()
,jointErp()
,setContactErp()
, andsetJointErp()
methods to theSolverInfo
class, to give applications better control over joint elasticity. - Updated to depend on v3.5.1-stable of JMonkeyEngine.
- Updated the native libraries to v14.1.0 of Libbulletjme.
- Bugfix:
PhysicsCollisionEvent.getNormalWorldOnB()
returns wrong value - Bugfix: issue #20 (
btAssert
fails afterHingeJoint.setAngularOnly(true)
) - Added the
needsCollision()
method to theCollisionSpace
class. This method can be overridden for dynamic collision filtering. - Added the
ContactListener
interface for immediate handling of rigid-body contacts. - Added the
ManifoldPoints
utility class to access the properties of a contact point without instantiating aPhysicsCollisionEvent
. - Added the
PersistentManifolds
utility class to access the properties of a contact manifold. - Added 8 methods to the
PhysicsSpace
class:addContactListener(ContactListener)
countManifolds()
listManifolds()
onContactEnded(PhysicsCollisionObject, PhysicsCollisionObject, long)
onContactProcessed(PhysicsCollisionObject, PhysicsCollisionObject, long)
onContactStarted(PhysicsCollisionObject, PhysicsCollisionObject, long)
removeContactListener(ContactListener)
update(float, int, boolean, boolean, boolean)
to enable callbacks to specificContactListener
methods
- Deprecated the
PhysicsCollisionEvent.setContactCalcArea3Points()
method in favor of the correspondingManifoldPoints
method. - Deleted placeholder files from class jars.
- Added the
ConveyorDemo
andJointElasticity
apps to MinieExamples. - Updated dependencies:
- v7.4.1 of the Heart library,
- v0.7.1 of the Wes library,
- v0.9.10 of the Acorus library, and
- v0.9.27 of the jme3-utilities-nifty library.
- Built using Gradle v7.4.1 .
- Updated the native libraries to v14.0.0 of Libbulletjme.
- Restored support for the MacOSX32 platform.
- Updated dependencies:
- v3.5.0-stable of JMonkeyEngine,
- v7.2.0 of the Heart library,
- v0.6.8 of the Wes library,
- v0.9.6 of the jme3-utilities-ui library, and
- v0.9.24 of the jme3-utilities-nifty library.
- Built using Gradle v7.3.3 .
- Updated the native libraries to v12.7.1 of Libbulletjme, which include the fix for bullet3 issue 4117.
- Bugfix: issue #19 (zero-thickness mesh shape crashes the JRE)
- Dropped support for the MacOSX32 platform.
- Updated to depend on v3.4.1-stable of JMonkeyEngine.
- Changes to the examples:
- Solved 2 null-pointer exceptions in Jme3Examples.
- Added the
TestInsideTriangle
andTestIssue19
apps to MinieExamples. - Split off the
PhysicsDemo
class fromAbstractDemo
. - Built Jme3Examples using Java 8 .
- Added the
isInsideTriangle()
method to theNativeLibrary
class. - Guarded some low-level logging code to improve efficiency.
- Built using Gradle v7.3.1 .
- Updated the native libraries to v12.6.0 of Libbulletjme, which includes Bullet updates through 13 November 2021.
- Cached the methods that free native objects, to improve performance.
- Added the
setPivotInB()
method to theAnchor
class. - Added a mesh customization API to the
DebugShapeFactory
class, to support (for example) debug materials that need barycentric coordinates. - Publicized the
worldMax()
andworldMin()
methods in theBulletAppState
class. - Improvements to examples:
- Solved
UnsatisfiedLinkError
crashes in 5 apps. - Added the
TestIssue18GImpact
app. - Addressed JME issue 1630 in
TestBetterCharacter
.
- Solved
- Updated the native libraries to v12.5.0 of Libbulletjme, which includes contact filtering for GImpact shapes.
- Built using Gradle v7.3 .
- Bugfix: invalid contact points for heightfield/mesh shapes (issue #18)
- Added a flag to disable contact filtering on a per-shape basis.
- Added accessors to the
CollisionSpace
class for the collision dispatcher's "deterministic" option. - Made all native physics objects
Comparable
(for use in collections). - Improvements to examples:
- Added 2 tutorial apps for character physics:
HelloWalkOtoBcc
andHelloWalkOtoCc
. - Added 2 tests for issue #18:
TestIssue18Heightfield
andTestIssue18Mesh
. - Made some tutorial apps more comparable.
- Created a merged mesh shape for the table in
PoolDemo
(more efficient). - Reduced the camera zoom speed in
PoolDemo
(to avoid overshooting).
- Added 2 tutorial apps for character physics:
- Updated the native libraries to v12.4.1 of Libbulletjme.
- Added 10 double-precision accessors and created an API dependency on v1.4.1 of Paul's SimMath library.
- Added more flexible customization of chassis axes in
VehicleController
. - Bugfix: incompatibility with Java v7
- Added the
NegativeAppDataFilter
class (for obstructions). - Added the
listInternalJoints()
method to theRagUtils
class. - Added the example app
HelloServo
. - Improved diagnostic messages in
DacWizard
. - Updated to depend on v7.1.0 of the Heart library and v0.9.23 of the jme3-utilities-nifty library.
- Updated the native libraries to v12.2.2 of Libbulletjme, which includes Bullet updates through 20 September 2021.
- Bugfix: contact tests report events with positive separation distance
- Bugfix:
NullPointerException
while previewing an erroneous model during DacWizard step #2 (the "load" step) - Bugfix: pure virtual call in native libraries (issue #17)
- Added support for Quickprof profiling of native code.
- Added support for multithreaded physics spaces.
- Added the
TowerPerformance
application for performance testing. - Tweaked the behavior of
PhysicsRigidBody.setKinematic()
. - Bypass the asset cache when loading models into DacWizard.
- Updated the native libraries to v12.0.0 of Libbulletjme (includes performance enhancements).
- Updated dependencies:
- LWJGL v3 (to improve support for non-US keyboards),
- v7.0.0 of the Heart library,
- v0.6.7 of the Wes library,
- v0.9.5 of the jme3-utilities-ui library, and
- v0.9.22 of the jme3-utilities-nifty library.
- Built using Gradle v7.2 .
- Bugfix: Libbulletjme issue #7 (GImpact contact tests always fail)
- Dump the bounds and ignore list of each
PhysicsGhostObject
. - Added
hasClosest()
andhasContact()
methods to theCollisionSpace
class. - Added a public
getShapeType()
method to theCollisionShape
class. - Document the lack of collision detection between 3 concave shapes.
- Use a migrated Jaime model in MinieExamples.
- Updated the native libraries to v10.5.0 of Libbulletjme, which includes Bullet v2 updates through 12 May 2021.
- Built using Gradle v7.1 .
- Bugfix: issue #16 (MinieExamples uses deprecated classes)
- Updated dependencies:
- v3.4.0-stable of JMonkeyEngine,
- v2.2.4 of the jme-ttf library,
- v6.4.4 of the Heart library,
- v0.6.6 of the Wes library,
- v0.9.4 of the jme3-utilities-ui library, and
- v0.9.20 of the jme3-utilities-nifty library.
- Built using Gradle v7.0.2 .
- Bugfix:
RagUtils.ignoreCollisions()
doesn't handle cycles correctly - Bugfix:
NullPointerException
while reading aDacLinks
from an XML file - Added
setPivotInA()
andsetPivotInB()
methods toPoint2PointJoint
. - Added
HelloDoor
application to the MinieExamples subproject. - Updated the native libraries to v10.3.1 of Libbulletjme, which includes Bullet v2 updates through 21 April 2021.
- Updated dependencies:
- v3.4.0-beta1 of JMonkeyEngine,
- v6.4.3+for34 of the Heart library,
- v0.6.3+for34 of the Wes library,
- v0.9.3+for34 of the jme3-utilities-ui library, and
- v0.9.19+for34 of the jme3-utilities-nifty library.
- Built using Gradle v7.0 .
- Bugfix: debug visualization not updated for kinematic rigid bodies
- Updated the native libraries to v10.2.0 of Libbulletjme.
- Bugfix: stack overflow while cloning a
DynamicAnimControl
- Upgraded to JUnit v4.13.2 .
- Bug fixes:
- debug visualization of a body jitters relative to its
PhysicsControl
. DacWizard
generates syntactically incorrect source code for some locales- issue #14 (suspension lengths of a
PhysicsVehicle
are not initialized) IllegalArgumentException
while cloning aPhysicsVehicle
in aPhysicsSpace
- debug visualization of a body jitters relative to its
- A change to the library API:
- Delete the
angularMomentum()
andkineticEnergy()
methods from theMultiBody
class.
- Delete the
- Published to MavenCentral instead of JCenter.
- Added a
render()
method to theAbstractPhysicsControl
class. - Added tutorial app
HelloMotor
. - Built using Gradle v6.8.2 .
- Updated dependencies:
- v6.4.2 of the Heart library,
- v0.6.2 of the Wes library,
- v0.9.2 of the jme3-utilities-ui library, and
- v0.9.18 of the jme3-utilities-nifty library.
- Updated the native libraries to v10.1.0 of Libbulletjme, which includes Bullet v2 updates through 23 January 2021.
- Re-implemented
CollisionSpace.destroy()
to prepare a space for re-use. - Dump 7 more properties of each
VehicleWheel
. - Added the
TestIssue13
application. - Built using Gradle v6.8 .
- Updated the native libraries to v9.3.2 of Libbulletjme, which includes fixes for issues #12 and #13.
- Bugfix:
CollisionShapeFactory.createBoxShape()
positions the box incorrectly. - Added (experimental) support for the Linux_ARM32 platform with "hf" (hardware floating-point support).
- Added a
createMergedBoxShape()
method to theCollisionShapeFactory
class. - Updated the native libraries to v9.3.1 of Libbulletjme.
- Bugfix: off-by-one in validation of wheel indices
- Added (experimental) support for the Linux_ARM32 platform.
- Added a
createMergedHullShape()
method to theCollisionShapeFactory
class. - Publicized the
addMultiBody()
andremoveMultiBody()
methods in theMultiBodySpace
class. - Minimized usage of
PhysicsSpace.add()
andPhysicsSpace.remove()
. - In
HelloPoi
, put the indicator in theTranslucent
bucket. - Built using Gradle v6.7.1 .
- Updated dependencies:
- v6.2.0 of the Heart Library,
- v0.9.1 of the jme3-utilities-ui library,
- v0.9.17 of the jme3-utilities-nifty library.
- Updated the native libraries to v9.3.0 of Libbulletjme.
- Updated the native libraries to v9.2.3 of Libbulletjme (minSdkVersion=22).
- Upgraded to JUnit v4.13.1 .
- Updated the native libraries to v9.2.3 of Libbulletjme (Android SDK v30).
- Added 3 compatibility methods:
BetterCharacterControl.getVelocity()
BetterCharacterControl.getViewDirection()
PhysicRayTestResult.getHitNormalLocal()
- Added tutorial app
HelloPoi
. - Built using Gradle v6.7 .
- Updated to depend on v0.6.1 of the Wes Library.
- Bug fixes:
- collision-group checks are ineffective due to missing parentheses
ConcurrentModificationException
thrown by the "Physics Cleaner" thread- assertion failures while tracking the ID of a soft-body anchor
- JVM crash while reading the collision flags of a static rigid body
- assertion failure during
PhysicsLink.postTick()
- Changes to the library API:
- changed the semantics of the
countJoints()
andlistJoints()
methods in thePhysicsBody
class - changed the return type of the
rayTestRaw()
method in theCollisionSpace
class
- changed the semantics of the
- New
DynamicAnimControl
features:- a mechanism to ignore collisions between physics links that aren't directly joined
- a mechanism to apply bone rotations (from an
AnimClip
, for instance) to linked bones in dynamic mode setLocalTransform()
methods for the managed bones of physics links- a
fixToWorld()
method to lock aPhysicsLink
into position - an adjustable
pinToWorld()
method
- Improvements to
New6Dof
constraints:- enable springs in
RangeOfMotion
for more effective locking of axes - a
NewHinge
subclass inspired by Bullet'sbtHinge2Constraint
- getters for the calculated transforms
- enable springs in
- More convenience:
- added a factory method to construct a satisfied, double-ended
New6Dof
constraint using physics-space coordinates (instead of local ones) - added a
clearIgnoreList()
method to thePhysicsCollisionObject
class - added a
CcdFilter
class to select rigid bodies with CCD active - added a
DacUserFilter
class to select physics objects belonging to a particularDynamicAnimControl
- added
findEnd()
andfindOtherBody()
methods to thePhysicsJoint
class - publicized the
boneIndex()
methods ofBoneLink
andTorsoLink
- construct a
RangeOfMotion
(for a fixed joint) using Euler angles
- added a factory method to construct a satisfied, double-ended
- Improvements to
PhysicsDumper
:- dump the positions of locked DoFs in a
New6Dof
- an option to dump the ignored PCOs of a
PhysicsCollisionObject
- dump the application data of a
PhysicsCollisionObject
- dump the positions of locked DoFs in a
- Built using Gradle v6.6.1 .
- Updated dependencies:
- v6.0.0 of the Heart Library,
- v0.9.0 of the jme3-utilities-ui library,
- v0.6.0 of the Wes Library, and
- v0.9.15 of the jme3-utilities-nifty library.
- Updated the native libraries to v9.2.2 of Libbulletjme.
Bugfix: characters and ghosts ignore their own ignore lists!
- Bugfix: issue #9 (native crashes caused by invoking
finalizeNative()
outside of the "Physics Cleaner" thread) - Bugfix: race condition during the removal of an
NpoTracker
. - Bugfix: issue #10 (native IDs of soft physics joints shouldn't be tracked)
- Bugfix: location not initialized when creating a
PhysicsCharacter
. - Added 2 new constructors to the
HeightfieldCollisionShape
class. - Added argument validation to the
setMaxSlope()
method in thePhysicsCharacter
class. - Made more progress constructing the website.
- Added 10 more tutorial apps.
- Enabled gamma correction in tutorial apps that use lighting.
- Updated the native libraries to v8.4.0 of Libbulletjme.
- Added collision listeners for ongoing contacts, to the
PhysicsSpace
class. - Added
totalAppliedForce()
andtotalAppliedTorque()
methods to thePhysicsRigidBody
class. - Added a
setContactCalcArea3Points()
method to thePhysicsCollisionEvent
class. - Added 3 compatibility methods to the
PhysicsCollisionEvent
class. - Made progress building the website.
- Added 7 more tutorial apps.
- Dump additional information for rigid bodies.
- Improved descriptions of user objects.
- Built using Gradle v6.5.1 .
- Updated the native libraries to v8.3.0 of Libbulletjme.
-
Changes to the library API:
- Deleted the
MinieCharacterControl
andVHACDResults
classes. - Replaced inner class
PhysicsSoftBody.Material
withSoftBodyMaterial
. - Deleted deprecated methods and constructors.
- De-publicized 7 debug-control classes.
- Changed arguments of the
PhysicsCharacter
,CharacterControl
, andConvex2dShape
constructors fromCollisionShape
toConvexShape
. - Changed an argument of a
HullCollisionShape
constructor tofloat...
. - Changed the
shape
arguments ofsweepTest()
methods toConvexShape
. - Changed an argument of the
volumeConvex()
method toConvexShape
. - Privatized 6 fields:
CollisionSpace.physicsSpaceTL
CompoundMesh.scale
PhysicsSpace.physicsJoints
PhysicsSpace.pQueue
VHACD.indices
VHACD.vertices
- Changed 7 returned collections to unmodifiable collections.
- The
PhysicsCollisionObject
andPhysicsCollisionEvent
classes extend theNativePhysicsObject
class. - Added a private constructor to the
VHACD
class.
- Deleted the
-
Eliminated all
finalize()
methods by implementing a cleaner thread and adding 4 classes:BoundingValueHierarchy
CharacterController
NpoTracker
VehicleController
-
Added a GitHub Pages website, including javadoc and 3 new tutorial pages.
-
Implemented debug visualization for local physics.
-
Added 8 more tutorial apps.
-
Added the
TestEmptyShape
automated test. -
Added accessors for the speculative contact restitution flag of a
PhysicsSpace
. -
Upgraded to Gradle v6.4.1, Libbulletjme v8.1.0, and JUnit v4.13 .
-
Fixed bugs in the library:
- kinematic
PhysicsRigidBody
cloned as a dynamic one CompoundCollisionShape.correctAxes()
yields incorrect results when multiple children reference the same shape- native objects of
SoftBodyWorldInfo
andVehicleTuning
are never freed worldInfo
field ofPhysicsSoftBody
not cloned, loaded, or savedFINE
logging of collision spaces reportsnativeId=0
increate()
- kinematic
-
Fixed bugs in applications:
SliderJoint
destroyed multiple times inTestAttachDriver
NullPointerException
thrown inTestRbc
- "childColoring" action not handled in
DropTest
-
Deprecated many obsolete methods slated to be removed from v2.
-
Added debug-visualization features:
- rebuild the debug shape of a
CompoundCollisionShape
ONLY when it changes - arrows to visualize cluster/node/rigid body velocity vectors
- markers to visualize pinned soft-body nodes
- arrows to visualize rigid/soft body gravity vectors
- add texture coordinates when visualizing a
PlaneCollisionShape
- specify line widths for
PhysicsJoint
debug arrows - configure the shadow mode of the debug root node
- rebuild the debug shape of a
-
Additional
PhysicsDumper
output:- restitution of each rigid body
- angular velocity of each dynamic rigid body
- split-impulse parameters of each
SolverInfo
isGravityProtected
for rigid bodies andisWorldInfoProtected
for soft bodies- native ID for each
SoftBodyWorldInfo
-
Other added library features:
- an application-specific data reference for each
PhysicsCollisionObject
- an ignore list for each
PhysicsCollisionObject
- contact tests for collision spaces
- an option to protect the gravity of a
PhysicsRigidBody
from modification by aPhysicsSpace
- an option to protect the world info of a
PhysicsSoftBody
from replacement by aPhysicsSoftSpace
- methods to rotate/translate a
CompoundCollisionShape
- a method to activate all collision objects in a
PhysicsSpace
- publicized the
addJoint()
andremoveJoint()
methods ofPhysicsSpace
- keep track of the
PhysicsSpace
(if any) to which eachPhysicsJoint
is added - construct an
IndexedMesh
from the debug mesh of aCollisionShape
- construct a
MeshCollisionShape
from a collection of native meshes - a method to copy the cluster velocities of a
PhysicsSoftBody
- getters for the combined rolling/spinning friction
of a
PhysicsCollisionEvent
- access the split-impulse parameters of a
SolverInfo
nativeId()
methods forPhysicsCollisionEvent
andPhysicsCollisionObject
, to prepare for v2- getters for the proxy group and proxy mask of a
PhysicsCollisionObject
- construct a
CompoundCollisionShape
with specified initial capacity
- an application-specific data reference for each
-
New applications added:
TargetDemo
, a shooting demoPoolDemo
, an eight-ball pool simulation with moody lightingNewtonsCradle
, a Newton's cradle simulationTestScaleChange
- tests for JME issues 1283 and 1351
- 3 apps that were missing from the Jme3Examples subproject
-
Improvements to the
DropTest
application:- use the PgUp key to "pop" the selected drop (if any)
- use the slash key to toggle between lit and wireframe materials
- when adding a Drop, avoid contact with existing rigid bodies
- added soft-body drop types (cloth and squishyBall)
- added jointed drop types (breakableRod, chain, diptych, flail, and ragdoll)
- added fixed-shape drop types (ankh, banana, barrel, bowl, bowlingPin, horseshoe, iBeam, lidlessBox, link, snowman, table, thumbtack, triangularFrame, trident, and washer)
- added "corner" and "square" platforms
- made gravity configurable
- applied a repeating texture to the "plane" platform visualization
-
Other improvements to existing applications:
- minimized the hotkey help node initially
- added the "BaseMesh" model to various demos
- bound the "G" key to
System.gc()
in various demos - disabled audio rendering in all apps that use
AppSettings
-
Major refactoring efforts:
- many classes extend a new
NativePhysicsObject
class - many demo apps extend a new
AbstractDemo
class - 4 debug controls extend a new
CollisionShapeDebugControl
class - physics appstate configuration using a new
DebugConfiguration
class
- many classes extend a new
-
Added 5 more models with CC0 licenses ("Ankh", "Banana", "Barrel", "BowlingPin", and "Horseshoe").
-
Updated the native libraries to v6.4.0 of Libbulletjme.
-
Updated dependencies:
- the 3.3.2-stable release of jMonkeyEngine,
- v5.5.0 of the Heart Library,
- v0.8.3 of the jme3-utilities-ui library, and
- v0.5.0 of the Wes Library.
-
Built using Gradle v6.4.1 .
Fixed JME issue 1351 (crash during garbage collection)
-
Fixed bugs:
UnsatisfiedLinkError
on older Linux systems "libstdc++.so.6: version `CXXABI_1.3.8’ not found"- issue #2: certain soft-body methods cause access violations under Java 9+ on Windows systems
NullPointerException
when re-adding aPhysicsControl
that's already added to aSpatial
rebuildRigidBody()
relied on static per-thread references to determine the body'sPhysicsSpace
NullPointerException
inDacWizard
while editing the shape scale of aPhysicsLink
-
Added library features:
- support for 4 Android platforms (arm64-v8a, armeabi-v7a, x86, and x86_64)
- support for the 64-bit Linux-on-ARM platform (aarch64)
DynamicAnimControl
ignores spatials tagged with "JmePhysicsIgnore"getCollisionSpace()
andspaceId()
methods to thePhysicsCollisionObject
classgetRotationAngle()
,setRotationAngle()
,getSuspensionLength()
, andsetSuspensionLength()
methods to theVehicleWheel
class- a
listDacMeshes()
method to theRagUtils
class - an
appendFromNativeMesh()
method to theNativeSoftBodyUtil
class - a
PcoType
class - a
getFlags()
method to thePhysicsCollisionEvent
class and also aContactPointFlag
class copyIndices()
andcopyVertexPositions()
methods to theIndexedMesh
class- a
serializeBvh()
method to theMeshCollisionShape
class and also a constructor that takes serialized BVH
-
Improvements to the
DacWizard
application:- highlight the selected `PhysicsLink' in the Test screen
- click RMB to pick a
PhysicsLink
in the Test screen - button in the Test screen to visualize the axes of the selected
BoneLink
- button in the Test screen to save the model to a J3O file
- button in the Links screen to configure the
RotationOrder
of aBoneLink
- button in the Bones screen to bypass RoM estimation if the model already has a DAC with the exact same linked bones
- dialog in the Test screen to adjust collision margins
- the "B"/PgUp and "N"/PgDn keys navigate between screens
- buttons in the Load and Test screens to visualize skeletons
- warn if there are multiple DACs in the model
- dark grey background
-
Added most of the physics examples from
jme3-examples
to the Jme3Examples subproject. -
Added a
TestDebugToPost
application to the MinieExamples subproject. -
Added build-command options for double-precision and debug-ready versions of the library.
-
Reduced memory usage by reimplementing
IndexedMesh
using anIndexBuffer
. -
Customized the
RotationOrder
parameters of the sample DAC tunings. -
Eliminated some non-standard collision margins from the MinieExamples subproject.
-
Removed all references to the CesiumMan model.
-
Updated the native libraries to version 5.5.7 of
Libbulletjme
. -
Updated dependencies:
- the 3.3.0-stable release of jMonkeyEngine,
- v5.2.1 of the
Heart
library, - v0.8.2 of the
jme3-utilities-ui
library, - v0.9.14 of the
jme3-utilities-nifty
library, and - v0.4.9 of the
Wes
library.
-
Built using Gradle v6.3 .
-
Fixed bugs:
NullPointerException
in theDacWizard
application- compound shapes read from J3O assets always get the default margin
- meshes returned by
DebugShapeFactory.getDebugMesh()
have incorrect bounds - Minie issue #3:
btAssert()
crash at the peak of a character's jump (only with a debug library)
-
Added library features:
CharacterControl
class (for compatibility with jme3-bullet)- 2 more
PhysicsSpace
constructors (for compatibility with jme3-bullet) - new option for physics links: use
New6Dof
instead ofSixDofJoint
CollisionSpace
class (for collision detection without dynamics)- 4 more contact-and-constraint solvers for
PhysicsSpace
- 3 more solver parameters: global CFM, minimum batch, and mode flags
- (experimental) support for multibody physics objects
ConvexShape
abstract subclass ofCollisionShape
- new option for debug-mesh normals: sphere (radial) normals
- new option to dump child collision shapes in detail
- native IDs are now optional in physics dumps
- dump a single
CollisionShape
- miscellaneous methods:
BulletAppState.isRunning()
CollisionShapeFactory.createMergedMeshShape()
DebugShapeFactory.getDebugTriangles()
PhysicsSpace.countCollisionListeners()
PhysicsSpace.countTickListeners()
RagUtils.validate(Armature)
VHACDHull.clonePositions()
VHACDParameters.hashCode()
-
Added more detail to
PhysicsCharacter
dumps. -
Added validation for the angular limits of a
SixDofJoint
. -
Updated the native libraries to version 5.0.0 of
Libbulletjme
. -
Depends on version 5.1 of the
Heart
library. -
Built using Gradle v6.2.2 .
-
Continuous integration at TravisCI and GitHub.
Fixed JME issue 1283 (CCD doesn't respect collision groups)
-
Fixed bugs:
- scaling bugs in
CompoundShape
andConvex2dShape
MyShape.height()
returns wrong value for aCylinderCollisionShape
DebugShapeFactory
cache should use aWeakHashMap
for better garbage collection- issues with
NativeSoftBodyUtil
- soft-body debug geometries can't receive shadows
- scaling bugs in
-
Added library features:
- a V-HACD interface with progress listeners, using JNI (eliminates the dependency on v-hacd-java-bindings)
- array-based constructor for
IndexedMesh
- ray tests and sweep tests return a part index and/or triangle index for many collision shapes
maxRadius()
methods for collision shapes- cleaner debug visualization of swept spheres
- a debug visualization option to color the children of a compound shape
countCollisionListeners()
andcountCollisionGroupListeners()
methods for thePhysicsSpace
class- a
countPinnedNodes()
method forPhysicsSoftBody
- a
parseNativeId()
method for theMyShape
class, to replaceparseId()
countCachedMeshes()
andmaxDistance()
methods for theDebugShapeFactory
classRayTestFlag
value to disable the heightfield accelerator- dump the listener counts of a
PhysicsSpace
-
Improvements to the
DropTest
demo:- redesigned the user interface: use fewer keys and also display a pause indicator and counts of active bodies and cached meshes
- added platforms: bed of nails, dimpled sheet, rounded rectangle, sieve, trampoline
- added drop (gem) shapes: dome, (gridiron) football, frame, half pipe, letters of the alphabet, prism, pyramid, sword
- select a drop with RMB, delete or dump the selected drop
- after deleting a drop, activate any that were asleep
-
changed the Maven groupId to "com.github.stephengold"
-
moved issue-oriented tests to a new package
-
moved the
jme3test
package to a newJme3Tests
subproject -
Updated the native libraries to version 3.0.4 of
Libbulletjme
. -
Updated dependencies:
- v5.0 of the
Heart
library, - v0.8.1 of the
jme3-utilities-ui
library, and - v0.4.8 of the
Wes
library.
- v5.0 of the
-
Built using Gradle v6.1.1 .
-
Fixed bugs:
PlaneCollisionShape
never visualized.- Buffer limits not set in
IndexedMesh
.
-
Added library features:
- 2-D collision shapes:
Box2dShape
andConvex2dShape
- a
setIndexBuffers()
method for theDebugShapeFactory
class - dump the moments of inertia of dynamic rigid bodies
castRay()
,forwardAxisIndex()
,rightAxisIndex()
, andupAxisIndex()
methods for thePhysicsVehicle
classgetBrake()
,getEngineForce()
, andgetSteerAngle()
methods for theVehicleWheel
class- a
copyVertices()
method for theSimplexCollisionShape
class - construct a
SimplexCollisionShape
from aFloatBuffer
range - construct a
CylinderCollisionShape
from radius, height, and axis - a
getHeight()
method for theCylinderCollisionShape
class - a
setScale(float)
method for theCollisionShape
class addChildShape(CollisionShape)
andaddChildShape(CollisionShape, float, float, float)
methods for theCompoundCollisionShape
class- a
listVolumes()
method for theMyShape
class unscaledVolume()
methods for theBoxCollisionShape
,ConeCollisionShape
,CylinderCollisionShape
,EmptyCollisionShape
, andSphereCollisionShape
classesDumpFlags
values forBoundsInSpatials
andVertexData
- 2-D collision shapes:
-
Improvements to the
DropTest
demo:- Added 7 platform options (compound, cone, cylinder, hull, mesh, plane, and triangle).
- Added 11 gem-shape options (barbell, capsule, chair, duck, heart, knucklebone, ladder, sphere, star, teapot, and top).
- Tuned shadow edges.
-
Improvements to the
HeightfieldTest
demo:- Combined the demo with
TestScaleChange
and renamed it toTestRbc
. - Added many test shapes.
- Added a status line.
- Vary the collision margin and scale.
- Cursor shape indicates whether raytest finds an object.
- Visualize Bullet's bounding box.
- Added a hotkey to toggle the world axes.
- Combined the demo with
-
Began using
createIndexBuffer()
to generate test meshes and V-HACD shapes, in order to conserve memory. -
Refactored
TestRectangularShape
to make it more similar to the demos. -
Extended
TestDefaults
to cover thePhysicsGhostObject
,PhysicsVehicle
, andVehicleWheel
classes. -
Updated the native libraries to version 2.0.19 of
Libbulletjme
. -
Updated dependencies:
- the NEW 3.3.0-beta1 release of jMonkeyEngine,
- v4.3 of the
jme3-utilities-heart
library, - v0.7.10 of the
jme3-utilities-ui
library, and - v0.9.12 of the
jme3-utilities-nifty
library. - v0.4.7 of the
Wes
library.
- Added a
New6Dof
constraint class, to eventually replace bothSixDofJoint
andSixDofSpringJoint
. Also added 4 associated classes:MotorParam
,RotationOrder
,RotationMotor
, andTranslationMotor
. - Added a status line to the
SeJointDemo
application. - Changed the function of the Ins key in
SeJointDemo
andTestDac
. - Updated the native libraries to version 2.0.17 of
Libbulletjme
. - Updated dependencies:
- version 3.3.0-alpha5 of jMonkeyEngine,
- version 4.1 of the
jme3-utilities-heart
library, - version 0.7.8 of the
jme3-utilities-ui
library, and - version 0.9.10 of the
jme3-utilities-nifty
library. - version 0.4.5 of the
Wes
library.
- Fixed bugs:
- Crash due to a denormalized
Quaternion
inTorsoLink
. - "K" key doubly mapped in the
TestDac
application.
- Crash due to a denormalized
- Added model validation to the
DacWizard
application. - Added screenshot capability to 9 demo apps.
- Extended
TestDefaults
to verify defaults for soft-body configs and materials. - Updated the native libraries to version 2.0.14 of
Libbulletjme
. - Updated dependencies:
- jMonkeyEngine version v3.3.0-beta1, which was later deleted!
- version 4.2 of the
jme3-utilities-heart
library, - version 0.7.9 of the
jme3-utilities-ui
library, and - version 0.9.11 of the
jme3-utilities-nifty
library. - version 0.4.6 of the
Wes
library.
- Built using Gradle v6.0.1 .
- Added 4 getters to the
SixDofSpringJoint
class. - Added 3 compatibility methods to the
VehicleWheel
class. - Added some assertions to the
PhysicsRayTestResult
class. - Added the "application" Gradle plugin to the
DacWizard
build script. - Updated the native libraries to version 2.0.12 of
Libbulletjme
. - Built using Gradle v5.6.4 .
- API changes:
BulletAppState
extendsAbstractAppState
(JME issue 1178).- Removed the
extrapolateTransform()
andgetPhysicsScale()
methods fromPhysicsRigidBody
. - Renamed the
getLocation()
andgetRotation()
methods ofChildCollisionShape
. - Privatized the
objectId
fields ofCollisionShape
andPhysicsJoint
. - Privatized the
collisionShape
field ofPhysicsCollisionObject
. - Privatized the
bodyA
andbodyB
fields ofPhysicsJoint
. - Privatized the
cfm
,erp
, andsplit
fields ofSoftPhysicsJoint
. - Finalized the
getObjectId()
methods ofCollisionShape
,PhysicsCollisionObject
, andPhysicsJoint
. - Protected many constructors that shouldn't be invoked directly.
- Removed the
countDistinctVertices()
method fromDebugMeshCallback
- Fixed bugs:
DacLinks
attempts to link a bone with no vertices- in
DynamicAnimControl
, armature joints remain animated in ragdoll mode - in
BuoyDemo
, old skeleton visualization persists after model a change NullPointerException
while de-serializing anAbstractPhysicsControl
- NPEs while serializing/de-serializing a
DynamicAnimControl
that's not added to a Spatial NullPointerException
while cloning aSoftBodyControl
- out-of-bounds exception in
DebugMeshCallback
for an empty debug mesh SoftBodyDebugControl
doesn't resize debug meshesRuntimeException
inDacWizard
while loading a non-model J3ONullPointerException
inDacWizard
after loading a non-animated modelOtoOldAnim.j3o
asset contained an invalidMatParamOverride
- scaling and rotation bugs in
DacWizard
- bind pose not applied in to models in
TrackDemo
andWatchDemo
apps RopeDemo
delete key cancels skeleton visualization
- Added library features:
getSquaredSpeed()
andsetEnableSleep()
forPhysicsRigidBody
getActivationState()
forPhysicsCollisionObject
Activation
andAfMode
classescorrectAxes()
,principalAxes()
, andsetChildTransform()
forCompoundCollisionShape
copyRotation()
andcopyTransform() methods for
ChildCollisionShape`countMeshTriangles()
forMeshCollisionShape
isConvex()
,isInfinite()
,isNonMoving()
, andisPolyhedral()
methods forCollisionShape
getViewDirection()
forMinieCharacterControl
IndexedMesh
constructors handleTriangleFan
andTriangleStrip
mesh typesSoftBodyControl
handles 4 more mesh types
- Enhancements to
PhysicsDumper
:- shape and group info of a
PhysicsCharacter
- group, orientation, scale, and shape of a
PhysicsGhost
- AABBs, activation state, damping, and friction of a
PhysicsRigidBody
- ID of the
CollisionShape
of aPhysicsRigidBody
- wheels of a
PhysicsVehicle
- describe a
PlaneCollisionShape
- simplify descriptions of various shapes, especially compounds
- shape and group info of a
- Changes to
MultiSphereDemo
:- Renamed to
DropTest
. - Added box, compound, cone, cylinder, simplex, and V-HACD shapes.
- Changed the Ins key to add a single gem instead of a shower.
- Added a UI to tune damping and friction.
- Added a
HeightfieldCollisionShape
platform as an alternative. - Randomized the initial orientation of each dynamic body.
- Renamed to
- Other improvements:
- Updated
DacWizard
and demo apps to work with the new animation system. - Implemented
SoftJointDebugControl
. MinieAssets
subproject converts OgreXML and glTF assets to J3O format.- Added the
ForceDemo
app. - Added the
TestCollisionShapeFactory
,TestIssue1120
, andTestPhysicsRayCast
apps from jme3-examples. - Added a "go limp" action to the "puppetInSkirt" test of
TestSoftBody
. - Avoid aliasing in
HeighfieldCollisionShape
constructors. - Added "toggle axes" and "toggle boxes" hotkeys to various demo apps.
- Updated the native libraries to version 2.0.10 of
Libbulletjme
. - Updated to depend on version 4.1 of the
jme3-utilities-heart
library, version 0.7.8 of thejme3-utilities-ui
library, and version 0.9.10 of thejme3-utilities-nifty
library. - Built using Gradle v5.6.2 .
- Updated
release log continues at https://github.com/stephengold/Minie/blob/master/MinieLibrary/release-notes-pre10.md