Forum > modo > modo Discussion > Bone deformations in Modo 302

Topic - Bone deformations in Modo 302

Page 1 of 4
[   1  2  3  4  |  Next ]
  [ Last ]
John Carter
rating: signal +7 signal 

Sacramento, CA
748 posts
Hi, I'm posting this in response to a question in the Gallery section (the "It's a fish" thread) about how one would animate a fish model in Modo. I suggested using weight maps as bone joints. And since most folks weren't aware of how to do this I created a little scene file to demonstrate. You can download it here:

"test_jointed fish.lxo" http://files.me.com/jcarter20/0c12c7

A movie file showing the joint deformations at work (really just a fish flopping around like crazy) can be download here:

"jointed fish.mov" 23.1 mb file @ http://files.me.com/jcarter20/cnyons.mov

Most people seem to not be aware that bones are just chains of joints that weight the value of verts assigned to them. Well, Modo 302 can do that- so in a way, it already has a bones feature. Not fully fleshed out for sure. We have no real constraint tools and no IK. But for simple creatures like a fish this is more than adequate. Some of the new animation tools announced for 401 will make rigging these jointed models even easier and more sophisticated. The fish model in the demo scene file includes 1 joint for the head, 1 joint for the jaw, 12 joints for the body and tail, and 3 joints each for the pectoral fins. I also included a joint for a cluster of verts to jiggle or sag the belly. All joints can be transformed, rotated and scaled.

Here are the steps I used to add joints (a.k.a. weight maps):
1) Select the geometry to be deformed from the Items list.

2) In the Lists tab create a new weight map for each joint you want to add to the geometry. You can create them one at a time or all at once if you'd like- doesn't matter. For better organization later, name each map something logical such as "joint_Lfin1," "joint_Lfin2," etc.

3) Now you're ready to assign vert points to each joint/weight map. Select a map from the list and then select the verts you want to include with it. With the verts still selected go to the upper menu bar and choose Vertex Map>Set Value... In it's window select "weight" for Map Type, and "W" for Component. In the Value tab enter the weight for the selected verts. I usually start with a value of 1.0. Then I'll test the joint by moving or rotating it to see what verts I want to weight differently- maybe 0.5 or 0.3. Click OK to apply the values.

4) Next, assign these weight maps to your geometry. In the Items tab, select your geometry and right click the pull-down menu to Deformers>Add Vertex Map. A map will be added as a child of the geometry. It may not be the right map you want, but that's easy to change. Select the deformer, and in it's Properties tab go down to the Vertex Map pulldown menu and choose the correct map. Repeat step 4 to add all your deformers (joint weight maps).

5) Now set the correct pivot point for each deformer/joint. Select each deformer in turn and set the selection mode to Pivot. Move each pivot into it's correct position and hit Return.

6) the final step is to link your joints into chains where appropriate. On the fish model I parented 12 joints together to deform the body and tail area. To parent one deformer to another just drag the child on top of the parent in the Items List.

That's it. Pretty simple and it goes fairly quickly once you get the procedure down. To make things easier, I usually have 3 windows open when assigning verts to maps: one model view to select my verts- a side or top view, another of the same view with it's shading set to vertex map so I can judge fall-offs, and a third window set to perspective so I can orient myself around the model or make tricky selections.

A couple of things took some experimentations to figure out. Deformation order matters, and appears to be working from the bottom-up in the Items list. So for example, lets say the head joint is at the bottom of the item list. It has all points associated with the head weighted to it. The jaw joint is next up in the item list. It has only those verts associated with the jaw weighted to it- BUT, these same verts have also been included/weighted to the head joint.

Because items are evaluated from the bottom up, when the head joint is rotated and then the jaw joint is also rotated, the jaw joint's rotation is added on top of the head joint rotation. Does that make sense? If you reverse the stacking order, the jaw joint's rotation gets skewed. So item order seems to make a difference.

Anyway, That's enough information to get started with. I'm no rigging or Modo expert, but if you have any questions I'll do my best to answer them.

Cheers!
4/29/2009 - 11:42 AM
[ Quote ]
SUNCHIRP
rating: signal 0  

Dundee, Scotland
38 posts
Very interesting, thanks for this, going to have a good mull over it later. :)

Regards.
4/29/2009 - 12:03 PM
[ Quote ]
Warner McGee
rating: signal 0  

Savannah, GA
1021 posts
Hey John,

