code: def orbit_on_path(self, path=None, focus=None, step=0.5, viewup=None, bkg=True):
          
          if focus is None:
              focus = self.center
          if viewup is None:
              viewup = rcParams['camera']['viewup']
          if path is None:
              path = self.generate_orbital_path(viewup=viewup)
          if not is_vtki_obj(path):
              path = vtki.PolyData(path)
          points = path.points
  
          def orbit():
              """Internal thread for running the orbit"""
              for point in points:
                  self.set_position(point)
                  self.set_focus(focus)
                  self.set_viewup(viewup)
                  time.sleep(step)
  
  
          if bkg:
              thread = Thread(target=orbit)
              thread.start()
          else:
              orbit()
          return
docs: Orbit on the given path focusing on the focus point
  
          Parameters
          ----------
          path : vtki.PolyData
              Path of orbital points. The order in the points is the order of
              travel
  
          focus : list(float) of length 3, optional
              The point ot focus the camera.
  
          step : float, optional
              The timestep between flying to each camera position
  
          viewup : list(float)
              the normal to the orbital plane