6

I have a chain object, and I have a curve it follows. I got it to work for following curve, but chain object are not circles but both parts are more like stretched circles (ovals).

Object I made with two toruses one rotated 90 degrees and then joined them together. I tried single torus too, but same issue persists, on a curve it just looks like a stretched oval.

What is the issue?

Duarte Farrajota Ramos
  • 59,425
  • 39
  • 130
  • 187
notverybright
  • 629
  • 2
  • 7
  • 10

2 Answers2

18

The curve modifier distorts the objects, that is the intended behavior. If you want an undeformed array use either by Instancing (Duplifaces before 2.8*) or a particle system instead.

Add your Array+Curve modifier stack to a simple plane mesh instead.

Create a new plane mesh, parent one single chain link to it and activate Object Properties > Instancing > Faces (Duplifaces pre 2.8*)on the plane's object properties.

Then add the Array modifier, use an empty object rotated $90º$ to introduce rotation to each link. Activate the Object Offset option and pick the empty.

Adjust spacing and settings as desired, and then add the curve modifier exclusively to the plane object alone.

Array+Curve+Duplifaces

Alternatively use a particle system instead of Instancing > Faces feature with one particle per face if you wish to hide the original link independently. Manually adjust particle count to match the number of arrayed links.

Duarte Farrajota Ramos
  • 59,425
  • 39
  • 130
  • 187
  • ok i followed this animation but when i use array it only multiplies the plane – notverybright Dec 09 '16 at 03:11
  • But I thank you for taking your time. i will see some tutorials and info about dublifaces and hopefully can figure out what to do. Thanks a lot – notverybright Dec 09 '16 at 03:53
  • You have to parent the torus to the plane – Duarte Farrajota Ramos Dec 09 '16 at 05:10
  • How do you stop the plane from being rendered? – Jammer Nov 21 '19 at 20:40
  • Which part didn't work for you in 2.8? I just managed to follow along just fine. Also if you search you will find what you seek https://blender.stackexchange.com/questions/118835/eevee-particles-hide-mesh-emitter-at-render/118841#118841 – Duarte Farrajota Ramos Nov 22 '19 at 01:00
  • Thanks, this works but I don't understand the purpose of the plane and parenting the torus to it. Once I got it working, I deleted the plane and nothing changed. Is the plane there to reduce deformation of the torus? In my question https://blender.stackexchange.com/questions/295991/simple-array-along-bezier-curve-3-5-1-not-working-the-way-i-expect?noredirect=1#comment510208_295991 I had significant torus deformation but did not use the plane. – Jon Jul 02 '23 at 13:19
  • The faces determine where the torus will be placed preventing distortions – Duarte Farrajota Ramos Jul 02 '23 at 14:12
0

For modern versions of Blender with Geometry Nodes available, a friendlier approach can be used.

Chain Curve

  1. Add a Geometry Nodes modifier to your bezier curve.
  2. Use a Curve to Points node set to Length, and adjust the Length as desired.
  3. After that use an Instance on Points node
  4. Add whatever geometry you like to the Instance socket. In the illustrated case I constructed a torus (from a curve circle and a Curve to Mesh node, but you can use any bespoke object instead)
  5. To rotate every other instance you can use a Rotate Instances node
  6. Under the Selection socket connect an Index node to identify which instances to rotate
  7. Between the to add a Math node set to Modulo of $2$, to only select every other instance

Geometry Nodes Instance on curve

Duarte Farrajota Ramos
  • 59,425
  • 39
  • 130
  • 187