You've really grown this discussion by leaps and bounds here friend. Great job of the rig, animation and explanation of your process!

I have a shark to animate and plan on employing this method. Who'd have thunk this could be done in Modo. Some creative and out of the box thinking and boom you have something new to play with. Very nice John. Thanks for your continued efforts.

As I begin playing with this idea I'm sure I'll come back with some specific questions for you.

-Warner

The 2nd mouse gets the Cheese.

4/29/2009 - 12:18 PM
[ Quote ]
John Carter
rating: signal 0  

Sacramento, CA
748 posts
Quote from Warner McGee :
Who'd have thunk this could be done in Modo. Some creative and out of the box thinking and boom, you have something new to play with.

Yes, this is fun! I got to thinking that it might not have been too clear what the "cluster" joint is doing in the fish's rig, so I've uploaded another version of the fish scene to demonstrate how cluster joints can be used to layer secondary animation on top of the primary animation. You can download the scene file here:

http://files.me.com/jcarter20/85vreb

A movie of the scene is here:

http://files.me.com/jcarter20/7foz7p.mov

And a clay rendered animation (watch out, it's 143 mb) is here:

http://files.me.com/jcarter20/7q2d0i.mov

What I did was scale the cluster joint to give the fish a large belly, so now it's more of a whale-type fish. I then key'd the joint's transforms to add in a jiggle on top of the body's motion.

Oh, and one more thing: I forgot to mention that bends done with joints can sometimes cause undesirable kinks in the geometry- like at an elbow for instance. These can be fixed with a custom morph target to force the verts into a more pleasing shape. All you would do is key the morph target in sync with the rotation of your joint. With 401's "set driven key" function you can make this automatic.

Cheers!

Message edited by John Carter on 4/30/2009 - 6:31 AM

4/29/2009 - 6:49 PM
[ Quote ]
Warner McGee
rating: signal 0  

Savannah, GA
1021 posts
You're like a machine John. Thanks again for expanding the possibilities of these V Maps. Very useful. I can't wait to see what you'll do with the 401 tools.

The 2nd mouse gets the Cheese.

4/29/2009 - 8:41 PM
[ Quote ]
Warner McGee
rating: signal 0  

Savannah, GA
1021 posts

Here's my Brown Shark model. I'm going to try and make him swim next via your technique. -W

The 2nd mouse gets the Cheese.

4/29/2009 - 11:57 PM
[ Quote ]
Plan B
rating: signal 0  

London
27 posts
Thank you so much for posting this! really interesting & lots of food for thought - I had overlooked vertex maps completely.
4/30/2009 - 6:02 AM
[ Quote ]
John Carter
rating: signal 0  

Sacramento, CA
748 posts
Quote from Warner McGee :
Here's my Brown Shark model. I'm going to try and make him swim next via your technique. -W

Very nice model, Warner! Can't wait to see it articulated :-)

One piece of advice: start with something simple until you get the procedure down. When I was first trying to wrap my brain around weight maps I articulated a simple tube with just 4 joints. Really helped me keep my sanity :-) The scene file ("whip-snap joint test.lxo") can be downloaded from here:

http://files.me.com/jcarter20/8l7qax

And a rendered animation ("joint test_whip snap" 2 mb) can be downloaded from here:

http://files.me.com/jcarter20/p9qncj.mov

Cheers!

Message edited by John Carter on 4/30/2009 - 6:48 AM

4/30/2009 - 6:19 AM
[ Quote ]
Warner McGee
rating: signal +1 signal 

Savannah, GA
1021 posts


I employed a slightly different technique to get the Weight Maps on my shark. I could not get the Vertex Map-Set Value to work with this model. I think that the many fins created some problems in creating the map. I got lots of weird deformations. So I used the following method instead:

