/** * Positions the object in the plane of the screen/viewport (z = 0), with * x and y specified in GL screen coordinates (origin at bottom left); * Assumes: * - the object is a direct child of the current scene (not in a container) * - the current viewport is centered on the Z-axis, and has the given dimensions * - the current camera is positioned at the given eyeZ * * @param x object x coordinate in pixels [0 = viewport left] * @param y object y coordinate in pixels [0 = viewport bottom] * @param viewportWidth width of current viewport in pixels * @param viewportHeight height of current viewport in pixels * @param eyeZ location of current camera on Z-axis */ public void setScreenCoordinates(double x, double y, int viewportWidth, int viewportHeight, double eyeZ) { double[] r1 = new double[16]; int[] viewport = new int[]{ 0, 0, viewportWidth, viewportHeight }; double[] modelMatrix = new double[16]; Matrix.setIdentityM(modelMatrix, 0); GLU.gluUnProject(x, viewportHeight - y, 0.0, modelMatrix, 0, mPMatrix.getDoubleValues(), 0, viewport, 0, r1, 0); setPosition(r1[0] * eyeZ, r1[1] * -eyeZ, 0); }
setMeshTextures(o, model.name); o.setPosition(model.properties.lclTranslation); o.setX(o.getX() * -1); o.setScale(model.properties.lclScaling);
mGeometry.setPosition(matrix.getTranslation());
/** * Maps screen coordinates to object coordinates * * @param x * @param y * @param viewportWidth * @param viewportHeight * @param eyeZ */ public void setScreenCoordinates(double x, double y, int viewportWidth, int viewportHeight, double eyeZ) { double[] r1 = new double[16]; int[] viewport = new int[]{0, 0, viewportWidth, viewportHeight}; double[] modelMatrix = new double[16]; Matrix.setIdentityM(modelMatrix, 0); GLU.gluUnProject(x, viewportHeight - y, 0.0, modelMatrix, 0, mPMatrix.getDoubleValues(), 0, viewport, 0, r1, 0); setPosition(r1[0] * eyeZ, r1[1] * -eyeZ, 0); }
setMeshTextures(o, model.name); o.setPosition(model.properties.lclTranslation); o.setX(o.getX() * -1); o.setScale(model.properties.lclScaling);
mGeometry.setPosition(matrix.getTranslation());