Introducing DynamicAnimControl

Hello,
This is my first post/reply and I’d like to thanks all the contributors to JMonkey. Its a lovely game engine.

I was wondering if I could ask the motivation(s) for Minie. From what I have read, it seems like its intention was to simplify or improve the interface to the physics system bypassing jbullet. Was there other motivations like licenses?

Since its still a wrapper for bullet/pybullet - does that mean it will be using native libraries ? If so what platforms will be supported?

I have just begun playing with JMonkey & Minie - I’m not sure, but using a maven dependency …

  <repository>
          <id>bintray2</id>
          <name>bintray2</name>
          <url>https://dl.bintray.com/stephengold/jme3utilities</url>
        </repository>
&
  <dependency>
 	 <groupId>jme3utilities</groupId>
 	 <artifactId>Minie</artifactId>
 	 <version>0.6.2</version>
 	 <type>pom</type>
  </dependency>

does not download the Minie jar - it does download jme3-utilities-debug & jme3-utilities-heart
I had to download load the Minie.jar manually and add it to my build.

I’ve cloned the Minie repo, and will look through the samples you have provided.
Thanks !

1 Like

i had problems myself, but when you use gradle(for netbeans/SDK its plugin) then i was very easy.

Minie is like upgrade for physics in JME. It add better functions, myself i will use it for Ragdoll/kinematic mixing. but it also add other things/fixes. The only thing i dont like is that it require additional libs.(heart / debug)

It override standard native JME physics with this(its for osx/windows/linux versions compiled):

Then it also override Java packages for bullet (there are jme-bullet, jme-jbullet and jme-bullet-native or something like this, where jbullet and bullet-native is your choice what you use by default in default JME). Minie is using own override for jme-bullet-native.

in main page of:

you will find how to add Minie project. I suggest graddle because i tried using Ant before and had a lot problem.

license is in Minie project. it is BSD 3-Clause License(good one), as i understand its same for sublibs.

1 Like

My motivation for creating Minie was to use it in applications. For my applications, neither jme3-bullet nor jme3-jbullet is satisfactory.

Licensing was not a concern.

Minie does use native libraries. It includes support for the same 6 platforms that are supported by jme3-bullet-native:

  • Linux32 (architecture ‘x86’, operatingSystem ‘linux’)
  • Linux64 (architecture ‘x86_64’, operatingSystem ‘linux’)
  • MacOSX32 (architecture ‘x86’, operatingSystem ‘osx’)
  • MacOSX64 (architecture ‘x86_64’, operatingSystem ‘osx’)
  • Windows32 (architecture ‘x86’, operatingSystem ‘windows’)
  • Windows64 (architecture ‘x86_64’, operatingSystem ‘windows’)

I don’t know enough about Maven to explain why you had to add it manually.

Note that the Bullet C++ code is licensed under the zlib license. Everything else in Minie is BSD 3-clause.

1 Like

The latest Minie release is now v0.6.5 . You can find the JARs on GitHub at:
https://github.com/stephengold/Minie/releases/tag/0.6.5
and on Bintray at:
https://bintray.com/stephengold/jme3utilities/Minie/0.6.5

Inverse kinematics is still on hold. For a summary of recent changes, see the release notes:
https://github.com/stephengold/Minie/blob/master/MinieLibrary/release-notes.md

The README.md now includes advice on choosing which collision shape to use.

As ever, I welcome any constructive feedback.

3 Likes

Here’s a 5-minute video demo of rope simulation using DynamicAnimControl:

Source for the demo app is at https://github.com/stephengold/Minie/blob/master/MinieExamples/src/main/java/jme3utilities/minie/test/RopeDemo.java

By the way, Minie v0.7.0 was released yesterday. You can find the JARs on GitHub at:
https://github.com/stephengold/Minie/releases/tag/0.7.0
and on Bintray at:
https://bintray.com/stephengold/jme3utilities/Minie/0.7.0

0.7.0 adds a new physics control MinieCharacterControl which is intended as a substitute for JME’s CharacterControl class.

For a summary of other recent changes to Minie, see the release notes:
https://github.com/stephengold/Minie/blob/master/MinieLibrary/release-notes.md

As ever, I welcome any constructive feedback…

6 Likes

The code used in today’s buoyancy video is online at https://github.com/stephengold/Minie/blob/master/MinieExamples/src/main/java/jme3utilities/minie/test/BuoyDemo.java

Minie v0.7.6 was released tonight. You can find the JARs on GitHub at:
https://github.com/stephengold/Minie/releases/tag/0.7.6
and on Bintray at:
https://bintray.com/stephengold/jme3utilities/Minie/0.7.6

For a summary of the recent changes, consult the release notes:
https://github.com/stephengold/Minie/blob/master/MinieLibrary/release-notes.md