-Figured out how many joints I needed to deform (10 along the body)
-Created a Weight Map for each but using a Linear Fall off in conjunction with the Weight tool. Instead of 0%-100% though I used 0%-10% starting from tip to tail (tail at 10%), skipped to joint 2 repositioning the falloff (still 0%-10% weight map), and so on right down to the tail.
-Because the weight maps overlap and therefore ADD to each other in terms of percentages, and because the V Maps are parented to each other, when you move joint 1 (pivot at shark's snout) you get 0% at the snout and a combined percentage of 100% at the tail. (hope this makes sense)
-Pivots are place about where the linear falloff was used to create each map
-Not sure if this method is the right one but it makes sense to me. Maybe with some more practice I can refine it a bit
-There are some problems with "floating" eyes. Not sure what to do about that.

Here's a VIDEO showing the animation. It's pretty tame but I will explore more dynamic tests next.

Thanks again John for your work on this subject!

The 2nd mouse gets the Cheese.

4/30/2009 - 12:21 PM
[ Quote ]
Warner McGee
rating: signal 0  

Savannah, GA
1021 posts


Here's a VIDEO showing the basic set up of the joints and V Maps. Note that the tail joint maps are very subtle in color because they go from 0% at the snout to 10% at the tail.

The 2nd mouse gets the Cheese.

4/30/2009 - 12:46 PM
[ Quote ]
John Carter
rating: signal 0  

Sacramento, CA
748 posts
Hi Warner,
Pretty nice- you've definitely got it working, except for the floaty bits you mentioned. That could have something to do with the deformation order in the item list. Through experimenting I've found that two weight maps parented to each other that share weighted verts can cause a double transformation. That may be causing some of the shark's eyeball jitter. More likely, it's because of influences from several joints pulling on it at the same time. Ideally, anything that needs to stay rock solid should be weight 100% to just one joint with no other influences.

Modos weight maps are embryonic at this stage, and probably not yet meant for "prime time" rigging yet. I'm still trying to figure out all the deformation order and chaining rules that apply :-)

Off topic question: where are you hosting your videos and what capture software are you using?
4/30/2009 - 1:45 PM
[ Quote ]
Warner McGee
rating: signal 0  

Savannah, GA
1021 posts
I use iShowU for my screen captures. Rock solid and affordable product!

I'm an illustrator by trade and use the server space that my WEBSITE sits on for hosting my videos and other image posts I make on the forums. Grab my email from the site if you'd like. We should exchange emails.

I use Transmit as my ftp client. Another great app for this posting stuff. You can create droplets which allow you to just drag the file onto it and it places in in the directory you want on your server. Pretty slick.

Thanks for the props on the shark animation. It's crazy what can be done with these tools. I really enjoy this stuff and these challenges are great for growing my skills.

Regarding the Shark floating eyes: The weird thing is that they have a value of 100%. I'll try putting them on a different map and parenting them to see if I get different results. I currently have the eyes tied into both the head 1 and 2 maps. Probably not ideal.

I want to try something less subtle with my next attempt. Something like your whipping stick you posted. Very cool!

The 2nd mouse gets the Cheese.

4/30/2009 - 2:05 PM
[ Quote ]
Chris_Hague
rating: signal 0  

Denver, Colorado
1913 posts
Hey guys,
There's a character in the Modo content called PodaMan. No idea what that means exactly, but I built a little rig for him. It's not perfect by any means, but I figured it'd be good example for people to take apart and look at. Here's the mediafire link. PodaManRigged
A couple things for when you're playing with him:
-if you select the lower torso and upper torso joints at the same time and rotate them both it gives him a more realistic spine movement.
-The jaw joint is just for playing with his mouth. Usually people use morph maps for this stuff, but occasionally bones are used for mouth animation (much more complex than a single bone though :) Enjoy!
4/30/2009 - 2:48 PM
[ Quote ]
3d4me
rating: signal 0  

Philly
349 posts
Chris

You put much work into that rig... Works great for what it is.

here is a pose I made with it... guess who it is.

4/30/2009 - 3:10 PM
[ Quote ]
John Carter
rating: signal 0  

Sacramento, CA
748 posts
Hmmm- while experimenting with joints and elbow bends, I think I ran into a limitation of Modo's current implementation of weight maps: when parenting weight maps into chains I'm seeing that children don't inherit 100% of their parents translates or rotates unless all verts are weighted 100%. That seems real limiting if your weighting verts to get more pleasing deformations.

Here's what I did: I set up an arm with three weight map joints: joint 1 for the upper arm, joint 2 for the lower arm and elbow, and joint 3 for the wrist- just a simple set-up to test with. I weighted some of the verts on joint 2 to get a better bend shape at the elbow. When I rotated joint 1 (upper arm) I saw that those verts with 50% weight inherited only 50% of joint 1's rotation. Huh? If they're part of a parent/child set-up, shouldn't they inherit 100% of the parent's motion? I'm sure this is the way it works in Maya.

Well, I hope someone can point out where I've gone wrong. You can take a look at my scene file here:

http://files.me.com/jcarter20/y41ml0

And a movie file demonstrating the issues can be downloaded here:

http://files.me.com/jcarter20/bcwo3r.mov

Cheers!
4/30/2009 - 8:17 PM
[ Quote ]
John Carter
rating: signal 0  

Sacramento, CA
748 posts
Doh! My bad- I needed to make sure that all weighted verts equalled 100% between the two joints. I thought I had determined that that didn't work in Modo, but I must have been mistaken because the set up is working fine now. You know, sometimes just the act of writing these things out like this helps me see where I went wrong :-)

Anyway, if you want to look at a movie of the corrected set up (35 mb), you can download it here:

http://files.me.com/jcarter20/nzyh6x.mov

The original scene file has been corrected and reuploaded at the same link as in the previous post.

Cheers!
4/30/2009 - 8:44 PM
[ Quote ]
3d4me
rating: signal 0  

Philly
349 posts
Quote from John Carter :
Hmmm- while experimenting with joints and elbow bends, I think I ran into a limitation of Modo's current implementation of weight maps: when parenting weight maps into chains I'm seeing that children don't inherit 100% of their parents translates or rotates unless all verts are weighted 100%. That seems real limiting if your weighting verts to get more pleasing deformations.

Here's what I did: I set up an arm with three weight map joints: joint 1 for the upper arm, joint 2 for the lower arm and elbow, and joint 3 for the wrist- just a simple set-up to test with. I weighted some of the verts on joint 2 to get a better bend shape at the elbow. When I rotated joint 1 (upper arm) I saw that those verts with 50% weight inherited only 50% of joint 1's rotation. Huh? If they're part of a parent/child set-up, shouldn't they inherit 100% of the parent's motion? I'm sure this is the way it works in Maya.

Well, I hope someone can point out where I've gone wrong. You can take a look at my scene file here:

http://files.me.com/jcarter20/y41ml0

And a movie file demonstrating the issues can be downloaded here:

http://files.me.com/jcarter20/bcwo3r.mov

Cheers!


I opened file and it worked fine... Nothing like the video.

All deformed as expected... I saw you added morph to correct the joint...nice.

If you really wanted to torture yourself you could probably do some character animation once 401 comes out... It would just be a lot of extra work...and no ik would suck.

although ik might be in 401... has that been talked about yet?
4/30/2009 - 9:02 PM
[ Quote ]
Thomas Ingham
rating: signal 0  

Cary North Carolina
1003 posts
Quote from 3d4me :

although ik might be in 401... has that been talked about yet?


Brad said pretty specifically that 401 would not be the "Character Animation" release of modo. This however, in light of the fact that IK is really just a series of linked channels and inter-relationships between bones so there's probably no reason why you couldn't build yourself a really simple solver using the new tools.

http://www.coalmarch.com New. Media. Solutions. (Raleigh NC)

4/30/2009 - 9:21 PM
[ Quote ]
3d4me
rating: signal 0  

Philly
349 posts
Quote from Thomas Ingham :


Brad said pretty specifically that 401 would not be the "Character Animation" release of modo. This however, in light of the fact that IK is really just a series of linked channels and inter-relationships between bones so there's probably no reason why you couldn't build yourself a really simple solver using the new tools.


Ik has nothing to do with bones or character animation.

In simplest terms... IK is when the child controls the parent, as opposed to fk where the parent controls the child.

Ik is an animation feature more then a character animation feature. Thats why I thought that maybe in 401??? I guess we shall see...
4/30/2009 - 9:46 PM
[ Quote ]
John Carter
rating: signal 0  

Sacramento, CA
748 posts
Quote from 3d4me :
I opened file and it worked fine... Nothing like the video.

All deformed as expected... I saw you added morph to correct the joint...nice.

If you really wanted to torture yourself you could probably do some character animation once 401 comes out... It would just be a lot of extra work...and no ik would suck.

although ik might be in 401... has that been talked about yet?


Hi 3D4me, thanks for taking a look. I uploaded the corrected scene file over the old one, so that's probably what you were looking at. Yeah, CA is kind of torturous right now. I'm not advocating it over other solutions, just having a lot of fun seeing how far I can push the current version. It seems there's a lot more in here than most people realize. Well, some folks do :-)

No one has mentioned IK in 401- yet. There are still a few more animation previews to go. But since Brad has said that 401 is not intended as the "CA" version of Modo, I'd doubt that it would show up.

Well- that's it for me tonight :-)

-Cheers
4/30/2009 - 10:00 PM
[ Quote ]
Warner McGee
rating: signal +1 signal 

Savannah, GA
1021 posts
John,

You've created a monster sir. I've created an arm animation like yours using your latest method. Works great! No morph map at the elbow though. I just added a few more joints and positioned them differently. with a bit more geometry at the corner I bet I could make the forearm and elbow smoother. Here are the videos:

Arm video

Arm video (showing locators)

The 2nd mouse gets the Cheese.

4/30/2009 - 11:19 PM
[ Quote ]
Son Kim
rating: signal 0  

California
3687 posts
John,


awesome post! I'm gonna try this on a hand when i have time.

The human race is going through a shift in consciousness, from 3D to 5D. Reattach to your higher self and wake up! 10/10/10-11/11/11-12/21/12

5/1/2009 - 12:15 AM
[ Quote ]
John Carter
rating: signal 0  

Sacramento, CA
748 posts
Warner, very clever positioning of pivots! 'Never would have thought of that. Cool!

About my arm sample in the previous post: I spoke too soon when I said I had resolved the problems. When testing the setup again I now see that it is having double-transform issues, so I've set up a file to illustrate this. It contains three examples:

A) Shows the 3 joint arm with 100% weight of points to their respective joints. This works OK, but there are self-intersection issues at the elbow. Which is why I did set-up...

