SurfaceRelief 1.8.2

SurfaceRelief 1.8.2 (require Rhino version 7.22.22255.5001 or above)


  1. Create amazing 3d relief from a single image.
  2. Output NurbsSurface, easy for CNC.
  3. Inbuild AI takes Nurbs modeling to the next level.
    Install: Unzip and move entire “SurfaceRelief” folder to C:\Users\username\AppData\Roaming\Grasshopper\Libraries. All files need be unblocked. (3.5 MB)

1.8.2 UPDATE

  1. Correct typos
  2. Update components: BmpTransSrfUV, ViewCapture, DisplayGeo
    SurfaceRelief-Tile compose (advanced tutorial).zip (932.9 KB)

1.8.1 UPDATE

  1. New components: BmpTransformSrfUV, SubD2Brep, SrfSwapUV, BmpEdgExdS, BmpEdgGrdS
  2. Component update: EnvironmentBackdrop, BmpEdgExd, BmpEdgGrd, BmpTransPolar, BmpConcatenate, BmpBackgroundClean
    Example: A 2D image by Midjurney to 3D model.
    alien egg_BMP_0

1.8.0 UPDATE

  1. After 1.8.0, SurfaceRelief requires Rhino 7.22.22255.5001.
  2. New component: BmpBackgroundClean.
  3. New tool set Render. Support Raytrace mode and bake PRB material with texture!
  4. New tool set View. Easy navigate and save snapshoot.

    SurfaceRelief-PBR texture (advance tutorial).zip (6.0 MB)

1.7.4 UPDATE

  1. Support to read and synchronize with PSD file.

    SurfaceRelief-Sychonize with PSD (advanced tutorial).zip (12.1 MB)

1.7.3 UPDATE

  1. Work with other bitmap plugins
  2. New component: BmpWrap

SurfaceRelief-Work with other bitmap plugins (advanced tutorial).zip (3.3 MB)

1.7.2 UPDATE

  1. Fix bug that closed surface relief out of index error.
  2. New component added: BmpTranformPolar
  3. New component added: BmpCrop
  4. New component added: SurfaceConstructingCurves
  5. New component added: SurfaceRecreateFromCurves

    SurfaceRelief-Polar transform (advanced tutorial).zip (789.2 KB)
    SurfaceRelief-Bitmap transform surfaceUV (advanced tutorial).zip (1.5 MB)


Test file for clean and steep cut style.

Experiment with microscope photo



The images look great!

I have not tested this yet, but I will when I have some time.
One comment based on your images is the geometric pattern might benefit from an optional method to process it a bit differently than the organic patterns.

The blending at the corners will complicate the nurbs surfaces and result in a “heavier” file and may have issues when it comes to efficiently machining.

Do you think it would be possible to modify to create sharp corners and planar surfaces at the top and bottom of the elevation?


Do you mean like this?

I call this “steep relief”. There is parameter “Cps(AI)”. Set it to 0, you will have a slick cut. The gh file of this image is

About heaviness, if things are complex, it suppose be heavy. I found that nurbs file is much lighter than mesh, even for complex surface.

P.S. I have a strange feelling. Can huamn really see a nurbssurface? Because nurbssurface does not have vetices, which means there is no way to colour a nurbssurface without mesh agent. Nurbssurface is invisilbe to human eyes by its nature.


Here is what I’ve been able to accomplish so far - pretty pleased - VERY interested in continuing to learn how to tweak the settings and see the output!! I’ve included rhino screenshot and SR settings - let me know what you think!

1 Like

Can you post your image? I try out some settings.

1 Like

leaf (34.7 KB)

Lift nose a bit


nice! Thank you. I will try a print tomorrow (US central time zone) -

1 Like

too thin to print as is - maybe a way to thicken the walls or better, make the whole thing solid?

I did some processing in meshmixer and printed it - drying and curing now - will post it in a bit!

Here is what I’ve achieved till now!
Based on the @zhuangjia777 support, of course!
I think it is a very nice and useful tool!


may be a silly question - how to you bring in a different bmp? I don’t see the “path - select one existing” option anywhere - there is a module but it doesn’t appear to connect to anything? thanks!


the simplest solution is to copy/paste the code for each surface on which you apply a bitmap.

surfaceRelief allows multiple inputs. For example, two surfaces with two images inputs the component match surface and image in pairs. If two surfaces with one image input, the two surface share the same image.

1 Like

is there a way to make the surface the same shape as the bmp - I’ve been using the -70 to 70 rectangle only - because that is about all I’m comfortably able to do. thank you