Also, I’ve updated Minie’s README.md to clearly explain why you might want to use Minie instead of jme3-bullet or jme3-jbullet: https://github.com/stephengold/Minie/blob/master/README.md

6 Likes

Today I submitted a pull request to add DynamicAnimControl to jme3-bullet and jme3-jbullet.

The PR implements a very pared-down version of DynamicAnimControl, corresponding roughly to its feature set in Minie as of October 2018. It doesn’t support:

  • attachments,
  • physics links without vertices,
  • frozen dynamic links,
  • bound/amputated kinematic links,
  • link volumes and densities,
  • centering heuristics,
  • shape heuristics,
  • inverse kinematics, nor
  • footprint estimation.

Many of these features will be very difficult to add to jme3-jbullet without access to the source code.

The good news is that it seems feasible to transition Minie to the new animation system. The port will probably take place in a new branch of the Minie repo, and for a while each release of Minie will be double: one version for JME 3.2 and one for JME 3.3. Since branching implies duplication of effort, I hope to make the transition period as short as possible. I haven’t decided when this should happen.

7 Likes

if noone really have jme3-jbullet sourcecode (but i remember someone provied link to some old fork) then i belive we should drop support for it, or “if someone is able”, then write a new one based on some older versions.

by drop i mean at least for DynamicAnimControl, because its like dead end because of jBullet.

because it block a lot. you are physics specialist here now :wink:

1 Like

The physics specialist wants to drop both jme3-bullet and jme3-jbullet. Minie is the future of physics in JMonkeyEngine—unless @pspeed publishes a physics engine.

1 Like

I guess we were given the link to the modified code that JME uses and then no one did anything with it. I’m asking if I can have the link again.

jbullet still works better for me. native bullet has a weird bug with the catch-up stuff that means I always have to run it single step. It’s weird because I’ve looked through the C++ code and I can’t spot the problem.

2 Likes

Source code for jbullet:

2 Likes

It’s great that you found the source code. You’re probably right that maintaining 3 libraries will be difficult for one person.

As for which libraries should be included in JME 3.3, I think that discussion belongs in a different Forum topic.

2 Likes

The pull request is integrated into jMonkeyEngine’s master branch!

Quazi reminded me that DynamicAnimControl (DAC) ought to have a page in the JME Wiki. To that end, I would like a few new users—alpha testers, in other words—to help me see the software with fresh eyes. The usual deal: as long as you’re using the software and providing feedback, I’ll support you as best I can. Send me a private message if you’re interested.

I expect the main hurdle to using DynamicAnimControl at the moment is configuring it for new models. In parallel with the documentation effort, I plan to write a configuration tool. The current tool (TuneDac) is an ugly hack, not worth documenting. And while I am gradually adding DAC tuning to Maud, Maud is a general-purpose editor, which makes it unnecessarily complex for this task. (Maud is also a long way from supporting the new animation system.) I foresee an immediate need for a tuning tool that’s simple and easy-to-use and can be made to work with the new animation system.

7 Likes

I hope not. Some of us cannot use jbullet.

2 Likes

Minie have updated/fixed bullet native library(same as JME have). No need drop, just update with Minie changes into it.

As i understand @sgold added jme3-bullet package classes for a DAC, but to have more features from Minie, why not just update [jme3-bullet-native] and state that all features from “some new minie related package” require use of jme3-bullet-native and will not work with jme3-jbullet.

its like “for android use android packages”, because also non android will not work… or “dont use both native and jbullet because it will not work correctly”. So same could be here “dont use minie package with jbullet”

Because as i see, jme3-bullet-native is not updated to required changes. In Minie there were not just changes to allow use of Minie, but there also were some fixes for physics. (that even if someone will not use Minei features, it will fix some problems for physics itself)

@sgold, i will check everything later myself, because what i need are ragdolls(half ragdolls, legs positioning and some nice features) as you already know, but after i will finish what i started.

2 Likes

Please take your discussion of physics libraries to another topic. This topic is about DynamicAnimControl.

A first draft of the DacWizard tuning tool is available from GitHub:
https://github.com/stephengold/Minie/tree/master/DacWizard

Current status: a cute toy. The “easy” parts are done: load a model from the filesystem, select which bones to link, configure the links, and write (Java) configuration code to a file.

Now comes the “interesting” part: automatically estimate range-of-motion from animation data…

5 Likes

I solved the interesting part. DacWizard is now ready for use.

I uploaded a walk-through video to YouTube. Take a look:

Puppet model was created by Nathan Vegdahl http://www.cessen.com
and is © Copyright Blender Foundation durian.blender.org

The Blender Foundation released Puppet under a Creative Commons Attribution 3.0
license.

5 Likes

re: your video: two forearm bones help simulate arm twist more cleanly, the low bone is usually constrained to only rotate with the hand on one axis to allow arm twist…long and short of it, the upper bone is the controller

1 Like