# how to make a stroke, like in vector software (illustrator, flash, animate, etc.), with a round cap?

I am trying to make 'flat' vector lines in 3D space. I don't want to use a grease pencil object because I still want to use the 3d object modifiers.

So far, my solution is to make a Bézier curve, use the extrude option in the Geometry tab and add a solidify modifier. I also added a bevel modifier but it only makes the corners slightly rounded.

Is there a better way to do it? Especially is there a way to have round cap? (In my picture I did a round cap by hand, but then I lose the ability to edit/animate my stroke (made with 2 vectors))

Thanks for your comments!

EDIT

By digging into the curve modifier that was recommended, I kind of found a solution:

I made a square plane and a filled circle of the same size (it's important that their origin is in their middle) I also created a curve which has the same origin as the square.

Then, to the Plane, I added the Array modifier>Fit type>Fit Curve as well as the Curve modifier. This makes a curve that follows exactly my Bézier curve. Then with the Array modifier, it is possible to add Start/End Caps, I selected the circle for that. With a few adjustments and a Subdivision modifier it worked.

Now it's not a perfect solution, especially if I animate that stroke, the shape constantly changes. Also, the fact that both origins have to stay at the same place doesn't make it easy to use... :(

Does anyone have a better idea?

thanks

• i don't think thrre's any easy way to do it, you need to hook a half-sphere to each end of your curve and make their dimension fit perfectly so that you can't see any seam Commented Aug 28, 2020 at 16:11
• Check my answer here. Basically, the line is modeled straight in 3D, then a curve modifier is applied. Commented Aug 28, 2020 at 17:21
• @RonJensen Thanks for your comment! By digging into the curve modifier, I kind of found a solution that I added as an edit to my question. What do you think if it? Commented Aug 29, 2020 at 13:22
• You can add an answer to your own question. Have you considered using capsule shapes in the array modifier? You can set the copies to overlap. Commented Aug 29, 2020 at 16:27

## 1 Answer

a solution (that is not perfect):

Make a square plane and a filled circle of the same size (it's important that their origin is in their middle) Create a Bézier curve which has the same origin as the square.

On the plane, add an Array modifier>Fit type>Fit Curve as well as a Curve modifier. This creates a curve that follows exactly the Bézier curve. (see picture for details) Then with the Array modifier, it is possible to add Start/End Caps. Selected the circle if you want Round Caps. With a few adjustments and a Subdivision modifier it works.

To secure the whole thing, I advise adding 2 Object Constraints on the Bézier curve: CopyTransform (the plane) and Limit Distance (0 m) (see picture for details). This blocks most of the possible problems that you will get if you try to move the plane object.

This method doesn't let you easily change the width of the stroke (which depends on the plane's size) Trying to scale the whole thing might get you in trouble and break the link between the plane and the Bézier Curve.

Good Luck!!

• I forgot to say that on the Bézier Curve's properties I checked Stretch and Bounds Clamp Commented Aug 31, 2020 at 10:27
• And I also realized that it is better to use CopyLocation and CopyRotation instead of CopyTransform. When doing so, changing the scale of the plane will change the width of the line instead. Commented Aug 31, 2020 at 10:32