@Override
    public int collideWith(Collidable other, CollisionResults results) {
        if (!(other instanceof Ray)) {
            return 0;
        }

        // first try a 2D pick;
        camera.getScreenCoordinates(((Ray)other).getOrigin(),tmp);
        tmpv2.x = tmp.x;
        tmpv2.y = tmp.y;
        int nbHit = pick(tmpv2, results);
        if (nbHit > 0) {
            return nbHit;
        }

        for (Geometry g : geomToJoint.keySet()) {
            if (g.getMesh() instanceof JointShape) {
                continue;
            }
            Vector3f start = g.getUserData("start");
            Vector3f[] ends = g.getUserData("end");
            for (int i = 0; i < ends.length; i++) {
                float len = MathUtils.raySegmentShortestDistance((Ray) other, start, ends[i], camera);
                if (len > 0 && len < PIXEL_BOX) {
                    CollisionResult res = new CollisionResult();
                    res.setGeometry(g);
                    results.addCollision(res);
                    nbHit++;
                }
            }
        }
        return nbHit;
    }
Creates a wire with bone lengths data. If the data is supplied then the
wires will show each full bone (from head to tail).

@param armature the armature that will be shown
@param joints the Node to visualize joints
@param wires the Node to visualize wires
@param outlines the Node to visualize outlines
@param deformingJoints a list of joints
jme3-core/src/main/java/com/jme3/scene/debug/custom/ArmatureNode.java