Add an camera to the scene. Args: camera_parameter (CameraParameter): An instance of class CameraParameter which stores rotation, translation and name of a camera. arrow_len (int, optional): Length of the arrow. Default
(self, camera_parameter, arrow_len=30)
| 51 | scipy_Rotation.from_euler('z', 180, degrees=True) |
| 52 | |
| 53 | def add_camera(self, camera_parameter, arrow_len=30): |
| 54 | """Add an camera to the scene. |
| 55 | |
| 56 | Args: |
| 57 | camera_parameter (CameraParameter): |
| 58 | An instance of class CameraParameter which stores |
| 59 | rotation, translation and name of a camera. |
| 60 | arrow_len (int, optional): |
| 61 | Length of the arrow. Defaults to 30. |
| 62 | |
| 63 | Returns: |
| 64 | list: |
| 65 | A list of vedo items related to the input camera. |
| 66 | """ |
| 67 | rot_mat = np.asarray(camera_parameter.get_value('rotation_mat')) |
| 68 | translation = np.asarray(camera_parameter.get_value('translation')) |
| 69 | cam_center = -np.linalg.inv(rot_mat).dot(translation) |
| 70 | arrow_end_origin = np.eye(3) * arrow_len * self.scale |
| 71 | colors = ['r', 'g', 'b'] # r-x, g-y, b-z |
| 72 | arrow_end_camera = \ |
| 73 | np.einsum('ij,kj->ki', np.linalg.inv(rot_mat), arrow_end_origin) |
| 74 | if self.y_reverse: |
| 75 | cam_center = self.y_reverse_rotation.apply(cam_center) |
| 76 | for axis_index in range(3): |
| 77 | arrow_end_camera[axis_index, :] = \ |
| 78 | self.y_reverse_rotation.apply( |
| 79 | arrow_end_camera[axis_index, :] |
| 80 | ) |
| 81 | vedo_list = [] |
| 82 | for i in range(3): |
| 83 | vedo_list.append( |
| 84 | vedo.Arrows([cam_center], |
| 85 | [cam_center + arrow_end_camera[i]]).c(colors[i])) |
| 86 | vedo_list.append( |
| 87 | vedo.Text3D(camera_parameter.name, cam_center, s=self.scale * 10)) |
| 88 | self.camera_list += vedo_list |
| 89 | return vedo_list |
| 90 | |
| 91 | def show(self, with_axis=True, interactive=True): |
| 92 | """Show cameras as well as axis arrow by vedo.show() |
no test coverage detected