3D isosurface plotting in Makie

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

5 Likes