PDA

View Full Version : enveloping question


rotaryman
06-10-2002, 10:20 PM
I have a question pertaining to enveloping in XSI. I am trying to rig a character that I have made and I am trying to build a simple muscle soluction using nurbs surfaces as muscle deformers. My question is, Is it possible to control an enveloped surface with a object that is made to deform via skeleton movement?

I know this can be done in maya, you take a Nurbs surface (in the shape of the particular muscle) and create clusters at both attachments and at the belly of the muscle, then constrain thes clusters to the bones it will act like a muscle when any movement is applied to the bones. When enveloping this Nurbs shape to your character, the deformations will translate through to your enveloped surface.

Now I tried this with XSI, Using "Clusters with Centers" to make the clusters that will be constrained to the bones, but when I envelope the character object and paint the weights accordingly, the deformation does not translate through. It acts like the Nurbs surface had never altered. As a result, the envelope shape does not deform.

A Friend of mine who has used both packages extensively tells me it is no possible in XSI, and that is why Maya is better. I was wondering if there is something that I am missing because I could not see a company such as Softimage, creaters of Soft3d, a package marveled for it's animation abilities, overlook such a simple but Powerful rigging capability. Such things mystify me, how a company, makers of Soft3d, would Limit the potential of it's successor. Granted XSI has abilities and features that eclipse the competition, but areas that soft neglects or overlooks is shooting them in the foot. How can they sell their product to the big houses like, ILM or PDI, if soft is trying to swear off Nurbs? Or Restrict Rigging to nondeformable objects and bones. There's more I could complain about but that is not the focus of this thread, and I still like XSI over Maya, but I don't want to be forced over to Maya, because XSI failed to deliver .

Vic3k
06-10-2002, 11:06 PM
maybe you could try constraining those clusters that you create to 2 nulls and then constrain those 2 nulls to the bones. i didn't read all of whatyou said, no time. anyway my 2 c on what i understood so far.

yes you can do everything in xsi. if you or your friend doesn't know, doesn';t mean it's not there

Atyss
06-11-2002, 02:34 AM
Ok this is tough question you asked.

To directly answer your question, I would say no. It's not possible the way you want.

You see, a cluster at each end of the muscle object can't accurately deform the muscle, because clusters can't affect points with a falloff outside their boudaries. Each end would have to deform smoothly the muscle, and it's impossible because of the reason I just mentioned.

Also, you have to know that object other than bones that are used as enveloppe deformer will deform only on a single point. The bone object has a center as long as the bone lenght, but other types of objects have a center located on one single coordinate. In other words, it doesn't matter if your muscle object is 10 units or 1 unit wide, because only it center, or pivot, will affect the enveloppe. Simply put, if the center doesn't move, the enveloppe doesn't. Just make a test: Enveloppe an object with a sphere as deformer, tag some points at the edge of the sphere and move them.


But there is hope. It is still feasable, but involves much more work. You will still create muscle object, but will use polygons instead. Then, those muscle will not have clusters or constraints, but will be envelopped, so they deform as you want when the bones move.

Then, you will have to apply Cage Deformers to the enveloppe object. To do so, you have to create clusters and apply them the Cage deformers, picking the muscles as cages.

But this involves serious limitations.
- You can only pick one object as a cage. So the deformation on the cluster can't be inherited smoothly be several muscles.
- I'm not sure that you will be able to use overlapping clusters, because the result of point deformed by 2 different cages might be unpredictable, if the software allows such things. As a result, no vertex will be influenced by more than one muscle.
- Cage Deformers are not that good. The way Cage Deformers deform enveloppes is not reliable, so you would have to apply shape animation on the muscles objects, to compensate for the incorrect deformation.
- The center problem I mentioned earlier will also be present. The muscles, even envelopped, won't deform with their shape the envelopped object. Only if their centers moves the enveloppe will move.

This could be overcomed by two alternatives:
- Using a lot more but smaller muscles objects.
- Intead of using muscles object like polygons meshes, you could build smaller 3d skeleton chains, with each end constraint to some points on the big skeleton structure (the Comp mode would help). Then, one nurbs curve would be constrained on each point by a cluster on the 3d chains, and this spline would be used as the deformer. But it would be hard to control the muscle chains movements.

Both solutions involves tremendous work, and I would use them only for a very high budget production. Also, I would rely on such technique only for the shoulders, the other joints can easily be deformed by Cage Deformers and shape animation on clusters.


On the Maya vs XSI thing, let me say that XSI is still a young product, it is only 2 years old. It's only version 2, and Maya is 4.5. But I agree that the ability to use object on a volume basis rather than single point basis would be a great asset.


