17
$\begingroup$

I found and followed a tutorial from youtube to create a spring but I found that it can't bend.

I want to create a jack in the box so I want the crown to be able to hang down to scare someone. The model doesn't have pose mode and I can't use bones to rig or weight paint it. What am I doing wrong here?

$\endgroup$
  • 1
    $\begingroup$ Do you have an armature selected when you try to go into Pose Mode? $\endgroup$ – CharlesL Aug 5 '13 at 16:02
24
$\begingroup$

You're going to have to abandon the method used in that tutorial if you want a bent spring that looks natural. Using a lattice will not preserve its volume. Just the same, using a curve deformer on the final spring will also not preserve the volume — even if you try to get smart and use nothing but curves. I tried it! It doesn't work.

Don't do this.

Here's the 5-minute walk-through of my method:

  1. Make an 8-sided circle. 8-sided circle

  2. Select one vertex. Press V to rip it from the rest of the circle. Right click or press Esc to cancel the transform. You should now have a "belt loop" that looks like a circle, but is disconnected at one point. rip

  3. Select one of the ends, turn on proportional editing in the "connected" mode, and set the falloff curve to "linear". proportional edit Press G to grab, press Z to lock it in the upward direction and viola! You are now stretching your spring! (Note: you need to scroll up until the proportion is greater than the circumference of the octagon. You want the bottom point to leave the floor. This is good because it means you linearly affected all the points.) Stretching the Spring

  4. Add an Array modifier with "Merge" turned on, and "1" unit in the Z of the Relative Offset section. Array modifier added

  5. Add a Subsurf modifier with the setting at 1. This turns the octagon shape into a circle shape. subsurf modifier #1 added

  6. Add your bezier curve and the curve modifier to the spring. For smoothest results, I set my modifier to affect "Z". Of course make sure that the spring object and curve object share the same location and that the first point in the bezier curve is at its center point. Curve modifier added

  7. Fatten the line of points up with the new Skin modifier! While we could have used a Bevel on a 3D curve, this method ensures that the spring has no volume until after the deformation takes place resulting in perfectly uniform wire. Set the shading on the modifier to "smooth" Skin modifier added

  8. Lastly, smooth the whole thing out with one last Subsurf. I like mine at a setting of 2 or higher. Done! Done! (detail)

render

$\endgroup$
  • $\begingroup$ I tried this and something went wrong with the skin modifier. I got some pinch points where it did a bad job of choosing the orientation of the squares surrounding the edges. I was able to half-repair it by hand, but the orientations were skewed enough that it was still a bit of a problem. If the skin modifier weren't dodgy, this method would be perfect. $\endgroup$ – Mutant Bob Aug 27 '16 at 19:23
  • $\begingroup$ Huh. It didn't used to do that, but you're right. It sure does now. Looks like we have a bug, folks. $\endgroup$ – Wray Bowling Aug 31 '16 at 19:12
  • $\begingroup$ This is still a problem in 2.79. $\endgroup$ – Gabriel Florit Jun 1 at 5:23
  • $\begingroup$ This works great in 2.80. We're ready for the future, y'all. 😎 $\endgroup$ – Wray Bowling Jun 28 at 17:50
7
$\begingroup$

If you only want to bend it in one direction, putting a simple deform modifier after a screw modifier would probably be the easiest solution.

To be more precise: Screw modifier (360°, Scren ~5, Steps >10, Iterations >5), below it a SimpleDeform modifier set to "Bend", the angle that you want your spring to be bent and a controlling Empty that is oriented to define the bending axis (Z axis of the empty defines the rotation axis).

enter image description here

$\endgroup$
  • $\begingroup$ Note that unlike Wray Bowling's solution, this does not maintain the thickness of the spring, so it should not be used for small radiuses of the bending in comparison to the radius of the spring itself. $\endgroup$ – JulianHzg Aug 8 '13 at 13:35
6
$\begingroup$

You can model the spring using any method, either an Array modifier or a Screw modifier and then use a curve modifier to deform and animate the spring. (Animate the both the curve and spring at once, or use hooks to move the control points of the curves)

Create a simple circle and move it away from it's origin in edit mode

enter image description here

Add a screw modifier

enter image description here

Add a curve modifier.

enter image description here

Note that the origin of the curve and the spring must be in the same place in order for it to follow the curve properly. You may also need to rotate the spring on the Y axis by 90 degrees depending on how you setup the spring and curve modifiers.

To animate the curve, simply create a hook (Ctrl+H) for each of the curve's control points and animate those.

$\endgroup$

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.