ICE currently only supports data level parallelism and since ICE kinematics primarily involves singleton data it is effectively single-threaded.
We are aware that higher performance can be achieved by splitting up ICE trees, using compiled operators etc. but there can be other advantages to using ICE kinematics or having the entire rig in a single ICE tree. I agree that there are many things that could be done to improve this area so please continue to send us features/bugs through the normal support channels.
--
Brent
From:
softimag...@listproc.autodesk.com [mailto:
softimag...@listproc.autodesk.com] On Behalf Of Ahmidou Lyazidi
Sent: 09 July 2012 05:36
To:
soft...@listproc.autodesk.com
Subject: Re: ICE kineamtics performances ?
Hi Brent,
Yes, but it seem that it's even faster to break the calcultion in smaller pieces, ie one ICE tree per limb.
Now, if possible, that would be a good thing to push things forwards in this area and as in rigging performance matter a lot, having some more high level factory nodes
like bezier curves, Ik....
Bezier curve is a good example, someone made a C++ node for that, it's just 25 faster than the compound!
I also d'like to see way to envelope/paint weights with ICE xform attribute instead of real deformers
There's a lot of things to do, to make it production efficient.
Regards
A.
2012/7/4 Brent McPherson <
Brent.M...@autodesk.com<mailto:
Brent.M...@autodesk.com>>
Hi Ahmidou,
Yes, the problem is that if a single ICE tree is driving multiple kines then it gets evaluated multiple times as each kine pulls on their connection to the ICE tree.
The recommended way of dealing with this is to write to local data (self.myxfo) in the master ICE tree and then have small ICE trees on the targets that pull that data and write to their own kine. The local data acts like a cache so the master ICE tree won't be evaluated multiple times. So you can still do all your calculations in one master ICE tree and just use secondary ICE trees to write the results on each limb.
As you have noticed the performance difference is significant. In fact, used this approach for the ICE tree used by stereo camera which generates two transforms.
Same thing applies to rig initialization which should be put in a separate ICE tree as outlined in the docs.
--
Brent