Home Technical Talk

Ribbon setups, Morph Targets and UDK, oh my. Picking your brains for advice and tips.

polycounter lvl 9
Offline / Send Message
Roffotron polycounter lvl 9
Hello lads and lasses, I would like to pick your brains over the practical (in max) side to my dissertation. What I'm trying to achieve is have a fully-rigged octopus character for use within UDK as a playable character.

Now, worry not, most of the model (finished wireframe shots below) should be fairly straight-forward to rig as far as function is concerned. I've a fairly solid idea of how to rig the mantle, eyes, gills and siphon - but the most obvious part of the model provides me with some difficulty, which is ofc the arms and the webbing between them.

th_Gerald_005.png
th_Gerald_004.png
th_Gerald_003.png

So rather than go about saying "how do I rig this?" I'll put forward what I've in mind thanks to some research towards the matter.

What is needed is this:

1) The arm has to be manipulative enough to look like its handling objects, and have enough bones so that it doesn't seem to have a vertebrate structure underneath.

2) There must be a noise function to induce some form of random movement that can be turned off by the animator if need be.

3) Any control system by maxscript must allow a reasonable amount of control

4) Any animation system/contraints MUST be compatable with UDK or can be replicated within UDK.


Now the aim for each arm is to have a staggered bone layout, decreasing in size from the base of the limb so that the final 1/3 of each arm has 5 bones, so that it can be extremely manipulative. Then, I was thinking of a simple spline IK/FK blend system - but am instead thinking of a "Ribbon" setup, which would allow for some limited stretching of the limb and twisting, which isn't really possible with a spline IK. Sadly however how to do this for 3DS max is not very well documented (and yes, I have searched), although I am looking at how to translate what I've found for Maya into max.

Rigging the webbing is a another thing I'm having problems wrapping my head around. I'm thinking of perhaps having a setup of one or two bones between each leg and have them manipulate the mesh so that each section stretches and "folds" if need be. I've also been told by my supervisor that I could have intersection problems between my suction cups when the arms roll in on themselves - and suggested perhaps a morph target setup, although since this is going into UDK I'm not entirely sure how that would or could work.

I'm also thinking of having a maxscript dialog for each arm so that I could give animators rough control over the first 2/3 of the arm and finite control (FK/IK blend maybe?) over that last 1/3 so that each arm can manipulate objects. Not only that, have sort of noise modifier so that there is some random movement for when the character is in motion.

But that's what I have in mind - can I ask for any advice on what I'm thinking of, or perhaps some alternative method for what I'd like to achieve?

Thanks to all.

Replies

  • Mark Dygert
    Options
    Offline / Send Message
    I rigged up an octopus similar to this about a year ago, it was for a 3dsmax rendered project in max but it can be modified in a way to work real time, it just depends on how you set up the final resulting skeleton. I'll dig through my files and see if I can get anything more specific, but here is what I remember doing.

    For the webbing:
    I had a few bones for each piece of webbing, these bones where position constrained to follow the final skeleton bones for the tentacles on either side. 50% to the left bone, 50% to the right bone mean it floats in the middle.

    To pull the webbing away from the body and down the arms I would adjust the weighting between the position constraints to the next or previous bones in the the chain. I rigged up the weighting to a simple slider so it was easy to animate. I think I used reaction manger but I might of used wire parameters because I remember messing around with expressions... I'll have to go digging...

    I also remember attaching helpers to the position constrained bones and skinning to the helpers so I could hand tweak the position of each bone in the webbing. This was helpful when I wanted to add some drag to the webbing.

    For the tentacles:
    I had 3 skeletons:
    - Final Skeleton, everything was skinned to this. This was linked to helpers that where position constrained between the other two systems much like the webbing. Simple sliders adjusted which system the final skeleton would follow.

    - FK, standard bones, fixed length bones no squash or stretch. Nothing speical, selecting all the bones in the chain and rotating them on their local pivot(the only way to animate) I could whip them around, curl and uncurl them.

    - Stretchy bones that worked a bit like spline IK but the control points wouldn't slide off the end or travel to odd spots in the tentacle like spline IK tends to do.

    At each bone pivot there was a helper that could be manipulated and each bone would squash or stretch as the helper was moved, leaving the rest of the points where they where. This made it possible to pick up the tentacle with sort of a ripple wave motion emanating from the body.

    Because they squashed and stretched I got some great elasticity in the arms.

    After I had rigged up most of the arms manually, I found a script written by Jason Labbe that automated setting up the stretchy bones portion of it. I can't find the script on the web anywhere so here it is. Double click the first bone in the chain to select all the children and run the script.

    For the noise:
    I never implemented anything like noise, I guess playing around with noise controllers in the curve editor, would be the way to go but it really depends on what kind of noise you want.
Sign In or Register to comment.