The Minie physics library

I wouldn’t say that. There are still incompatibilities between Minie and jme3-bullet:

(1) Minie doesn’t support any Android or ARM platforms.

(2) Minie’s character control has a different name.

(3) Minie lacks KinematicRagdollControl.

(4) There are other incompatibilities in seldom-used areas (such as PhysicsSpace.addAll() and debug visualization) where I believe jme3-bullet was poorly designed.

I regard jme3-bullet and jme3-jbullet as legacy code. People shouldn’t use them without a good reason. But then, I’m a guy who still uses Java 1.8 and Windows 7, so who am I to judge?

By the way, do you have any suggestions on how to accelerate adoption of Minie?

It would be a great idea to write a blog entry about it - which would be picked up b google and therefore any physics + jmonkeyengine search would yield the blog page. It would also be included in the front-page since it will be the latest blog entry.

1 Like

I assume you’re referring to the JME blog at https://jmonkeyengine.org/blog/

How do I post to it?

Details are here.

Or if you prefer just write a markdown based post and I can do the rest.

1 Like

Wrote a post in the style of a press release and committed it to the repo, but I don’t see it yet, even after pressing Ctrl-F5. How often is the website updated?

1 Like

You have to build the html and push it to the github pages repo. Details are in the readme here.

1 Like

The blog post announcing Minie v1.4 is now live:
jMonkeyEngine | Minie Physics Library Version 1.4 Released!

5 Likes

nice, this is first post there (except Jayfella one).

I thought there will be more posts, but if there is problem people write it, then i think @jayfella should put something automatic there too, like Monthly topics or something.

2 Likes

Exciting developments in Minieville this month:

  • CharacterControl class and additional PhysicsSpace constructors (for compatibility with jme3-bullet)
  • bug fixes, including issue 1283
  • Linux-on-ARM64 support
  • new classes CollisionSpace, ConvexShape, MultiBody, MultiBodySpace
  • allow use of New6Dof joints in ragdolls
  • continuous integration

Expect a new release in early March…

7 Likes

Version 1.5 of Minie has been released. As usual, there are 2 versions: 1.5.0for32 (for JME 3.2.4-stable) and 1.5.0for33 (for JME 3.3.0-beta1).

The new release improves compatibility with jme3-bullet by adding:

  • a CharacterControl class (not 100% compatible, but suitable for most purposes)
  • 2 missing PhysicsSpace constructors

It also introduces some important new capabilities:

  • utilize New6Dof joints in a DynamicAnimControl
  • collision detection without dynamics (in a CollisionSpace)
  • 4 alternative contact-and-constraint solvers for physics spaces
  • 3 additional tuning parameters for contact-and-constraint solvers
  • support for “multibody” physics (see below)

It also fixes several known bugs in version 1.4.0:

  • JMonkeyEngine issue 1283: continuous collision detection doesn’t respect collision groups
  • Minie issue 3: crash at the peak of a character’s jump (with debug libraries)
  • a NullPointerException in the DacWizard application
  • compound shapes read from J3O assets always get the default margin
  • meshes returned by DebugShapeFactory.getDebugMesh() have incorrect bounds

Multibodies are a feature of Bullet that isn’t accessible via jme3-bullet. A multibody represents a hierarchy of rigid colliders connected by joints, similar to a DynamicAnimControl. For an example of their use, see TestMultibody.java. Hoping that multibodies might provide more efficient simulation of ragdolls, I added support to Minie, but as of this release, the feature is EXPERIMENTAL.

Linux-on-ARM support was also planned for this release. However, there were a couple hitches:

  1. The native assemble-and-test process relied on a Linux-on-ARM environment at Travis-CI.com that stopped working (for me) sometime around 18 February.
  2. JMonkeyEngine issue 1286, which is fixed in JMonkeyEngine’s master branch but not yet in any release
11 Likes

nice work! :+1:

You have added many new joint types/etc/fixed a lot issues and soon i will upgade and rebuild character again, so i got a questions:

idea: make character receive point physics force when hit, not breaking played 3.3 animation.
(character get shot in some part, and it have some recoil in this place while 3.3 animation is still playing (blending))
for example when someone get shoot in shoulder, he have visual effect of it.(torso go back and rotate)
for a leg same, but i also planned for a moment make ragdoll.

how solve idea:
when character shoot in for example left shoulder, create physics based pose(calculated in 1 frame)(idk if do via IK or just ragdoll based) and blend it with current 3.3 animation (so blend would give effect like character took physics force into left shoulder).

how solve idea 2:
just make partial ragdoll of bones near hitplace for 1 second, then blend again to animation. (and just switch DAC between kinematic/ragdoll for a moment)

Could you please suggest me best solution you would see here? Maybe there is some simple solution i dont know about, so i would prefer know it before start doing it.

when i will success with doing what i plan, will show video result later.

1 Like

also i wrote PM to you, but i removed it, so dont even look.

I had one issue before. Seems like Minie for 3.3 package require(in deps) JME-core beta1, is this possible make one that require 3.3 (no subversion) ? so i could use alpha5?

it was crazy for me, because im my deps i use alpha5, so when added Minie for 3.3, it changed jme-core package to beta1 for me.(Shape keys issue => will be fixed in beta2 and dont exist in alpha5)

1 Like

You can exclude the jme3-core module from coming with Minie in Gradle:

compile ("com.github.stephengold:Minie:$minieVersion") {
    exclude group: 'org.jmonkeyengine', module: 'jme3-core'
}
1 Like

@sgold I just want to say that your work on Minie is very impressive. Thank you for all the hard work you put into this. I am very excited for the multibody collisions.

4 Likes

@Ali_RS

not sure why it dont work for me. Maybe because im using package proxy server?

compile ("com.github.stephengold:Minie:1.5.0for33") {
    exclude group: 'org.jmonkeyengine', module: 'jme3-core'
}

after reload or clean’n’build its still beta1(only when Minie is added), odd.

or maybe my old gradle dont have it :smiley: (but well, it dont break in gradle build)

edit:

this fixed it for me:

compile("org.jmonkeyengine:jme3-core:$jmeVersion") {
    force = true
}

still im unsure if Minie really require beta1, or can be alpha5

2 Likes

Glad you fixed it. :slightly_smiling_face:

Since I haven’t tested Minie v1.5 with jme3-core-3.3.0-alpha5, I’m not sure either.

I’d expect difficulties with -alpha2, due to PR 1181, but I don’t recall any breaking changes after -alpha5.

I suspect the following suggestion didn’t work because the dependency on jme3-core is indirect, by way of Heart v5.1:

compile ("com.github.stephengold:Minie:1.5.0for33") {
    exclude group: 'org.jmonkeyengine', module: 'jme3-core'
}

I understand that developing apps on alpha and beta releases of libraries can get crazy. That’s why I continue to support JME 3.2.

As always, if you encounter issues, please let me know.

1 Like

Thanks for the idea.

There’s already a blending mechanism in the BoneLink class. In order to apply an impulse to the shoulder, you’d first set the link to ragdoll mode for one or more physics ticks. Afterward, you’d blend back to kinematic mode (animated) over a short interval.

I look forward to that video.

1 Like

@sgold

Hello, i created one(not important it seems) issue for DAC in Minie:

https://github.com/stephengold/Minie/issues/5

i think DAC should skip no-weights elements same as JME 3.3 animations do (and probably 3.2 too)

i had once this issue before and i dont even seen there was little element without weights. so it could be more user-friendly just to skip them.

1 Like

Why does that issue seem unimportant to you?