B) ... which shows varied weighting of verts to joint 2 for a better bend shape at the elbow. I also added in a corrective morph to perfect the shape a little. This all works pretty well, but...

c) ... when you rotate joint 1 (to which joint 2 and 3 are parented to) you can see some very strange behavior from the verts on joint 2 that are weighted less than 100%. This looks like a double-transform issue to me, but I'm curious what other folks may see.

The scene file for this can be downloaded here:

http://files.me.com/jcarter20/7hd99t

And a movie file demonstration of the three samples (25 mb) can be downloaded here:

http://files.me.com/jcarter20/hmsitr.mov

(Sorry to force a download to view these. I need to find a service to host these videos instead.)

If I can't figure out a solution to the double-transforms then I think I'll register this as a bug.

Cheers!
5/1/2009 - 7:26 AM
[ Quote ]
John Carter
rating: signal 0  

Sacramento, CA
748 posts
Quote from Son Kim :
John,


awesome post! I'm gonna try this on a hand when i have time.


Thanks, Son Kim. I love your stuff and I'm looking forward to seeing what you come up with.

-Cheers!
5/1/2009 - 7:27 AM
[ Quote ]
Warner McGee
rating: signal 0  

Savannah, GA
1021 posts
Quote from John Carter :
Warner, very clever positioning of pivots! 'Never would have thought of that. Cool!


