code: def camera_tri_angle(
      self, tmesh, pose_angle_deg=[0, 0, 0], cam_dist=-4.5
  ):
      rot_z = rotation_z(pose_angle_deg[2])
      rot_y = rotation_y(-pose_angle_deg[1])
      rot_x = rotation_x(pose_angle_deg[0])
      rotation = rot_z.compose_before(rot_y).compose_before(rot_x)
  
      translation = Translation([0, 0, +cam_dist])
      camera = rotation.compose_before(translation)
  
      cam_mesh = camera.apply(tmesh)
      camera_direction = (
          -cam_mesh.points
          / np.tile(np.linalg.norm(cam_mesh.points, axis=1), [3, 1]).T
      )
      view_angle = np.sum(
          camera_direction * cam_mesh.vertex_normals(), 1
      )
      return view_angle
  
imports: from utils.align2stylegan import align_im2stylegan, align_mesh2stylegan
  from core.projection_handler import Projection_Handler
  from skimage.morphology import remove_small_holes
  import time
  from utils.ganfit_camera import apply_camera_only3d, get_pose
  from utils.utils import *
  from core.arcface_handler import Arcface_Handler
  from utils import generate_heatmap
label_desc: Use image node_id 5 for calling the Operator obj's underlying member method code with example usage: obj.camera_tri_angle(tmesh, pose_angle_deg, cam_dist) and returns: view_angle