PDA

View Full Version : Advice for Tail animation/rigging


bradenbickle
10-25-2005, 03:53 PM
Does anyone have any advice "from experience" on animating/rigging a tail to a character?

I have tried several rigs but I'm just not finding anything that works well. Everything is too complicated or requires to many corrective key frames to make it look properly.

My specific character has a tail, but he's not an animal and the tail is not alive. It's a costume the character is wearing thus the tail just drags behind him on the floor.

I have also tried motion dynamics and cloth dynamics but they are too hard to control. I want it to drag most of the time but I also want to be able to pose it when I want a specific look.

I have tried IK a few different ways, but the way I'm doing it isn't working out all that well.

I thought one of you might have a good formula or something.

stooch
10-26-2005, 05:29 AM
chain of bones and then use inheritEnd("first bone","last bone","channel","faloff frames","amount")

-you will have to use this expression for each axis that you want to use.

-create an armature for the last bone of the tail and enable free rotate mode.

-play with the amount variable (usually its pretty small) to get the right amount of rotation, ie .1 etc.

-if you are doing loops, set the faloff frames to something low.

Then grab that armature and move it around.

Also there is a Cosman tutorial cd the latest one called mini tutorials, it has an expression based dynamics for a wagging like motion. But its so easy to use the inferitEnd/Root expressions with great control that you really wont need anything else.

then of course there are springs and flex motion, etc. But thats giving up too much control for my tastes.

bradenbickle
10-26-2005, 02:44 PM
Thanks, dude.

I was getting nervous that no one would give me any advice. I will dive into it. This sounds like a good plan.

bradenbickle
10-27-2005, 02:10 PM
Man, what is the trick with Inherit End?

I have used this several times and always had mixed results. Sometimes it works and sometimes it doesn't. I'm sure it's something I'm doing wrong but it's hard to believe on the test that I have been working on that there would be a problem.

Here is the process:

Create a Null.
Create a bone deform and add 7 bones.
Add the inherit end expression using the 6th bone as the root and 7th as the end.
Rotate the 7th bone to test it out.
(here's where the problem begins.)
It doesn't rotate the 6th bone at all.
Hmm.
Redo the expression making the 4th bone the root.
Rotate the 7th bone.
Rotation works backwards. When I rotate the 7th bone on +Pitch, the rest of the tail rotates on -pitch. And, of course, the 6th bone still doesn't rotate at all.
Now I'm lost.

This doesn't seem right.

Thoughts?

Suricate
10-27-2005, 02:47 PM
My guess would be that you have set the 'InheritRoot' expression to the wrong params, the docs are somewhat unclear (or wrong) on that. The 4th param is the time delay (in frames) while the 5th params is the strength falloff. Look at the threads here (http://forums.cgsociety.org/showthread.php?t=246978&highlight=InheritEnd) and here (http://forums.cgsociety.org/showthread.php?t=254024&highlight=inheritroot).

stooch
10-27-2005, 03:58 PM
you are doing it wrong. you need to affect more then 2 bones. Also, dont use inheritRoot, thats more for spines.

create a chain.

ie

Bone1
_Bone2
__Bone3
___Bone4
____Bone5

ok. now the bone 1 is a root.

bone 5 is the end.

use inheritEnd(Bone1,Bone5,3,1,.1)

you have to play with the last variable. if its too high your xforms will be messed up. if its too low, it will make the tail too stiff.

also the 1 is a frame falloff, typically, you want to play with it making it bigger for a looser (timing wise, not motion) tail and smaller for a tighter tail. i dont like to make it too high because it keeps moving even after the final keyframe.

bradenbickle
10-27-2005, 06:06 PM
I actually did use inherit End vs. Inherit Root but the results are the same as I stated.


use inheritEnd(Bone1,Bone5,3,1,.1)


I have tried to copy and paste this basic expression, but keep getting the red letters saying it won't compute.

What is the ".1" at the end? Is it something you add in there by hand?

here is the expression I'm using.
InheritEnd(Tail_Bone_2,Tail_Bone_6,rotate,3,1)
I still rotate the tip bone the opposite way. Haven't figured that one out yet. I may just turn the slip to one and forget about that part of it.

bradenbickle
10-27-2005, 06:09 PM
Got It. Finally Thanks. InheritEnd(Tail_Bone_2,Tail_Bone_6,3,1,.1)

Just replace the channel with a number.

stooch
10-27-2005, 06:13 PM
I actually did use inherit End vs. Inherit Root but the results are the same as I stated.



I have tried to copy and paste this basic expression, but keep getting the red letters saying it won't compute.

What is the ".1" at the end? Is it something you add in there by hand?

here is the expression I'm using.
InheritEnd(Tail_Bone_2,Tail_Bone_6,rotate,3,1)
I still rotate the tip bone the opposite way. Haven't figured that one out yet. I may just turn the slip to one and forget about that part of it.

replace the "rotate" with a channel number. IE everything in messiah is a channel.

012 are transform
345 are rotations
567 are scale. etc

InheritEnd(Tail_Bone_2,Tail_Bone_6,rotate,3,1)

WRONG!

InheritEnd(Tail_Bone_2,Tail_Bone_6,( "3" or "4" or "5",3,1)

RIGHT!

3 heading
4 pitch
5 bank.

so

InheritEnd(Tail_Bone_2,Tail_Bone_6,3,3,1)

and

InheritEnd(Tail_Bone_2,Tail_Bone_6,4,3,1)


control heading and pitch, and tahts typically all you need for a tail. just tweak the 2 last numbers to get the behavior you want.

edit.: ooops, i see you allready figured it out.

bradenbickle
10-27-2005, 06:29 PM
I'm such a maroon!

The number IS the channel. :rolleyes:

Okay now I made one for each channel. Everything looks great!:thumbsup:

Here's part two.

I also need an IK-style solution that keeps the tale locked into place when he's standing in one spot squating, etc. so the tale locks to the floor. Maybe I should try a floor expression as well and then I wouldn't have to worry about it.

If he's going down the stairs, etc. I need the tail to drag over the stairs. It's dead weight until I want it to do something specific.

I could apply a key fader between the two or something like that.

RonGriswold
10-27-2005, 06:39 PM
Well, it sounds like you've already got a solution; but typically I use Flex Motion to control a tail that needs to drag along the ground. You can just have the control points in worls space and then constrain them with MoveTo() to the character. Then for the controls that are supposed to be on the ground just set their Y values to 0 (or whatever offset puts the tail on the ground).

Hope that helps,

Ron
pmG

bradenbickle
10-27-2005, 06:41 PM
I know this is probably a lot to ask, but could you show me a test of that?

CGTalk Moderation
10-27-2005, 06:41 PM
This thread has been automatically closed as it remained inactive for 12 months. If you wish to continue the discussion, please create a new thread in the appropriate forum.