code: def explode(self, vector=None, origin=None):
          
          if origin is None:
              origin = self.centroid
          if vector is None:
              vector = self.scale / 25.0
  
          vector = np.asanyarray(vector, dtype=np.float64)
          origin = np.asanyarray(origin, dtype=np.float64)
  
          for node_name in self.graph.nodes_geometry:
              transform, geometry_name = self.graph[node_name]
  
              centroid = self.geometry[geometry_name].centroid
              # transform centroid into nodes location
              centroid = np.dot(transform,
                                np.append(centroid, 1))[:3]
  
              if vector.shape == ():
                  # case where our vector is a single number
                  offset = (centroid - origin) * vector
              elif np.shape(vector) == (3,):
                  projected = np.dot(vector, (centroid - origin))
                  offset = vector * projected
              else:
                  raise ValueError('explode vector wrong shape!')
  
              transform[0:3, 3] += offset
              self.graph[node_name] = transform
docs: Explode a scene around a point and vector.
  
          Parameters
          -----------
          vector : (3,) float or float
             Explode radially around a direction vector or spherically
          origin : (3,) float
            Point to explode around