Align camera position and rotation

2 views (last 30 days)
link
link on 31 Jan 2021
Answered: Vidip on 27 Aug 2024
So I have a list of faces and vertices, which I render with as a patch. The result is a 3d object consisting of triangles. Now I want to be able to specify a triangle (consisting of 3 points) and let the camera focus to this face of the whole object. This means that the camera don't show the whole object, but sets the camera position somewhere near the midpoint of the wanted faces. Additionally the camera should be aligned with the normal of the face i.e. the rendered image is parallel to the face.
So far I computed the midpoint and the normal
mp = mean([p1, p2 ,p3],2)'
normal = cross(p1 - p2, p1 - p3)'
But set the camera to the right position
view(normal);
campos(mp);
set(gca,'CameraPosition',mp);
This functions seems to have the same effect. The camera is rotated somehow, but still the whole object is visible and also it seems like the camera is not always aligned with the normal. Do you have any idea how to solve this?

Answers (1)

Vidip
Vidip on 27 Aug 2024
I undertsand that you want to achieve the desired camera view where the camera focuses on a specific face of a 3D object and aligns with the face's normal.
You need to adjust the offset value to ensure the camera is far enough from the triangle to view it comfortably and the choice of the up vector can affect the orientation of the camera view. So, ensure it is orthogonal to the normal and not parallel to it.
Also, you can adjust the camera view angle according to your need by using "camva" function. Please refer to the below dcoumentation of "camup" and "camva" to get more information:

Categories

Find more on MATLAB Support Package for USB Webcams in Help Center and File Exchange

Tags

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!