Hope this helps
Salutations - Cheers
Bernard Lebel

acidboy
06-11-2002, 04:33 AM
Heyaz

I've had the same probs as u guys, and gone through all the alternatives :)

There is a (kinda) simple solution --- indirect enveloping
Get your object that you want to deform you mesh with(muscle object in your case), and run the 'add nulls to points' script. It's in your net view under 'tools- model - deform'.

The script creates a cluster for each point on your object, and then a null at each of those points. It can then either parent the nulls to each point's cluster, or parent those clusters to each null. What you want to in your case (and in most) is to have the nulls parented to the clusters. So basically what happens is when the points on the object are deformed the nulls follow their respective points, and because the nulls have their own centers they can be used in your enveloping instead. So just group the nulls together, and include the null group in your enveloping.

Sounds like a real screw around I know.
But once u know the procedure, it's painless :)

Oh I forgot to mention, to have the script parent the nulls to the clusters and not the other way around, u have to change the script a little bit. I could explain it here as it's simple, but it's probably better if ya just download the softbody hair tutorial (lulu)on the softimage site. The tut covers exactly what I've mentioned, but instead of doing it to a muscle object like yours, it's applied to a softbody object. But it's the same problem as you're having :)

Sorry for the long explaination, if ya have any more probs with it just post, as I messed around with that prob for awhile :)

liquid_tension
06-11-2002, 06:53 AM
Hey What you want is totally possible in XSI, I dont know exactly how to do it, but I saw a guy doing it at school, he had his model and then he created spheres and shaped them as if they where the muscles and then enveloved the spheres to the skeleton and i think then his model to the actual spheres.

rotaryman
06-11-2002, 07:41 AM
Thanks for all the feedback guys. I was aware that there would be a ton of work arounds to this problem, but my argument is just that. Why should it be a work around? Believe I love softimage, I started with Max (hated it) then Lightwave, Maya and some Soft3d, but nothing has captivated me more than XSI. And that is why It frustrates me! All the packages prior (well mostly Max and Maya) required a fair bit of comprimises and work arounds to get anything right. XSI however doesn't do that, It's straight to the point, gone the countless windows through which you have to navigate through, or the qwirky Icons to decypher. Just A to B, No Bull***t, designed specifically for artist. And I will admit that the modelling tools are BETTER than lightwave, I don't have to stop and think "how am I going to do that?" or "Why is this not working" "Dammit that isn't what I wanted".

But now that I get into the rigging and animation aspect of it all, that comfort slowly slips away. I don't want it to, and I fight it tooth and nail, but the frustration begins to show. Then a new question lurks into my mind. "with all of the Industry proven tools in Soft3D, Why don't we see them in XSI?" I have came to the conclusion it is the MS Object Oriented Backbone of XSI that is slowing Softimage down. So to breathe hope back into my mind, I guess with time we'll see. Besides when I spoke with a representative with soft, they said watch out for 3!! They got something planned

Vic3k
06-11-2002, 08:47 AM
ummmm xsi 3.0 ummm i want it now, i know they will have tons of surprises and quantum leaps again :)

as for animationi aspect that you are talking about. it's just in XSI animation is slightly or greatly differs from other packages. it's abit frustrating to get used to but once you know your way around animating in xsi then it becomes your second nature.......
it's just different and that's the problem. didn't do much animi though but i see lots of stuff around of what ppl do in other apps and in xsi. it's just different from all of them

Atyss
06-11-2002, 02:44 PM
ACIDBOY: Your technique sounds promising, I want to take a look at it asap.

But several questions comes to my mind:

- What type of muscle object do you use? Nurbs, poly?
- Then what is the poly/isoline count of such objects? The way I see it, a fair high number of polygons would be required to allow the muscle to deform smoothly. But on the other hand this would produces lots of nulls, then I guess you only keep some of them?

- How do you enveloppe the muscle? Do you put at each end a 100% weight and gradually fade them?
- How do you attach the ends? With clusters centers, or simple 100% weights?

- Finally, I'm sure this technique is easy to implement for simple joints like knees and elbows, but how do you setup the shoulder? This area is a real nightmare!


Merci - Thanks
Bernard Lebel

acidboy
06-12-2002, 09:45 AM
Hey Atyss :)

"What type of muscle object do you use? Nurbs, poly?"

Well, actually I haven't used underlying geometry to deform my models, eg muscles. As I've been using Lattice\Cage deformers with linked shape animation on them to get the look I want. But it shouldn't matter which type of geo you use.



