- Compose a pick ray with and origin and direction: ``` float viewportX = (2.0f * getMousePosX()) / viewportWidth - 1.0f; float viewportY = (2.0f * (viewportHeight - getMousePosY())) / viewportHeight - 1.0f;
Vector3 gdxOrigin = new Vector3(); gdxOrigin.set(viewportX, viewportY, -1.0f); gdxOrigin.prj(camera.invProjectionView);
Vector3 gdxDirection = new Vector3(); gdxDirection.set(viewportX, viewportY, 1.0f); gdxDirection.prj(camera.invProjectionView); gdxDirection.sub(gdxOrigin).nor();
// collide geometries ```
One way to do picking is to do CPU based collision math using Euclid, a performant and comprehensive vector math and geometry library.