Skip to content

Latest commit

 

History

History
1420 lines (1256 loc) · 62 KB

release-notes.md

File metadata and controls

1420 lines (1256 loc) · 62 KB

Release log for the Minie library and MinieExamples

Version 8.2.0 released on 16 September 2024

  • 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 and VhacdTuner subprojects to new GitHub projects.
  • Added the TestIssue2282 and TestManyBoxes 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 .

Version 8.1.0 released on 12 May 2024

  • Bugfix: JVM crash while serializing BoundingValueHierarchy (issue #41)

  • Bugfix: crash in processAllTriangles() when m_bvh==NULL (issue #43)

  • Bugfix: wrong inertia for a CustomConvexShape when mass != 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, and PhysicsCollisionObject.

  • 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 the DropTest and SplitDemo 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.
  • 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 .

Version 8.0.0 released on 14 February 2024

  • 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 the PhysicsCollisionObject 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.
  • 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 with IndexedMesh in DebugShapeFactory.
    • Deprecated the DebugMeshCallback class.
  • 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.

Version 7.8.1 released on 4 December 2023

  • Bugfix: BVH algorithm fails
  • Updated the native libraries to v18.6.1 of Libbulletjme.

Version 7.8.0 released on 2 December 2023

  • Bugfix: PhysicsCharacter disregards ignore lists
  • Bugfix: makeMergedMesh() uses the JME_PHYSICSIGNORE tag differently from other methods in CollisionShapeFactory
  • Added the ContactManager interface and split off the DefaultContactManager class the from the PhysicsSpace class.
  • Optimized PhysicsSpace to instantiate collision events only when a corresponding listener is registered.
  • Added a 4-argument addContactListener() method to the PhysicsSpace 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.

Version 7.7.0 released on 31 August 2023

  • Fixed bugs:

    • NullPointerException after rebuilding a DynamicAnimControl
    • 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
  • 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 and SplitDemo.
    • Reduced the risk of fallthru in DropTest, by disabling contact filtering.
  • 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.

Version 7.6.0 released on 3 June 2023

  • 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 in DropTest 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.

Version 7.5.0 released on 13 April 2023

  • Bugfix: during cloning, Bullet's ignore list gets out-of-synch with the JVM list
  • Added the applyAllExceptIgnoreListTo() method to the RigidBodySnapshot class.
  • Made private fields static in the tutorial apps.
  • Built using Gradle v8.1.0 .

Version 7.4.0 released on 24 March 2023

  • Fixed bugs:
    • BetterCharacterControl oscillates while unducking near an overhang
    • BetterCharacterController.isOnGround() is unreliable
    • TestIssue18Heightfield application throws an IllegalArgumentException
    • excessive logging from the TestIssue13 application
  • Implemented kinematic modes for BetterCharacterControl and JoinedBodyControl.
  • 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.

Version 7.3.0+for36 released on 3 March 2023

  • Fixed bugs:
    • ignored collision objects may be garbage-collected prematurely
    • adding a DynamicAnimControl to a spatial resets its armature
    • PhysicsCollisionObject.cloneIgnoreList() throws a NullPointerException
    • 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()
  • 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.

Version 7.2.0 released on 24 January 2023

  • Bugfix: PhysicsCollisionObject.findInstance() creates a weak global reference that can never be deleted
  • Bugfix: DynamicAnimControl.totalMass() returns NaN even when the control is added to a Spatial
  • Bugfix: weak global references in PhysicsCollisionObject and MultiBody can never be deleted
  • Added 2 methods to the library:
    • CollisionSpace.jniEnvId()
    • NativeLibrary.jniEnvId()
  • Updated the native libraries to v17.5.4 of Libbulletjme.

Version 7.1.0 released on 16 January 2023

  • 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 and VhacdTuner to depend on v0.9.33 of the jme3-utilities-nifty library.

Version 7.0.2 released on 2 January 2023

  • Bugfix: NullPointerException in rebuildRigidBody() while de-serializing an old model
  • Bugfix: DacWizard doesn't write rotation orders to Java source code

Version 7.0.1 released on 1 January 2023

Bugfix: NullPointerException in PhysicsCollisionObject.readPcoProperties()

Version 7.0.0 released on 24 December 2022

  • API changes:

    • Privatized PhysicsCollisionObject.getCollisionFlags() (a native method)
    • Added the static qualifier to PersistentManifolds.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
  • Bug fixes:

    • DynamicAnimControl may pass illegal arguments to MyMath.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() and getCalculatedOriginB() methods in the New6Dof class
    • getPhysicsLocationDp() and getPhysicsRotationDp() 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 cloned
      • BoneLink.tmpMatrix is shared between clones
    • serialization bugs:
      • NullPointerException in PreComposer.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 and preComposer fields of a DacLinks 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 the New6Dof and PhysicsRigidBody classes.

  • Made incremental improvements to the PhysicsDumper output format.

  • Strengthened argument validation.

  • Updated the native libraries to v17.4.0 of Libbulletjme.

  • Updated DacWizard and VhacdTuner to depend on v0.9.32 of the jme3-utilities-nifty library.

  • Built using Gradle v7.6 .

Version 6.2.0 released on 13 November 2022

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

Version 6.1.0 released on 1 October 2022

  • 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()
  • Other library enhancements:
    • Added the createGImpactShape() method to the CollisionShapeFactory class.
    • Added the pairTest() method to the CollisionSpace class.
    • Added the countMeshTriangles() to the GImpactCollisionShape class.
  • Added the SplitDemo and SweepDemo 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.

Version 6.0.1 released on 29 August 2022

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

Version 6.0.0 released on 25 August 2022

  • Protected the no-arg constructors of 6 abstract classes. (API changes)
  • Bugfix: issue #30 (NullPointerException after removing DynamicAnimControl from a Spatial)
  • Bugfix: I/O resources not safely closed in VHACDParameters.
  • Added V-HACD version 4 including the Vhacd4, Vhacd4Parameters, FillMode, and Vhacd4Hullclasses plus a newHullCollisionShapeconstructor and a newCollisionShapeFactory` method.
  • Added the VhacdTuner subproject.
  • Added the toMap() method to the VHACDParameters class.
  • Updated the native libraries to v16.1.0 of Libbulletjme.

Version 5.1.0 released on 6 August 2022

  • Bugfix: PhysicsRigidBody.setInverseInertiaLocal() and PhysicsRigidBody.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 the PhysicsCollisionObject 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 .

Version 5.0.1 released on 2 August 2022

  • Bugfix: static rigid body misbehaves after being assigned a positive mass
  • Bugfix: DynamicAnimControl with AnimComposer 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 .

Version 5.0.0 released on 11 July 2022

  • Replaced the "ano" build with "droid" build that includes Java classes.

  • Changes to the library API:

    • Replaced the DebugMeshNormals enum with MeshNormals (from Heart).
    • Protected the no-arg constructors of the DacConfiguration and DacLinks classes.
    • Protected the public constructors of 3 classes:
      • AbstractPhysicsDebugControl
      • IKController
      • SoftPhysicsJoint
    • Qualified 17 utility classes as final.
    • Removed the static qualifier from the protected createWireMaterial() method of the BulletDebugAppState class.
    • Deleted the deprecated setContractCalcArea3Points() method of the PhysicsCollisionEvent class.
  • Library bugfixes:

    • PhysicsCharacter.onGround() is unreliable (stephengold/Libbulletjme#18)
    • TorsoLink continues writing the model transform after a blend to kinematic completes
    • DynamicAnimControl rebuilds the ragdoll for minute changes to bone scaling
    • TorsoLink plays some bone animations, even in dynamic mode
    • outdated constant values in ConfigFlag
    • DynamicAnimControl is still marked "ready" after removal from the PhysicsSpace
    • DebugMeshCallback.maxDistance() modifies the vertex list
    • ConfigFlag.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 a PhysicsSpace.
    • 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 using BaseAppState.
    • Added the DeformableSpace class that supports both multibodies and soft bodies.
    • Added SDF_MDF and SDF_RDN bitmasks to ConfigFlag.
  • Added the Pachinko and Windlass apps to MinieExamples.

  • Added the HelloGhost and HelloWind 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.

Version 4.9.0 released on 2 May 2022

  • Eliminated the last dependency on JCenter!
  • Bugfix: IllegalArgumentException caused by slerps in TorsoLink
  • 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) returns null 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 and RopeDemo.
    • Enabled window resizing for DacWizard and all apps in MinieExamples.
  • 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.

Version 4.8.1 released on 29 March 2022

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

Version 4.8.0 released on 20 March 2022

  • 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(), and setJointErp() methods to the SolverInfo 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.

Version 4.7.1 released on 11 March 2022

  • Bugfix: PhysicsCollisionEvent.getNormalWorldOnB() returns wrong value
  • Bugfix: issue #20 (btAssert fails after HingeJoint.setAngularOnly(true))
  • Added the needsCollision() method to the CollisionSpace 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 a PhysicsCollisionEvent.
  • 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 specific ContactListener methods
  • Deprecated the PhysicsCollisionEvent.setContactCalcArea3Points() method in favor of the corresponding ManifoldPoints method.
  • Deleted placeholder files from class jars.
  • Added the ConveyorDemo and JointElasticity 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.

Version 4.6.1 released on 24 January 2022

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

Version 4.6.0 released on 4 December 2021

  • 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 and TestIssue19 apps to MinieExamples.
    • Split off the PhysicsDemo class from AbstractDemo.
    • Built Jme3Examples using Java 8 .
  • Added the isInsideTriangle() method to the NativeLibrary 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.

Version 4.5.0 released on 19 November 2021

  • Cached the methods that free native objects, to improve performance.
  • Added the setPivotInB() method to the Anchor class.
  • Added a mesh customization API to the DebugShapeFactory class, to support (for example) debug materials that need barycentric coordinates.
  • Publicized the worldMax() and worldMin() methods in the BulletAppState class.
  • Improvements to examples:
    • Solved UnsatisfiedLinkError crashes in 5 apps.
    • Added the TestIssue18GImpact app.
    • Addressed JME issue 1630 in TestBetterCharacter.
  • Updated the native libraries to v12.5.0 of Libbulletjme, which includes contact filtering for GImpact shapes.
  • Built using Gradle v7.3 .

Version 4.5.0-test1 released on 25 October 2021

  • 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 and HelloWalkOtoCc.
    • Added 2 tests for issue #18: TestIssue18Heightfield and TestIssue18Mesh.
    • 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).
  • Updated the native libraries to v12.4.1 of Libbulletjme.

Version 4.4.0 released on 1 October 2021

  • 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 the RagUtils 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.

Version 4.3.0 released on 22 August 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 .

Version 4.2.0 released on 24 June 2021

  • Bugfix: Libbulletjme issue #7 (GImpact contact tests always fail)
  • Dump the bounds and ignore list of each PhysicsGhostObject.
  • Added hasClosest() and hasContact() methods to the CollisionSpace class.
  • Added a public getShapeType() method to the CollisionShape 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 .

Version 4.1.1 released on 1 June 2021

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

Version 4.1.0+for34 released on 25 April 2021

  • Bugfix: RagUtils.ignoreCollisions() doesn't handle cycles correctly
  • Bugfix: NullPointerException while reading a DacLinks from an XML file
  • Added setPivotInA() and setPivotInB() methods to Point2PointJoint.
  • 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 .

Version 4.0.2 released on 23 February 2021

  • Bugfix: debug visualization not updated for kinematic rigid bodies
  • Updated the native libraries to v10.2.0 of Libbulletjme.

Version 4.0.1 released on 16 February 2021

  • Bugfix: stack overflow while cloning a DynamicAnimControl
  • Upgraded to JUnit v4.13.2 .

Version 4.0.0 released on 11 February 2021

  • 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 a PhysicsVehicle in a PhysicsSpace
  • A change to the library API:
    • Delete the angularMomentum() and kineticEnergy() methods from the MultiBody class.
  • Published to MavenCentral instead of JCenter.
  • Added a render() method to the AbstractPhysicsControl 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.

Version 3.1.0 released on 9 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.

Version 3.1.0-test4 released on 6 January 2021

  • 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 the CollisionShapeFactory class.
  • Updated the native libraries to v9.3.1 of Libbulletjme.

Version 3.1.0-test3 released on 5 January 2021

  • Bugfix: off-by-one in validation of wheel indices
  • Added (experimental) support for the Linux_ARM32 platform.
  • Added a createMergedHullShape() method to the CollisionShapeFactory class.
  • Publicized the addMultiBody() and removeMultiBody() methods in the MultiBodySpace class.
  • Minimized usage of PhysicsSpace.add() and PhysicsSpace.remove().
  • In HelloPoi, put the indicator in the Translucent 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.

Version 3.1.0-test2 released on 14 November 2020

  • Updated the native libraries to v9.2.3 of Libbulletjme (minSdkVersion=22).
  • Upgraded to JUnit v4.13.1 .

Version 3.1.0-test1 released on 14 November 2020

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

Version 3.0.0 released on 31 August 2020

  • 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() and listJoints() methods in the PhysicsBody class
    • changed the return type of the rayTestRaw() method in the CollisionSpace class
  • 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 a PhysicsLink 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's btHinge2Constraint
    • getters for the calculated transforms
  • 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 the PhysicsCollisionObject class
    • added a CcdFilter class to select rigid bodies with CCD active
    • added a DacUserFilter class to select physics objects belonging to a particular DynamicAnimControl
    • added findEnd() and findOtherBody() methods to the PhysicsJoint class
    • publicized the boneIndex() methods of BoneLink and TorsoLink
    • construct a RangeOfMotion (for a fixed joint) using Euler angles
  • 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
  • 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.

Version 2.0.1 released on 8 August 2020

Bugfix: characters and ghosts ignore their own ignore lists!

Version 2.0.0 released on 22 July 2020

  • 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 the PhysicsCharacter 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.

Version 2.0.0-test2 released on 4 July 2020

  • Added collision listeners for ongoing contacts, to the PhysicsSpace class.
  • Added totalAppliedForce() and totalAppliedTorque() methods to the PhysicsRigidBody class.
  • Added a setContactCalcArea3Points() method to the PhysicsCollisionEvent 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.

Version 2.0.0-test1 released on 19 June 2020

  • Changes to the library API:

    • Deleted the MinieCharacterControl and VHACDResults classes.
    • Replaced inner class PhysicsSoftBody.Material with SoftBodyMaterial.
    • Deleted deprecated methods and constructors.
    • De-publicized 7 debug-control classes.
    • Changed arguments of the PhysicsCharacter, CharacterControl, and Convex2dShape constructors from CollisionShape to ConvexShape.
    • Changed an argument of a HullCollisionShape constructor to float....
    • Changed the shape arguments of sweepTest() methods to ConvexShape.
    • Changed an argument of the volumeConvex() method to ConvexShape.
    • Privatized 6 fields:
      • CollisionSpace.physicsSpaceTL
      • CompoundMesh.scale
      • PhysicsSpace.physicsJoints
      • PhysicsSpace.pQueue
      • VHACD.indices
      • VHACD.vertices
    • Changed 7 returned collections to unmodifiable collections.
    • The PhysicsCollisionObject and PhysicsCollisionEvent classes extend the NativePhysicsObject class.
    • Added a private constructor to the VHACD class.
  • 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 .

Version 1.7.0 released on 31 May 2020

  • 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 and VehicleTuning are never freed
    • worldInfo field of PhysicsSoftBody not cloned, loaded, or saved
    • FINE logging of collision spaces reports nativeId=0 in create()
  • Fixed bugs in applications:

    • SliderJoint destroyed multiple times in TestAttachDriver
    • NullPointerException thrown in TestRbc
    • "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
  • 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 and isWorldInfoProtected 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 a PhysicsSpace
    • an option to protect the world info of a PhysicsSoftBody from replacement by a PhysicsSoftSpace
    • methods to rotate/translate a CompoundCollisionShape
    • a method to activate all collision objects in a PhysicsSpace
    • publicized the addJoint() and removeJoint() methods of PhysicsSpace
    • keep track of the PhysicsSpace (if any) to which each PhysicsJoint is added
    • construct an IndexedMesh from the debug mesh of a CollisionShape
    • 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 for PhysicsCollisionEvent and PhysicsCollisionObject, to prepare for v2
    • getters for the proxy group and proxy mask of a PhysicsCollisionObject
    • construct a CompoundCollisionShape with specified initial capacity
  • New applications added:

    • TargetDemo, a shooting demo
    • PoolDemo, an eight-ball pool simulation with moody lighting
    • NewtonsCradle, a Newton's cradle simulation
    • TestScaleChange
    • 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
  • 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 .

Version 1.6.1 released on 28 April 2020

Fixed JME issue 1351 (crash during garbage collection)

Version 1.6.0 released on 12 April 2020

  • 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 a PhysicsControl that's already added to a Spatial
    • rebuildRigidBody() relied on static per-thread references to determine the body's PhysicsSpace
    • NullPointerException in DacWizard while editing the shape scale of a PhysicsLink
  • 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() and spaceId() methods to the PhysicsCollisionObject class
    • getRotationAngle(), setRotationAngle(), getSuspensionLength(), and setSuspensionLength() methods to the VehicleWheel class
    • a listDacMeshes() method to the RagUtils class
    • an appendFromNativeMesh() method to the NativeSoftBodyUtil class
    • a PcoType class
    • a getFlags() method to the PhysicsCollisionEvent class and also a ContactPointFlag class
    • copyIndices() and copyVertexPositions() methods to the IndexedMesh class
    • a serializeBvh() method to the MeshCollisionShape 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 a BoneLink
    • 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 an IndexBuffer.

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

Version 1.5.0for33 released on 12 March 2020

  • Fixed bugs:

    • NullPointerException in the DacWizard 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 of SixDofJoint
    • 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 of CollisionShape
    • 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.

Version 1.4.1for33 released on 12 February 2020

Fixed JME issue 1283 (CCD doesn't respect collision groups)

Version 1.4.0for33 released on 7 February 2020

  • Fixed bugs:

    • scaling bugs in CompoundShape and Convex2dShape
    • MyShape.height() returns wrong value for a CylinderCollisionShape
    • DebugShapeFactory cache should use a WeakHashMap for better garbage collection
    • issues with NativeSoftBodyUtil
    • soft-body debug geometries can't receive shadows
  • 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() and countCollisionGroupListeners() methods for the PhysicsSpace class
    • a countPinnedNodes() method for PhysicsSoftBody
    • a parseNativeId() method for the MyShape class, to replace parseId()
    • countCachedMeshes() and maxDistance() methods for the DebugShapeFactory class
    • RayTestFlag 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 new Jme3Tests 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.
  • Built using Gradle v6.1.1 .

Version 1.3.0for33 released on 5 January 2020

  • Fixed bugs:

    • PlaneCollisionShape never visualized.
    • Buffer limits not set in IndexedMesh.
  • Added library features:

    • 2-D collision shapes: Box2dShape and Convex2dShape
    • a setIndexBuffers() method for the DebugShapeFactory class
    • dump the moments of inertia of dynamic rigid bodies
    • castRay(), forwardAxisIndex(), rightAxisIndex(), and upAxisIndex() methods for the PhysicsVehicle class
    • getBrake(), getEngineForce(), and getSteerAngle() methods for the VehicleWheel class
    • a copyVertices() method for the SimplexCollisionShape class
    • construct a SimplexCollisionShape from a FloatBuffer range
    • construct a CylinderCollisionShape from radius, height, and axis
    • a getHeight() method for the CylinderCollisionShape class
    • a setScale(float) method for the CollisionShape class
    • addChildShape(CollisionShape) and addChildShape(CollisionShape, float, float, float) methods for the CompoundCollisionShape class
    • a listVolumes() method for the MyShape class
    • unscaledVolume() methods for the BoxCollisionShape, ConeCollisionShape, CylinderCollisionShape, EmptyCollisionShape, and SphereCollisionShape classes
    • DumpFlags values for BoundsInSpatials and VertexData
  • 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 to TestRbc.
    • 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.
  • 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 the PhysicsGhostObject, PhysicsVehicle, and VehicleWheel 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.

Version 1.2.0for33 released on 16 December 2019

  • Added a New6Dof constraint class, to eventually replace both SixDofJoint and SixDofSpringJoint. Also added 4 associated classes: MotorParam, RotationOrder, RotationMotor, and TranslationMotor.
  • Added a status line to the SeJointDemo application.
  • Changed the function of the Ins key in SeJointDemo and TestDac.
  • 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.

Version 1.1.1for33 released on 9 December 2019

  • Fixed bugs:
    • Crash due to a denormalized Quaternion in TorsoLink.
    • "K" key doubly mapped in the TestDac application.
  • 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 .

Version 1.1.0for33 released on 4 November 2019

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

Version 1.0.0for33 released on 8 October 2019

  • API changes:
    • BulletAppState extends AbstractAppState (JME issue 1178).
    • Removed the extrapolateTransform() and getPhysicsScale() methods from PhysicsRigidBody.
    • Renamed the getLocation() and getRotation() methods of ChildCollisionShape.
    • Privatized the objectId fields of CollisionShape and PhysicsJoint.
    • Privatized the collisionShape field of PhysicsCollisionObject.
    • Privatized the bodyA and bodyB fields of PhysicsJoint.
    • Privatized the cfm, erp, and split fields of SoftPhysicsJoint.
    • Finalized the getObjectId() methods of CollisionShape, PhysicsCollisionObject, and PhysicsJoint.
    • Protected many constructors that shouldn't be invoked directly.
    • Removed the countDistinctVertices() method from DebugMeshCallback
  • 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 an AbstractPhysicsControl
    • NPEs while serializing/de-serializing a DynamicAnimControl that's not added to a Spatial
    • NullPointerException while cloning a SoftBodyControl
    • out-of-bounds exception in DebugMeshCallback for an empty debug mesh
    • SoftBodyDebugControl doesn't resize debug meshes
    • RuntimeException in DacWizard while loading a non-model J3O
    • NullPointerException in DacWizard after loading a non-animated model
    • OtoOldAnim.j3o asset contained an invalid MatParamOverride
    • scaling and rotation bugs in DacWizard
    • bind pose not applied in to models in TrackDemo and WatchDemo apps
    • RopeDemo delete key cancels skeleton visualization
  • Added library features:
    • getSquaredSpeed() and setEnableSleep() for PhysicsRigidBody
    • getActivationState() for PhysicsCollisionObject
    • Activation and AfMode classes
    • correctAxes(), principalAxes(), and setChildTransform() for CompoundCollisionShape
    • copyRotation() and copyTransform() methods for ChildCollisionShape`
    • countMeshTriangles() for MeshCollisionShape
    • isConvex(), isInfinite(), isNonMoving(), and isPolyhedral() methods for CollisionShape
    • getViewDirection() for MinieCharacterControl
    • IndexedMesh constructors handle TriangleFan and TriangleStrip mesh types
    • SoftBodyControl 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 a PhysicsRigidBody
    • wheels of a PhysicsVehicle
    • describe a PlaneCollisionShape
    • simplify descriptions of various shapes, especially compounds
  • 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.
  • 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, and TestPhysicsRayCast 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 the jme3-utilities-ui library, and version 0.9.10 of the jme3-utilities-nifty library.
    • Built using Gradle v5.6.2 .

release log continues at https://github.com/stephengold/Minie/blob/master/MinieLibrary/release-notes-pre10.md