Compute the air zone or negative mesh

I don’t know about the zbuffer… two things that come to my mind…
with probing planes:

from vedo import *
msh = merge(Sphere(r=0.5), Sphere(r=0.5).x(1).scale(0.8)) # whatever mesh

step = 0
planes = []
for i in range(8):
	step += 0.1
	p = Grid(resx=100, resy=100).scale(2).pos(0.5,-1, -0.5+step)
	planes.append(p)
planes = merge(planes).wireframe(0).c("grey5")

cplanes = planes.clone().cutWithBox(msh).cutWithMesh(msh, invert=1).triangulate() 
show([[msh, planes], [cplanes, f"volume: {cplanes.area()*0.1}"]], N=2, axes=1)

or you can use vtkOBBTree.IntersectWithLine() from a grid of points on your plane to the mesh and then multiply by the size of the grid element… I don’t know if it’s faster.