If you'd like to see the pivot set up I used in my arm test you can download the file HERE.

I'm sure the elbow pivots could be tweaked a little bit for better accuracy/deformation. I wanted to stay away from Morph Maps in this example so there are none. Again, I think that added geometry at the elbow would make it work better.

BTW just for added realism, I introduced some subtle rotation to the hand, wrist upper arm.

Hope the model is helpful.

-Warner

The 2nd mouse gets the Cheese.

5/1/2009 - 7:50 AM
[ Quote ]
Page 1 of 4
[   1  2  3  4  |  Next ]
  [ Last ]
Search
Topic Subscriptions
Forum Preferences
Forum Help
Search the Forums
Advanced Search
modo Training Materials

New for modo 401
Backpack Modeling

New for modo 401
Human Eye

HDRE Urban Kit

HDRE Landscape Kit

Studio Lighting & Illumination Kit

Product Auto Presets

Splash Kit

Subdivision Modeling

modo 401 Spotlight

Real World modo

Shader Tree Essentials

modo 401 Courseware

Rotary Aircraft Engine

Architectural Interior Rendering Series (Intermediate)

Architectural Modeling Series (Intermediate)

Rapid Prototyping Training Series (Intermediate)

Concept Car Training Series (Intermediate)

Cartoon Kid Training Series (Intermediate)

The Alley - Real-Time Asset and Level Creation (Intermediate)

modo is a registered trademark of Luxology LLC., in the USA and/or other countries.
All products or brand names mentioned are trademarks or registered trademarks of their respective holders.