pickObject with Ray

Hi,

I want to get the name of geometry that I click…
The code :

public void cargar() {
Spatial casa = assetManager.loadModel(“Models/casa/Old House 2 3D Models.j3o”);
//casa.setName(“Soy la casa”);
this.getStateManager().attach(bulletAppState);
CollisionShape sceneShape = CollisionShapeFactory.createMeshShape((Node) casa);
landscape = new RigidBodyControl(sceneShape, 0);
casa.addControl(landscape);
bulletAppState.setDebugEnabled(false);
bulletAppState.getPhysicsSpace().add(landscape);

    rootNode.attachChild(casa);
    //System.out.println("nombre "+casa.getName());
}

in the simpleUpdate

public void simpleUpdate(float tpf) {
flyCam.setMoveSpeed(60f);
cambiarMovilidadCamara();
pickObjectWithMouse();

}

other method
private Geometry pickObject() {
Geometry objetoSeleccionado = null;
CollisionResults results = new CollisionResults();

    Vector2f click2d = inputManager.getCursorPosition();
    Vector3f click3d = cam.getWorldCoordinates(new Vector2f(click2d.x, click2d.y), 0f).clone();
    Vector3f dir = cam.getWorldCoordinates(new Vector2f(click2d.x, click2d.y), 1f).subtractLocal(click3d).normalizeLocal();
    Ray ray = new Ray(click3d, dir);

    
    //cambio el  rootNode por elselectableObjects
    selectableObject.collideWith(ray, results);
    System.out.println("el resultado de la colision : " + results.size()); // It is always zero :frowning: 

    if (results.size() > 0) {
        objetoSeleccionado = results.getClosestCollision().getGeometry();
        //System.out.println("nombre de la geometria " + results.getClosestCollision().getGeometry());
    }

    return objetoSeleccionado;
}

private void pickObjectWithMouse() {
Geometry objectPicked;
if (leftClick) {
objectPicked = pickObject();
if (objectPicked != null) {
System.out.println("nombre de lo que toco: " + objectPicked.getName());
}
}
}

not because the result is zero, thanks for the help

have you had a look at TestMousePicking ?

For the future:

1 Like