I would like to loft between 2 circles to make a mesh/faces connecting smaller circle to larger circle, how could I do that?

enter image description here


To clarify: what is the reason behind this? / What is my end goal? I'd like to recreate generalized truchet tile types in 3D parametrically: enter image description here

Here they are done in 2D parametrically: https://observablehq.com/@osteele/truchet-tile-generation

My approach so far is:

  1. This seems like a complex problem for me, and I have no way of gauging the difficulty of it. People might yell at me if I just ask "how do I recreate these in 3D?" about "what work have you done?"
  2. I'm going to split it up into sub-questions then ask those and try to piece it back together again
  3. The first approach which seems like it would be less cumbersome is not to re-create the algorithm but to create something on top of the 2D parametric designs. I take them in as SVG, create 'fake' cross-sections (circles become spheres, and other rounded shapes become 3D in the same way).
  4. As part of that end goal, the first thing I need to figure out is how to loft between circles (or just shapes of any kind) a la: Lofting between edges
  5. Why? So that I can create cross-sections parametrically from an input SVG file, and then given those cross sections, loft between them.
  6. That is just one approach, but obviously ideally I would like to recreate the entire algorithm in geo nodes in 3D, but I have no clue how to do it.

EDIT: To make what I mean even clearer:

Here's a 3D model approximation of what I want. Note: I don't want to replicate truchet tiles, I want to replicate truchet tile types.

I took this image:

enter image description here

And I modeled half of it very poorly here:

enter image description here

I say I modeled "half" of it because I would want to do that same curved-cylinder like shape for the white curved lines as well, and the botttom black curved line as well.

Here's what it looks like from the side:

enter image description here

Here's what it looks like from on top:

enter image description here

I would want the black and white shapes to be different meshes because I want to assign different materials to both.

  • 1
    $\begingroup$ For now Geometry nodes can't really edit meshes like that. You can try your hand at sverchok addon which seems more up to the task $\endgroup$
    – Gorgious
    Commented Jul 28, 2021 at 19:30
  • $\begingroup$ Node to loft two curves: cgpy.gumroad.com/l/loft $\endgroup$
    – ofekp
    Commented May 2, 2023 at 21:36

1 Answer 1


I don't think it is possible to "loft" in geometry nodes at the moment.

However, I don't think lofting is necessary for the problem you're trying to solve.

From what I saw in your link, the truchet tiles seem to be about connecting pairs of edges of a regular polygon with a smooth curve without connecting the same edge twice.

If I were to generalize this to 3D, I would say "truchet solids" would mean connecting pairs of faces of a platonic solid with a smooth curve without connecting the same face twice. Meaning truchet cubes would look something like this:

3 "truchet cubes"

Luckily, this is possible to achieve in the Blender 3.0 alpha release, which has nodes for curves.


first, make bezier segment node: bezier segment node

he take 4 points and make curve from them. simpl.

make him fat

hair is nice, but snek is nicer.

convert with curve to mesh using a smol circle as profil to make a snek

thicken curve

make a snek group

we have one snek, but we need more snek

copy paste is bad so lets make group so we can use him again

select all node except output node and Node > Make Group.

we want the "start" and "end" to be input so we can adjust them:


what are cube faces?

imagine cube in center of universe

imagine he is size 2. where is his faces?

his faces is in such points:


so make 6 Vector nodes with the values i tell you above

and feed them to 3 copies of the group node we created

then join all the sneks and you should get:

3 sneks

still boring

okay we make one truchet cube. but he is boring.

how we make the other ones? we need to shuffle order of vectors

becaus then different face will be connected.

but how we shuffle?

we want programmatic, not manual.

make swap

here is how you swap:

swap nodes

now, if both switch are on, the vectors will be swap

otherwise they be not swap.

test it!

make swap random

is boring to turn switch on and off

is better to add random:

add random

now, switch will be on or off depending on seed value.

make swap random group

again, copy paste is bad because it will be mess

create new group with random, math, and swap node:

swap group

also note: i rename inputs and outputs so it make sense

and i also added seed offset - we will need him later!

more swap!

now, time to use swap group

copy paste him:

swap all vectors

it look like spaghetti mess, but i promise is simple:

-random swap 2 and 3

-random swap 4 and 5

-random swap 6 and 1

then, make sure you have different "seed offset" for each swap (otherwise random value will be same)

finally, connec all seed to group input (now you can control him in modifier)


you can duplicate the object and use different seed values


now each one look different.

you can mess with the nodes a bit to adjust different things

some creative ess

(hint: to make him not sharp, i adjust the first snek group we make)

  • 1
    $\begingroup$ My god, thank you so much. What an impressive answer. This isn't quite what I was looking for (I was more looking to make any black circle, for example, into a sphere, and any curved black lines into cylinders with rounded edges, akin to giving 'thickness' to the 2D svg image), but still very informative and interesting. $\endgroup$
    – Hmm
    Commented Aug 12, 2021 at 20:25
  • $\begingroup$ Thanks! I'm pretty sure this is a good 3D generalization of them truchet thingys (see intro paragraphs). Could you perhaps describe what you intended the end result to be? Geo curves are currently somewhat limited and require a special way to think to achieve something, so perhaps you're on the wrong track? idk, just a thought – probably room for a new question $\endgroup$ Commented Aug 12, 2021 at 20:29
  • $\begingroup$ Re: what's described in the edited comment. Are you just trying to add thickness to the 2D versions? Pretty sure you can do that, just not by lofting SVGs $\endgroup$ Commented Aug 12, 2021 at 20:31
  • $\begingroup$ Sorry I will try to make a little 3D model to make what I mean clearer. $\endgroup$
    – Hmm
    Commented Aug 12, 2021 at 20:45
  • $\begingroup$ Okay I edited my answer to include half of a 3D model to better explain what I mean. $\endgroup$
    – Hmm
    Commented Aug 12, 2021 at 20:56

You must log in to answer this question.

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