code: def read_points3D_binary(path_to_model_file):
      """
      see: src/base/reconstruction.cc
          void Reconstruction::ReadPoints3DBinary(const std::string& path)
          void Reconstruction::WritePoints3DBinary(const std::string& path)
      """
  
      with open(path_to_model_file, "rb") as fid:
          num_points = read_next_bytes(fid, 8, "Q")[0]
  
          xyzs = np.empty((num_points, 3))
          rgbs = np.empty((num_points, 3))
          errors = np.empty((num_points, 1))
  
          for p_id in range(num_points):
              binary_point_line_properties = read_next_bytes(
                  fid, num_bytes=43, format_char_sequence="QdddBBBd"
              )
              xyz = np.array(binary_point_line_properties[1:4])
              rgb = np.array(binary_point_line_properties[4:7])
              error = np.array(binary_point_line_properties[7])
              track_length = read_next_bytes(
                  fid, num_bytes=8, format_char_sequence="Q"
              )[0]
              track_elems = read_next_bytes(
                  fid,
                  num_bytes=8 * track_length,
                  format_char_sequence="ii" * track_length,
              )
              xyzs[p_id] = xyz
              rgbs[p_id] = rgb
              errors[p_id] = error
      return xyzs, rgbs, errors
  
file_path: gaussian-splatting/scene/colmap_loader.py
imports: import numpy
  import collections
  import struct
label_desc: Use image node_id 5 for calling a global function with example usage: read_points3D_binary(path_to_model_file) and returns: xyzs,  rgbs,  errors