1
$\begingroup$

I'm trying to rig a flexible rod using bones (for use in Unity). I've attempted to use 2 bones, one at the base and one at the tip of the rod

enter image description here

I have then used the weight paint mode to paint the weight so the end of the rod is more bendy:

enter image description here

In pose mode, the problem is the bend seems to be happening at a single point, rather than following the weight

enter image description here

I have added a deform->armature modifier to the rod:

enter image description here

And I think my armature/rod is parented correctly:

enter image description here

How can I make the rod curve smoothly? I've tried using multiple bones but the rod bends at very sharp angles, not smoothly. The following image is an idea of how I want the rod to curve (on the Z axis and X axis)

enter image description here

$\endgroup$
4
  • $\begingroup$ Try moving Susbsurf higher in stack. Probably the rod mesh doesn't have enough geometry. $\endgroup$
    – Mr Zak
    Mar 27, 2016 at 17:16
  • $\begingroup$ @MrZak thanks, I've tried with the subsurf before and after the the armature modifier but with no luck. Here's what the geometry looks like $\endgroup$
    – eskimo
    Mar 27, 2016 at 18:12
  • $\begingroup$ You would be looking for spline IK $\endgroup$
    – sambler
    Mar 28, 2016 at 9:01
  • $\begingroup$ @sambler unfortunately spline IK only works inside Blender, it can't be imported into Unity $\endgroup$
    – eskimo
    Mar 28, 2016 at 9:13

1 Answer 1

1
$\begingroup$

I would start with one bone for the whole rod (the bendy part anyways), and weight all the geometry to that bone. Then...

  1. Get into bone edit mode, select the bone.
  2. Invoke the Subdivide command on that bone, for that rod, I'd subdivide it about 6-8 times. But use your judgement.
  3. Get into Pose Mode, and select all the bones.
  4. Select the rod mesh, and get into weight paint mode.
  5. Hit the "W" key, and select "Assign Automatic from Bones" from the popup menu.

Automatic weights for stuff like this usually works out pretty good. I'd recommend b-bones subdivision to you, but if your exporting to a Game Engine, I'm not sure those would be supported.

$\endgroup$
3
  • $\begingroup$ Thanks for the suggestion. Using too many bones causes some weird issues in Unitys physics engine, stuff like this, so ideally I'm trying to limit it to one or two bones. I've managed to get it bending a bit better using the method from my original post and painting each bones weight individually, but it still looks far from realistic, it still seems to bend at one single point instead of evenly (using the weight of course) along the entire length $\endgroup$
    – eskimo
    Mar 27, 2016 at 18:08
  • $\begingroup$ Bummer! Unfortunately I can't help you wrt to Unity. Awesome that you have a workaround though. $\endgroup$ Mar 27, 2016 at 18:49
  • $\begingroup$ I think I'll probably end up modifying the mesh programmatically in unity, my blender skills are lacking. Thanks for your help Mike, appreciate it! $\endgroup$
    – eskimo
    Mar 27, 2016 at 18:52

You must log in to answer this question.

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