I have a plane in 3d space. Every time a user clicks, I want to map the mouse location to a location on the plane, and then draw a sphere in that location. Help?
You need to do a ray-plane intersection
screenToWorld will give you points on your pick ray
And then use intersection maths to see where the ray and plane coincide
You could use ofxRay for this
Thanks for anyone else wondering this is how I mapped screen positions to a position on a x-z plane;
ofVec3f screenToWorld = cam.screenToWorld(ofVec3f(ofGetMouseX(),ofGetMouseY(),0.0));
ofxRay::Ray ray(cam.getPosition(),screenToWorld - cam.getPosition());
ofxRay::Plane plane(ofVec3f(0,0,0),ofVec3f(0,1,0));
ofVec3f pointOnPlane;
plane.intersect(ray,pointOnPlane);
ofLog() << pointOnPlane;
2 Likes