Home Website Youtube GitHub

RBF driven nodes - Scale at 0 after loading .rbf through script

Hi! I’m not sure this is an mGear bug, since it’s related to the RBF Node. So please feel free to move the thread if you think it’s more convenient.

I’ve been using RBF Manager to set up a part of my character’s face rig, where certain joints’ transforms (cheeks and nose) are driven with the jaw rotation. On rebuilding this character over and over, I started to notice some weird behaviour: the scale of some joints was [0,0,0] when the rig finished building. It’s never on two at the same time, and it’s never on the same one. Thinking it could be related to the Parallel evaluation, I decided to switch to DG, but the issue persists. Mind you, it does not happen all the time. But today an animator reported it happened to her on opening her scene. She closed Maya, reopened, reopened the scene, and it was fine. Which leads me to another of the weird issues with this: by building a rig on a fresh Maya there seems to be less chances of this happening that when your program has been opened for several days.

The good news is that I discovered it was an evaluation issue. Forcing all the RBF nodes in the scene to re-evaluate fixes the issue right away.

Have any of you experienced similar problems? Do you think I should bring this to Ingo as well so he’s aware?

Thanks!!!

Hey Hey,

I do believe there is an issue with the node behind the scene and how we are adding poses to it. If you can find a means to force all (RBF)nodes to reevaluate, basically re-caching, on build or open you should be okay. But that is only in my testing, in my environment.

I do not think @Miquel has run into this issue and we rebuild all rigs prior to publish. But lets as him.

Let me know if you need any help.

Raf

1 Like

Thanks for replying, Rafael! I will look into adding a scriptNode in the rig to gather all the RBF nodes and force evaluation on them when animators open or import the file. Most likely that will get rid of the issue.

To be honest I am usually don’t use the scaling when I use the RBF because the tendency to rest in 0,0,0
Even if I cant set it manually to 1,1,1. Is just too much time consuming. :stuck_out_tongue: So I guess never run on that issue because that.

Please, let me know if re-evaluating solve the issue. Thanks

1 Like

@Miquel I am indeed using scale on the driven joints, so what you say makes sense: no scale, no issues :smiley:

Re-evaluating from the RBF Manager does fix the problem. I’ve looking for a way to force that evaluation without user interaction, and first I thought I should use forceEvaluation() from the rbf_node module. Did not work, because most likely it was not the right function to call. Searching further, I found the right one: rbf_manager_ui.RBFManagerUI().reevalluateAllNodes().

I added that line (first I imported the module, obviously) to a scriptNode that runs when opening/importing/referencing, and it does re-evaluate. I’ll test it with the animators during this week and see how it goes, but the issue should be gone.

Thanks!!!

2 Likes

Awesome! @iker.mozos Thanks for the feedback. I am pretty sure this information will be useful for other users (and me :stuck_out_tongue: ) in the future :smiley:

Hi @iker.mozos! Could you share the results of your experiments with scriotNode? I’m facing the same issue with RBF

It’s been working fine. Every time a rig is opened, the refresh code kicks in. It can also called in the middle of the animating process if it ever happens. This is the code that I’m using:

code_to_run = "import mgear.rigbits.rbf_manager_ui as rbf_ui;rbf_ui.RBFManagerUI().reevalluateAllNodes();print ('RBF refreshed successfully!')"
mc.scriptNode(scriptType=2, beforeScript=code_to_run, name='RBFRefresh', sourceType='python')

The only caveat is that you need to have the option ‘Execute Script Nodes’ checked when opening a file.

2 Likes