I want to create a shape like a pipe, like below image and blend file.

I created the mesh below in Houdini, but I could deal with it only in simple case, and I couldn't improve it any more in Houdini. So I am trying blender.

.blend file: http://pasteall.org/blend/index.php?id=51832

enter image description here

What "non-uniform cross-section" means both 1. and 2.

  1. scaling independently on each axis of cross section
  2. changing the cross section shape.

I tested the below but I have trouble in all of them.

Could you tell me effective way to create a pipe which has non-uniform cross-section ?

I don't think my question is duplicate of Curve Bevel function, scale? because my question emphasises the non-uniform cross section and mentioned that Curve Bevel function doesn't allow us to use non-uniform cross section.

  • $\begingroup$ It isn't clear what you are trying to do. You have a pipe with a non-uniform cross section in that file. I assume it isn't the kind of non-uniform that you want. Are you trying to blend from a square cross section to a circle, or something like that? $\endgroup$
    – edna
    Commented May 28, 2019 at 1:55
  • $\begingroup$ sorry for confusing. I created this shape by procedural modeling in Houdini. But in Houdini, I have difficulty in creating more complex non-uniform cross-section. For example, rotating cross section, or snapping the cap to another shape, and blend cross sections as you say. So I want to create it in direct modeling, if possible. $\endgroup$
    – onion mk2
    Commented May 28, 2019 at 2:47
  • $\begingroup$ so yes, it is one kind of non-uniform that I want. The reason why I want to know how to create this in blender is I think that blender may allow me to create more shape which I couldn't create in houdini $\endgroup$
    – onion mk2
    Commented May 28, 2019 at 3:19
  • $\begingroup$ Can you sketch roughly what kind of object it is that you want to make in the end? $\endgroup$
    – user1853
    Commented May 28, 2019 at 16:48
  • $\begingroup$ Thanks for reopening. I am bad at sketch, so I paste the image of the shape what I want create. https://imgur.com/a/zSQpHMD This is polygon hair. I think this shape made up from some of pipes, which each has non uniform cross section. $\endgroup$
    – onion mk2
    Commented May 28, 2019 at 22:07

1 Answer 1


You can certainly extrude a cross section along a curve and rotate that cross section, change its size and change the end cap.

Try using a curve modifier with an array modifier and change the start/end caps:

enter image description here

You can also experiment with bevel curves and tapers:

enter image description here

In the old days we used to be able to transition between cross sections by using dupliframes to create multiple copies of a mesh along a curve at frame intervals (e.g. one every 10 frames) and then loft them together. Something like this: old Blenderartists thread but I'm not sure how you do that now. Maybe using the animation nodes add on. It's a starting point at least.

Hopefully somebody will have a better answer for you, but in the meantime this gives you something to work with.

  • $\begingroup$ I'm interested in lofting, too .. couldn't see the DupliFrames method in the your BA link? @batFINGER gave a nice answer here. What would be really nice would be a revival / rewrite of the bSurfaces add-on, which, among other things, enabled lofting between curves / gpencil of arbitrary resolution. $\endgroup$
    – Robin Betts
    Commented May 28, 2019 at 7:12
  • $\begingroup$ You can use dupliframes along these lines using 2.79: youtube.com/watch?v=ZGfFiakg6Z8 (basically add path curve, add cross section object, ctrl-p to make object follow path, panel:Object/Duplication/Frames untick Speed, ctrl-shift-a to make duplicates real). The trick is how to join the resulting cross sections manually, i.e. lofting, which is where I can't help you. $\endgroup$
    – edna
    Commented May 29, 2019 at 3:50

You must log in to answer this question.

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