4
$\begingroup$

This may be a simple question.

Essentially I am procedurally generating random 3D figures using a bezier curve and bezier circle bevel object, however, one of the only things I can't figure out how to do is how to round the end caps of the object.

I have tried using a taper object like suggested here but have had only limited success.

This is about as close as I've gotten: enter image description here

I should note that all of this is done through Python and I'm not modeling any of this by hand. So any suggestions for how I can make the rounded caps programmatically would be greatly appreciated.

$\endgroup$
4
  • $\begingroup$ It seems that in your that you didn't increase the resolution of the curve/surface object enough: i.stack.imgur.com/4jxx0.png. Did you? $\endgroup$
    – Carlo
    Jun 6, 2016 at 17:40
  • $\begingroup$ an alternative : metaballs ? $\endgroup$
    – lemon
    Jun 6, 2016 at 17:43
  • $\begingroup$ Ah, of course it would something as simple as that. This is perfect thank you. Just to be clear for future searchers. Carlo's answer solved it. $\endgroup$ Jun 6, 2016 at 18:57
  • $\begingroup$ There is a built in solution now, for anyone else that comes across this issue: youtube.com/… $\endgroup$
    – Arjjacks
    Jul 15, 2021 at 5:15

2 Answers 2

8
$\begingroup$

Increase curve resolution

As stated in the Blender Artist thread you linked, you'll need to guarantee enough resolution to your curve in order to see the effect of the taper object in the starting and ending tip. In your image you are using something like 12, while the following image has a value of 512.

enter image description here

If you need to keep the polycount low, you could also vary the resolution of the curve only locally. A possible workaround could be yo interpose a "strategic" handle very near the tip without altering the overall curve aspect. See the difference between the had and the tail in the image below despite the curve object resolution is left untouched. The following curve has 3, not two handlers:

enter image description here

$\endgroup$
2
  • 1
    $\begingroup$ This should work fairly well too depending on what the user wants. Only problem I see with this solution is that unless the user creates a taper curve specific for every generated curve object, since the taper curve is applied along the whole length of the curve object the rounded caps will stretch or shrink depending on how long the curve is. In extreme cases it may start to look as if there's pointy ends or hard cut tips. If this is not a problem or a taper curve can be created for every curve length then this is a simpler method. $\endgroup$ Jun 7, 2016 at 0:15
  • 1
    $\begingroup$ They are surely some of the limitations of this kind of approach that one user must face. I agree with your comment @DuarteFarrajotaRamos. $\endgroup$
    – Carlo
    Jun 7, 2016 at 16:29
2
$\begingroup$

I don't think Blender has any built in tool or mechanism to produce those automatically.

Either use the typical Array + Curve modifier setup instead, with a start and end cap objects, or if you don't need the objects to actually be merged or a watertight mesh use some spheres as independent hook objects at the end vertex of your curves.

See how here How do I add a non-deformed end cap to a tube?

These are the basic solutions from a user point of view though, I am no coder but I think these can also be achieved programmatically through the python API

$\endgroup$

You must log in to answer this question.

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