Align camera position and rotation

9 次查看(过去 30 天)
link
link 2021-1-31
回答: Vidip 2024-8-27,13:03
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?

回答(1 个)

Vidip
Vidip 2024-8-27,13:03
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:

类别

Help CenterFile Exchange 中查找有关 Camera Views 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!

Translated by