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
    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
    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
    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
    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
    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$ 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
    May 29, 2019 at 3:50

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.