Most CNC based modellers tend to work backwards at least compared to 3D design / CGI heightmapping methods. i.e. They use a function based modeller to generate a heightmap and displace a mesh with it... they just don't usually know it.
They take an image.
Generate a vector.
Split the vector into separate (user defined) closed spline shapes.
Cap the shapes(automatically) to form meshed areas.
Use parameters / adjustments to apply shaping and height.
When adjustments etc are visualised / edited /tuned to requirement heightmaps are calculated (in the background by software) and applied to a plane or other surface. A displaced relief mesh is the result in the viewport.
Apps that work like this are generally based on manipulation of vector (SVG) gradients behind the inteface. The software calculates the gradient values / shape / transitions based on the vector, parameters and edits applied in the view. When smoothing the final output, a bitmap version is generated and a bitmap based smoothing / blurring algorithm is applied followed by displacement of a mesh with it.
These apps hide both the process AND the principles applied in it from the user... detrimentally so in my opinion.. Many CNC users remain oblivious to what they are actually doing when building reliefs with this type of software. They have no grasp of the principles of height-mapping even though they are creating height-mapped reliefs.