Set Skin Weights not updating in viewport

SMokeyDemonSMokeyDemon Posts: 0

Hi,

Has anyone had the issue of updating skin weights not refreshing in the viewport?

basically Ive managed to get the bone binding ...
DzSkinBinding * skin = figure->getSkinBinding();
DzBoneBinding * boneBind = skin->getBoneBinding(boneindex);

from there ive taken the weightmap
DzWeightMap * wmap = boneBind->getLocalWeights(axis);

done some changes to the wmap .....

then reapplied the weight map back to the bone binding
boneBind->setLocalWeights(wmap, axis);

all this is working and i can see the weights being changed in the 'selection analysis' I just cant see updates in the viewport unless:

A) while rotating a joint, this displays the correct skinning until the mouse is released and no longer rotating a joint.

or

B) go into paint weights mode and paint a weight, this will force some sort of refresh and the new values will come through.

so the question is how do we call this refresh after assigning new weight map values?

Ive tried calling update functions from the DzBoneBinding, DzWeightMap, DzSkinBinding, DzFigure objects but none of that seems to do the job :(

Just tried a few things, I found the 'invalidateAllCachedGeom' command but that doesn't seem to refresh it. Adding a deformer to the object also does not cause a refresh so I'm assuming now the problem is not a geometry caching issue, but more like the skin weight values not being passed down after being changed for some reason.

I've tried calling update functions, finalize functions and begin and end edit functions with no success...


Cheers guys

Post edited by SMokeyDemon on

Comments

  • SMokeyDemonSMokeyDemon Posts: 0
    edited December 1969

    solved, seems as though calling:

    DzSkinBinding::normalize( PriorityType priority = RootLowest, NormalizeType which = NormalizeAll, bool respectLocking = false );

    gets it to update :roll:

Sign In or Register to comment.