Hello everyone! I want to put a box in front of a mobile camera, but no matter how I try, I can’t get it
If you use the
lookAt() function to point the camera at a certain point in space and the
setPosition() function to set the location of the camera, you should be able to have the camera direction vector :
const cam = createCamera(); const cameraLocation = createVector(1, 1, 1); const cameraLookAtPoint = createVector(0, 0, 0); // Set the camera (order is important cam.setPosition(cameraLocation); cam.lookAt(cameraLocation);
Then compute the direction vector :
const cameraDirectionVector = p5.Vector.sub(cameraLookAtPoint, cameraLocation).normalize();
Then you can get any point on the direction of the camera by multiplying by a certain value :
const distanceFromCamera = 2; const boxCenter = p5.Vector.add(cameraLocation, p5.Vector.mult(cameraDirectionVector, distanceFromCamera));
Then do the display part :
// Display the box push(); translate(boxCenter.x, boxCenter.y, boxCenter.z); box(0.5); pop();
Here is a picture showing the principle :
Thank you so much! Solved a big problem for me! By the way, is it easy to convert the mouse to space position coordinates in p5, such as hitting a model like a bullet and getting their intersection point?
Would that be possible in processing too?
You are welcome!
For mouse / geometry intersection, you need to cast a ray from the camera based on the field of view of the camera and the compute the intersection with the object.
Obviously it’s easier with a plane or a primitive shape since the intersection formulae is simple.
You can check this :
Thanks guy ！I wiil check soon！