Picking animated models

Does anybody has already gained some experiences about picking animated models on android?

When I used the inputManager.getCursorPosition() method the results were quite disappointing.

After switching to the coordinates that I receive via onTouchEvent, the results at least came close to what i’d expect, but it’s still not really accurate.

So here’s my code:


public void onTouchEvent(int x, int y){

Vector2f cursorPosition = new Vector2f(x, y); // inputManager.getCursorPosition();

Log.d("###JME###", “Cursor position: " + cursorPosition);

Vector3f origin = cam.getWorldCoordinates(cursorPosition, 0.0f);

Vector3f direction = cam.getWorldCoordinates(cursorPosition, 0.3f);


Ray ray = new Ray(origin, direction);

CollisionResults results = new CollisionResults();

rootNode.collideWith(ray, results);

if (results.size() > 0) {

Log.d(”###JME###", "collisions detected: " + results.size());




public void simpleInitApp() {

BinaryImporter imp = new BinaryImporter();


try {

Node ogreModel = (Node) imp.load(activity.getResources().openRawResource(R.raw.oto), null, null);

ogreModel.setLocalTranslation(0, 60, 0); // 0, 20, 0

ogreModel.setLocalScale(.25f, .25f, .25f);



AnimControl control = ogreModel.getControl(AnimControl.class);

AnimChannel chan = control.createChannel();




} catch (NotFoundException e) {


} catch (IOException e) {





In JME2 https://wiki.jmonkeyengine.org/legacy/doku.php/jme2:picking?s[]=picking the developer has to call updateCollisionTree() but this method is not available in JME3-Android.

Yes, animated models dont update the geometry collision information. You could use the ragdoll control and the physics collision shapes of it to do per-part picking of a character.