Camera.getWorldCoordinates returns incorrect values in parallel projection

If I “zoom out” a certain amount in parallel projection by changing the frustum, the camera stops returning values for getWorldCoordinates.



If I change Matrix4f.java from:

if ( FastMath.abs(fDet) <= FastMath.FLT_EPSILON )

return zero();

to

if ( FastMath.abs(fDet) <= 0 )

return zero();

everything starts working again.



The same thing happened in jme2 and their solution was to change FastMath.FLT_EPSILON to 0:

http://hub.jmonkeyengine.org/groups/general-2/forum/topic/matrix-cannot-be-inverted-in-parallel-projection/



Does it make sense to do it in jme3 as well or should I use something else to get world coordinates in parallel projection?

It seems the change was applied in jME2, but not in jME3.

Since people had no issue with it so far, I decided to apply it to jME3, it is in the latest SVN revision.

I see the change on the invert() method, but jme3 camera uses the invertLocal() method… could you change there as well?

Should be fixed now.

Yep, it’s perfect now, thanks.