While working on a project in higher category theory, a branch of mathematics, I was lead to draw so-called "surface diagrams" similiar to those that can find in the following papers; page 22-23, page 13 or in this blogpost.

You can think of them as objects in three-dimensional space made up of various coloured sheets of paper (of different shape, sometimes with their boundary partially jagged) glued together at parts of their boundary. Onto these "surfaces" one draws coloured "lines" (1-cells).

A self-drawn example is this one:

enter image description here

Reading from bottom to top (and right to left):

  • 1st slice: two sheets (one jagged, the other not) are merged into one;
  • 2nd slice: two sheets are merged into one at the first black line. Then the resulting sheet and the blue sheet are merged at the red line. Next the resulting sheet is merged at the black line with the sheet closest to the viewer;
  • 3rd slice: Two sheets are merged at the black line;
  • Note that the blue patch is not a hole, but a coloured sheet.

I am trying to model these three-dimensional objects in Blender — as a total beginner in Blender.

  • It is possible to model these surfaces with Blender, right? Or are there better suited alternatives?
  • How would you approach modelling such objects? Different suggestions welcome. Ideally, after having drawn one such surface one should be able to glue sheets of paper onto its side easily and stack two such surfaces on top of each other. I have unsuccessfully played around with Blender, trying the shrinkwrap modifier and various other modifiers to bend objects the way needed for my surface diagrams.
  • $\begingroup$ How you model may depend somewhat on the style of the render .. eg see here.. in your example, is the blue-hatched area a hole? Just in case someone wants to demonstrate a treatment for you.. $\endgroup$
    – Robin Betts
    Commented Feb 9 at 9:44
  • $\begingroup$ Thanks! The blue-hatched area is not a hole but another sheet of paper; see my edit. $\endgroup$ Commented Feb 9 at 9:56
  • $\begingroup$ The way you hope to do it is not clear for me. Should it start from some math? Or just modelling? $\endgroup$
    – lemon
    Commented Feb 11 at 15:18
  • $\begingroup$ @lemon It should not start with math. I am asking how to model these three-dimensional objects. What they represent mathematically is not important. Does that make it clearer? $\endgroup$ Commented Feb 12 at 16:21
  • $\begingroup$ Well, so, what are the problems or limitations you've encountered using for instance shrinkwrap? Again, I think we have here no "clue" to help, as you don't show anything about the pros or cons of your current approaches. $\endgroup$
    – lemon
    Commented Feb 12 at 16:27

2 Answers 2


(Using Blender 3.6.8)


Use NUBRS surfaces and Bezier curves for smoothness, and Geometry Nodes for non-destructive workflow.

Result according referenced paper


Add Surface/Nurbs Curve to model each branch:

NUBRS curves as starting point

Extrude NURBS curves to make NUBRS surfaces:

Extruded NURBS curves

Hooks are useful to constrain adjacent control points to move together:

Illustration of hooks at junction control points

Add Curve/Bezier to model each morphism (?), adjusting control points position in vicinity of the supporting surface:

Curves modelling transitions

A GeometryNodes modifier is added to each curve, to project it on its supporting surface and to make it thicker:

GN graph

Add Mesh/Ico Sphere to model nodes:

Ico Spheres at crossing of morphisms


More advanced setups

Hopf monads V5 Hopf monads V1 control points Hopf monads V5 Shading Editor for jagged surface

Blender file:

Hopf monads V8 Hopf monads V2 control points GN graph for jagged border Shader and image texture

Blender file:

  • $\begingroup$ Thanks a lot. This is a wonderful answer! And yes, the Bézier curves you have drawn onto the surface are indeed $1$-morphisms in a (monoidal) bicategory. $\endgroup$ Commented Mar 24 at 21:10
  • $\begingroup$ One question from an absolute beginner: How do you extrude NURBS curves to make NURBS surfaces? I tried the shortkey E, but this only adds a curve (if a node is selected). I found one solution: Duplicating the curve, joining the curves to obtain one curve and then pressing F. The result does not look like your screenshot, however… $\endgroup$ Commented Mar 24 at 22:06
  • 1
    $\begingroup$ The first curve must be created using the menu entry Add/Surface/Nurbs Curve, and not Add/Curve/Nurbs Curve. It seems that menus Surface and Curve are not producing the same Nurbs Curves... $\endgroup$ Commented Mar 24 at 22:46

Is this the kind of result you are trying to achieve? It's pretty easy to extrude new faces (sheets) from a Blender plane that acts as the main sheet.


Create a plane (⇧ Shift + A Add > Plane), rotate it vertically (R, X 90) then enter Edit Mode Tab).

You subdivide the plane (or add new loops with CTRL+R), pick edge select (2), select edges, press E to extrude and you will pull another sheet from the main plane.

Then you switch to vertex select (1), pick vertices and drag them around (with G) until you get the result you want. Or, in edge select, you can press R and rotate the edges. You can always add more edges with CTRL+R or by subdividing the entire model (⇧ Shift + A, Right Click, Subdivide). To add an edge between two vertices or make a face out of 3 vertices, select them and press F.
To delete a vertex, edge or face, select it and press X, then pick what feature you want to delete.

These are the basic tools for a beginner to start editing meshes.

You will need some patience until you get the desired concept. Use G and R to move and rotate vertices in combination with X, Y, Z to specify the axis for better control of the transformations.

  • 1
    $\begingroup$ In addition to this I would attempt to keep the geometry amount as low as possible so there are less vertices to move around and use Subdivision Surface modifier to smooth the surface. I think that's very important because the work gets very tedious very quickly with large amounts of vertices and edges. $\endgroup$ Commented Feb 15 at 9:48
  • 1
    $\begingroup$ +1: Thanks! This is very helpful, and the kind of result I wanted to achieve. Unfortunately, I can only award the bounty to one answer. $\endgroup$ Commented Feb 18 at 10:57
  • $\begingroup$ you're welcome, steflancien deserves it $\endgroup$
    – alexmro
    Commented Feb 19 at 9:41

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .