code: def only_horizon(meshes, xs, ys, zs, expose_horizon=False):
      
  
      # if visibility == 0, it should remain 0
      # if visibility == 0.5, it should stay 0.5 if mu > 0 else it should become 0
      # if visibility == 1, it should stay 1 if mu > 0 else it should become 0
  
      # this can all by easily done by multiplying by int(mu>0) (1 if visible, 0 if hidden)
  
      return {comp_no: mesh.visibilities * (mesh.mus > 0).astype(int) for comp_no, mesh in meshes.items()}, None, None
docs: Check all visible or partial triangles to see if they're behind the horizon,
      by checking the direction of the z-component of the normals (ie hidden if mu<0)