class_docstr: This is a module responsible for creating 3D bounding boxes and drawing them
  client-side on pygame surface.
class_docstr_tok: ["This","is","a","module","responsible","for","creating","3D","bounding","boxes","and","drawing","them","client-side","on","pygame","surface","."]
docstr: Returns 3D bounding box for a vehicle.
docstr_tok: ["Returns","3D","bounding","box","for","a","vehicle","."]
code: def _create_bb_points(vehicle):
      """
      Returns 3D bounding box for a vehicle.
      """
  
      cords = np.zeros((8, 4))
      extent = vehicle.bounding_box.extent
      cords[0, :] = np.array([extent.x, extent.y, -extent.z, 1])
      cords[1, :] = np.array([-extent.x, extent.y, -extent.z, 1])
      cords[2, :] = np.array([-extent.x, -extent.y, -extent.z, 1])
      cords[3, :] = np.array([extent.x, -extent.y, -extent.z, 1])
      cords[4, :] = np.array([extent.x, extent.y, extent.z, 1])
      cords[5, :] = np.array([-extent.x, extent.y, extent.z, 1])
      cords[6, :] = np.array([-extent.x, -extent.y, extent.z, 1])
      cords[7, :] = np.array([extent.x, -extent.y, extent.z, 1])
      return cords
  
imports: import glob
  import os
  import sys
  import carla
  import weakref
  import random
label_desc: Use image node_id 4 for calling the ClientSideBoundingBoxes obj's underlying member method code with example usage: obj._create_bb_points(vehicle) and returns: cords