Jump to content

Pose Space Deformers


sibarrick

Recommended Posts

Everyone's given up the idea of it ever being implemented in Houdini perhaps? ;)

I kid because I care... but seriously though, I think it would be an awesome addition to Houdini's character tools.

Nice papers BTW.

M

Link to comment
Share on other sites

You could play with the basics of it using the BlendPose CHOP (added in H9). There's an example of it in there that does scattered interpolation with some simple trackers. I had example at one point where it did some (very) basic RBF-type point cloud surface interpolation using it.

Link to comment
Share on other sites

I think it would need a proper character example before artists would start using it, the current example is probably too abstract for most people to get how you would use it within a character setup.

I having a hard time connecting the idea of a bunch of points that deform a surface to the idea of blending between sculpted poses using the joint angles as input.

Link to comment
Share on other sites

Oh by no means is it complete, just mentioning that the "hard part" (scattered interpolation) is already in Houdini. To use this in a practical manner for driving sculpted geometry, something like a specialized Edit SOP is needed to apply the driven deltas from the BlendPose CHOP in rest coordinate frames. As the Disney PSD article notes, "non-conventional drivers and drivens work well also". This is what the BlendPose exactly provides: give it any example set of drivers/drivens and you have a way to smoothly map from one coordinate space into another.

In layman terms, you can think of scattered interpolation as just like an animation channel. Say you have a channel F that has some keyframe pairs (X,Y) such that Y = F(X). I think every one understands that when X and Y are just regular numbers like 2.3, 4.5, etc. In scattered interpolation, X and Y are general vectors. ie. your X's can be coordinates like (1,2,3) which map to the Y vectors like (7,2). The number of components in the X vectors and Y vectors can be anything. So in PSD terms, you have X vectors that can be just single numbers like 10 degrees, 20 degrees, etc. But your Y vectors are a stack of point positions put together into one long vector. Say your geometry has two 3D points: (1,2,3) and (4,5,6). Then your Y vector can be (1,2,3,4,5,6). So you create lots of these example "keyframes" of (X,Y) pairs that you feed the BlendPose CHOP (second and third inputs). In the first input, you give it any X vector and the BlendPose CHOP will give you an interpolated Y vector using the "keyframes" that you gave it.

Link to comment
Share on other sites

In layman terms....

is anyone still re-reading this, or is just me?

maybe maya has made me "slow" <_<

we use this here:

http://www.comet-cartoons.com/melscript.php

and have an internal variant of it so it is easier to use.

I still see it as a series of relative blendshapes (using the second input on the EditSOP) and using bone angle expressions with a bit of fancy stuff to give you a smooth interp of the angles by way of using a cone angle from a light soften the blending.

still it is a lot of work to setup correctly and you can easily figure out the # of shapes just to start establishing the workflow. I like the following quote from the Disney paper:

"It takes time to apply PSD successfully, especially when applied to complex characters. For BOLT, it took approximately three weeks to apply PSD onto a major character."

It does take time to do the PSD work, especially if you have something like 20 shapes just for full shoulder rotations, part of me thinks you could do better if the weight was done differently and alternative approaches to the deformation were used. Think loose capture weights, inflates for volume preservation and movement under the surface.

but if you think about it.. it can't be a fast process as you are essentially putting points were you want them to be for a specific scenario. Using a loose system and having a hierarchical approach to the detail is something I never had a chance to explore, the amount of tweaking work made me a bit apprehensive of trying it out. I don't have access to those tools now (only Michael would be able to say if they still work) In theory it should still work, the main difference was they didn't have the RBF in the interpolation.

another system I've meaning to look at is the BCS - BlendShape Combination System (http://www.stargrav.com/bcs/docs/index.html)

i know.. another non-houdini solution.. but still you have all the POWER in your figure tips now....

:)

-k

Link to comment
Share on other sites

I haven't seen bolt...but I'm pretty sure I can paint weights on a mesh in a few days that will do the trick - and character final any shot that needs help, assuming no muscles/inflates etc...3 weeks to create some system that 'in theory' will solve all your problems is crazy - unless you have Disney $$$ to throw around...

The Wild was all painted weights...

these kinds of pose based systems are a really great idea...and simon is right...until you see something simple but usable in the real world it's hard to justify the time/effort to even look into this stuff further...at least IMO...

Link to comment
Share on other sites

The Wild was all painted weights...

well that is 98% true. there was a bit of magic for the eyes that was not a weighting solution and then there was Benny's wrists....where inflates were used. having so much fur on the characters to a degree actually helped hide things and the general weighting of the critters. Lots of helper bones were used as much as possible and yes it did work with a bit of TLC in CHF-land (character finaling).

