hi thanks for reply.
I tried again with reproject2D3DWS.
The results are as followed:
No camera movement yet
touch = (45, 340), vector result = (-0.5078125, -0.057291668, 0.0)
After camera.moveCamera(camera.getXAxis(), -0.3f)
touch = (45, 340), vector result = (-0.5078125, -0.057291668, 0.0)
I got both the same values at 2 cases. It should be different since the camera has moved. Did I miss anything yet?
Here's the new code:
frame = new FrameBuffer(gl, width, height);
world = new World();
world.setAmbientLight(10, 10, 10);
sun = new Light(world);
sun.setIntensity(255, 255, 255);
Texture texture = new Texture(BitmapHelper.convert(context.getResources().getDrawable(R.drawable.test3)), true);
TextureManager.getInstance().addTexture("texture", texture);
texture.setClamping(true);
plane = Primitives.getPlane(1, 0.08f);
plane.calcTextureWrapSpherical();
plane.setTexture("texture");
plane.setTransparency(0);
plane.build();
world.addObject(plane);
Camera cam = world.getCamera();
cam.moveCamera(Camera.CAMERA_MOVEOUT, 1f);
cam.lookAt(plane.getTransformedCenter());
public void onTouch(MotionEvent e) {
Camera cam = world.getCamera();
SimpleVector rayTemp = Interact2D.reproject2D3DWS(cam, frame, (int)e.getX(), (int)e.getY());
rayTemp.z = plane.getOrigin().z;
Log.v("kkl", (int)e.getX() + ", " + (int)e.getY() + ": " + rayTemp.toString());
plane.setOrigin(rayTemp);
}
Btw, I'm using RENDERMODE_WHEN_DIRTY for rendering mode in GLSurfaceView. It only renders after onTouch() function. I reckon it's quite safe to do so since rendering is called after modifying objects.