Building a mesh with MarchingCubes.jl could be an alternative:
using GLMakie
using MarchingCubes
using LinearAlgebra
##
r = range(-1, 1, length=20)
vol = [norm([1.2x,y,z]) for x=r, y=r, z=r]
function contourmesh!(ax, vol, level; kwargs...)
m = MC(vol)
march(m, level)
msh = MarchingCubes.makemesh(Makie.GeometryBasics, m)
return mesh!(ax, msh; kwargs...)
end
f = Figure()
ax = LScene(f[1, 1])
levels = [0.3, 0.5, 0.8]
for (i, l) in enumerate(levels)
contourmesh!(ax, vol, l;
alpha = [1, 0.5, 0.2][i],
color = [:red, :orange, :yellow][i],
transparency = true,
)
end
f