"Then what is the poly/isoline count of such objects? The way I see it, a fair high number of polygons would be required to allow the muscle to deform smoothly. But on the other hand this would produces lots of nulls, then I guess you only keep some of them?"

Ummm...well when u have an object which is deforming you character's mesh, such as an underlying muscle deformer. It only needs to be at a low res because the actual character's mesh is what ya gonna be seeing and when it's enveloped to the simple underlying muscle you can get a smooth deformation on the characters mesh by just editing\smoothing the envelope weights. Unlike a cage deformer where each point is either influenced by the cage or not.

"How do you envelope the muscle? Do you put at each end a 100% weight and gradually fade them?"

When u run the 'nulls to points' script and the nulls are added to each point, u only include those nulls in your enveloping of the character's mesh. Instead of selecting each indiviual null on the muscle you can make a group for the nulls, so u just have to select that group to add them all when enveloping. Then like I mentioned, u can just edit the weights to fine tune how the nulls deform the character mesh.



"How do you attach the ends? With clusters centers, or simple 100% weights?"

Like I mentioned I haven't done this technigue with actual muscle deformers, but yeah I'd probably go about creating a cluster center at the top and bottom of the muscle. Then applying a weight map to those clusters so there's a gradual falloff of their effect on the muscle. Then just parent the cluster centers to the respective bones.

"Finally, I'm sure this technique is easy to implement for simple joints like knees and elbows, but how do you setup the shoulder? This area is a real nightmare!"

Yeah I don't see the use in using muscle like deformers to help deform the shoulder area. Just use either a lattice or cage deformer for that area, with linked shape animation on it. This way u can get the exact defomation effects you want in whatever way that joint might move.

But if I was to go about using underlying objects to act as muscles, I would probably do it differently. If I was to do a bicep muscle I'd either just use a lattice\cage with shape animation. Or a underlying muscle object as mentioned, but just parent the whole damn thing to the bone, with shape animation applied to it. Then just use the 'nulls to points' script method I suggested. Naturally u don't always need to use all the nulls on the muscle deformer in your enveloping, so delete the nulls that aren't needed.

Sorry for the massively long reply,
Dunno if I explained it well. :shrug:

Atyss
06-12-2002, 02:45 PM
Thanks a lot acidboy for your explanation, they were not too long, as I had several questions!


@@@@
Well, actually I haven't used underlying geometry to deform my models, eg muscles. As I've been using Lattice\Cage deformers with linked shape animation on them to get the look I want. But it shouldn't matter which type of geo you use.
@@@@

Hum the problem is that I search an alternative to not use Cage Deformers and Linked shape animation.

The problem I have with these is that since the shoulder can rotate in a half-sphere, it's really hard to combine the different "poses" of the Cage/Linked shapes. Even when the shapes are normalized, the total weights of all shape track in the Mixer doesn't equal 1. Also, linking shapes to 3 rotations axises gives unpredictable results. In the end, I have points that moves around, uncontrollables.

Perhaps it would work better on simple muscle objects.

If you have any suggestion feel free to share!


Salutations - Cheers
Bernard Lebel

acidboy
06-14-2002, 02:54 PM
rotaryman :

Yeah I totally agree that some aspects of rigging in XSI are a bit 'quirky' at time. Sadly alot of people who do 3d as hobby don't get into rigging, so alot less poeple have a knowledge of rigging compared to modeling. (But modeling comes before rigging, so it's fair enough :) )

But yeah I had the same probs with this short animation I'm doing for uni in XSI 2, modeling was a total joy. But the problems and frustration begin with rigging. Still I do rather it to max and maya :)

Atyss :

Sorry for the late reply, with your shape animation on the shoulder region, where it has to take into account of all 3 axis, have you tried using the 'link with orientation' instead of the simple 'link with' option. As then your not making shapes for each seprate axis, as it takes into account all 3 axis instead.

Just a thought :shrug:

Atyss
06-14-2002, 03:29 PM
Originally posted by acidboy
rotaryman :
Sorry for the late reply, with your shape animation on the shoulder region, where it has to take into account of all 3 axis, have you tried using the 'link with orientation' instead of the simple 'link with' option. As then your not making shapes for each seprate axis, as it takes into account all 3 axis instead.

Well yeah I tried Link With Orientation, and Link With Multi too. I found that if you use the Link With Multi and link with the shapes with the QuatX, QuatY, QuatZ and QuatW instead of the Eulers it gives better results. However the thing is that you have set relatives values at everypossible position of the arm.


Thanks anyway for your input.


Bernard Lebel

CGTalk Moderation
01-13-2006, 09:00 AM
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.