the system for the mane was a large PSD system without the fancy interpolation, which many of you guys had to tweak in shots. i never went that far into making it multi dimensional as a result of that hole. it was easier to correct, and sometimes a lot of correction, but that work was manageable and doable.

these kinds of pose based systems are a really great idea...and simon is right...until you see something simple but usable in the real world it's hard to justify the time/effort to even look into this stuff further...at least IMO...

I don't disagree with you. it is one of the main reasons Houdini goes over looked when it comes to character animation and rigging. which is partly why i wrote back to Ed. Examples with real world tangible solutions.. without that everyone who knows what needs to be done with the schedule in front of them will just do what they know will work.

Link to comment
Share on other sites

I still see it as a series of relative blendshapes (using the second input on the EditSOP) and using bone angle expressions with a bit of fancy stuff to give you a smooth interp of the angles by way of using a cone angle from a light soften the blending.

...

but if you think about it.. it can't be a fast process as you are essentially putting points were you want them to be for a specific scenario. Using a loose system and having a hierarchical approach to the detail is something I never had a chance to explore, the amount of tweaking work made me a bit apprehensive of trying it out. I don't have access to those tools now (only Michael would be able to say if they still work) In theory it should still work, the main difference was they didn't have the RBF in the interpolation.

To carry on with the previous animation curve analogy, simple blendshapes are like linear() animation curves. You get these straight line segments that interpolate your keyframes. Thus to get "smooth" looking motion, you need to set a lot of keys to control the exact interpolation. These extra "keyframes" in our case can either come in the form of more blendshapes, or extra keys on the blend channels to get the deformation animating "just right". With RBFs, the animation curves are more like spline() animation curves. You get smooth looking curves automatically, but the smooth curves are dependent on ALL the keyframes. ie. you lose local control because changing the value of one keyframe can affect how the curve interpolates elsewhere. So again, to control the final interpolation, you need to add more keyframes to strictly control how that curve interpolates. In the end, I guess it's currently sort of a toss up as to which will require less work. However, you certainly better "looking" results right off the bat with RBFs because of the smoothness. Is that a better? ;)

This brings up another point in the Disney paper that I had meant to comment on previously,

For example, multidimensional linear interpolation, which strictly ramps from one value to the next, was used effectively on BOLT. This interpolant performed well on elbow and knees, and allows the user to clamp the last target pose such that it remains persistent at extreme joint rotations.

I'm not quite sure what they mean by "multidimensional linear interpolation" here. Do they mean regular blendshapes? Linear interpolation amongst nearest neighbours? In anycase, I'm not sure why this method is required to "clamp the last target pose". In the BlendPose object-level tool, I've found it sufficient to simply clamp the output to the bounds of the inputs (ie. the Clamp Input parameter on the BlendPose CHOP).

I can paint weights on a mesh in a few days that will do the trick

So basically, the problem we're out to solve here is how do we get better skinning. There are certainly a vast array of tools out there that one can use. Before I comment on that, let me stress again that RBF's are a general interpolation tool. They're good for all sorts of things other than PSD. We use it for set-driven key (the BlendPose object-level tool), we could use it like a feature space deformer (Simon's RBF morpher), or use them for an IK system.

Ok, so back to the main problem. The traditional skinning method itself could use a lot of improvement. Various papers refer to it as "linear blend skinning" (LBS). Every CG animator should intuitively grasp that "linear" is bad. :) Various methods try to remove the word "linear" from LBS [1]. In particular, Dual Quaternion Skinning (DQS) has been used on a film production. (Note: DQS uses quaternions, thus can suffer from 180 degree flips). Ok, then there's the whole class of techniques that does "example-based skinning". The workflow is similar to PSD except that you solve for coefficients that plug back directly into skinning method. The latest work in this area, interestingly is how to approximate DQS using LBS.

All this, and I haven't gotten to the cage-based methods yet. :)

1. This paper has a good overview on skinning although it's a bit outdated and doesn't include DQS.

Link to comment
Share on other sites

Interesting links as always

If you aren't a siggraph member you can get them here

A Comparison of Linear Skinning Techniques for Character Animation

and here

Automatic linearization of nonlinear skinning

My motivation for interest in this is slightly different but related, I'm actually needing to create pose spaces for muscles rather than skin such that a skeleton can be posed into any position and the muscles will be correct, I can get so far automatically but extreme positions need example based input to fix the imperfections in the automatic solution. Preferably needs to work in real-time too for this type of thing

Interesting too that the Automatic linearization of nonlinear skinning paper seems to be proving what thekenny was saying, put enough helper bones in and blend the weights right and you can get pretty much what you would from more sophisticated systems.

Edited by sibarrick
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...