Yet another method for transferring attributes

Here you can find ICE tutorials and learning material
User avatar
Mathaeus
Posts: 1778
Joined: 08 Jun 2009, 19:11
Location: Zagreb, Croatia

Yet another method for transferring attributes

Post by Mathaeus » 10 Jan 2011, 21:16

Hi,

that's a small tut about transferring attributes, even vertex IDs doesn't match, but some parts of geometries still are on 'identical' positions. It's usable when
ever you want to work on only a part of object - various facial rigs, for example. It's similar method with GATOR, but it can transfer any type of deformation. From my small experience, it's faster than GATOR. Modularity is preserved, you can just connect/disconnect it when it's needed.
I think I've first sow this somewhere on old SI-NET, but I've unable to found the 'original' - so it's here again.


We'll start with some 'common' enveloped character. First of all, we'll disable any deformation (mute the Envelope Op), and be sure that object is at world origin (scale 1, 1, 1, position 0, 0, 0, rotation 0, 0, 0).

Image

Now, we'll extract a part and duplicate it. First copy, called 'head-transfer' ( blue one) should stay at the same global position as 'main object', called 'body'. Second copy, called 'head-deformed' (red one) is for deformation.These two copies should have identical geometry, all the time.

Image

First ICE tree on 'head-deformed' looks like this. It's just for saving the original point positions.'Self.My_OriginalPointPosition' is a custom attribute, created by user.

Image

Above first ICE tree is a place for deform operators. Here's XSI Twist Op, but it can be anything else - point cache loader, shape key, envelope.

Second ICE tree on 'head-deformed' is for saving deformation in another custom attribute. It takes deformation, and compares it with 'original' point position.

Image
bigger picture....

Now, ICE tree on 'head-transfer'. 'First Valid' node is there only to force per-point context. This ICE tree 'virtually' transfers deformation, to place where it can be found by 'body'.

Image
bigger picture....

And final ICE tree on 'body'. This time, 'First Valid' node is for preventing possible problems if nothing is connected. For better performance, it's good idea to keep 'cutoff distance' at some very small value.

Image
bigger picture....

Even if 'body' and 'head-transfer' doesn't match completely, method will work, but there is a chance for errors on highly curved areas, around lips or eyes. In this case, 'cutoff distance' need to be at bit higher value, proximity method, 'Closest Surface'.

Image

And that's how it's look like - Twist Op is transferred, Envelope above in stack deforms all ('head-transfer' is hidden). As it is here, ICE tree on 'body' should reside before any deformation operator.

Cheers

User avatar
Hirazi Blue
Administrator
Posts: 5113
Joined: 04 Jun 2009, 10:15

Re: Yet another method for transferring attributes

Post by Hirazi Blue » 11 Jan 2011, 09:41

Nice method...
Thanks for the tutorial. :-bd
Stay safe, sane & healthy!

antsjoe
Posts: 23
Joined: 08 Jun 2009, 22:12

Re: Yet another method for transferring attributes

Post by antsjoe » 11 Jan 2011, 19:59

Thanks for this tutorial. Very cool B-) and one that will come up great resource.

Thank you Mathaeus for making your method in the tutorial above.

aj