code: def project_point_cloud_at_capture(
      point_cloud, capture, render_type="rgb"
  ):
      if render_type == "rgb":
          assert point_cloud.shape[1] == 6
      else:
          point_cloud = point_cloud[:, :3]
          assert point_cloud.shape[1] == 3
      if render_type in ["bw", "rgb"]:
          keep_z = False
      else:
          keep_z = True
  
      pcd_2d = PointCloudProjectorNp.pcd_3d_to_pcd_2d(
          point_cloud,
          capture.intrinsic_matrix,
          capture.extrinsic_matrix,
          capture.size,
          keep_z=True,
          crop=True,
          filter_neg=True,
          norm_coord=False,
          return_index=False,
      )
      if render_type == "pcd":
          return pcd_2d
      reproj = PointCloudProjectorNp.pcd_2d_to_img(
          pcd_2d, capture.size, has_z=True, keep_z=keep_z
      )
      return reproj
  
file_path: ml-neuman/geometry/pcd_projector.py
imports: import numpy
  import torch
label_desc: Use image node_id 1 for calling a global function with example usage: project_point_cloud_at_capture(point_cloud, capture, render_type) and returns: reproj, pcd_2d