code: def filter_humphrey(mesh,
                      alpha=0.1,
                      beta=0.5,
                      iterations=10,
                      laplacian_operator=None):
      
      # if the laplacian operator was not passed create it here
      if laplacian_operator is None:
          laplacian_operator = laplacian_calculation(mesh)
  
      # get mesh vertices as vanilla numpy array
      vertices = mesh.vertices.copy().view(np.ndarray)
      # save original unmodified vertices
      original = vertices.copy()
  
      # run through iterations of filter
      for _index in range(iterations):
          vert_q = vertices.copy()
          vertices = laplacian_operator.dot(vertices)
          vert_b = vertices - (alpha * original + (1.0 - alpha) * vert_q)
          vertices -= (beta * vert_b + (1.0 - beta) *
                       laplacian_operator.dot(vert_b))
  
      # assign modified vertices back to mesh
      mesh.vertices = vertices
      return mesh
docs: Smooth a mesh in-place using laplacian smoothing
      and Humphrey filtering.
  
      Articles
      "Improved Laplacian Smoothing of Noisy Surface Meshes"
      J. Vollmer, R. Mencl, and H. Muller
  
      Parameters
      ------------
      mesh : trimesh.Trimesh
        Mesh to be smoothed in place
      alpha : float
        Controls shrinkage, range is 0.0 - 1.0
        If 0.0, not considered
        If 1.0, no smoothing
      beta : float
        Controls how aggressive smoothing is
        If 0.0, no smoothing
        If 1.0, full aggressiveness
      iterations : int
        Number of passes to run filter
      laplacian_operator : None or scipy.sparse.coo.coo_matrix
        Sparse matrix laplacian operator
        Will be autogenerated if None