Softimage Evaluation and Performances Issues

Hello again! I continue evaluating the framework and I'm facing very annoying issues in Softimage 2015.
First with the Bob_Rig file or with a new-build biped, I have to unhide all rig objects to get a proper evaluation of the rig. If the rig objects are hidden, the UpperBody and the hands are lagging behind their parents, like with low-weighted constraints...

Second and the worse, I only get a 10 fps framerate(versus 50+ in Maya)...

Are these known issues, do I have a problem on my machine?

Having multiple instances of Canvas Op seems to be a bottleneck
I made some tests scene with a simple 2 point constraint rig with different methods, that I duplicated 120*:

With Constraints : 60 fps
With Cpp Custom Op : 60 fps
With JsScriptedOp : 45 fps
With ICE Kinematics : 30 fps
With CanvasOp : 15 fps
With PythonScriptedOp : 10 fps

I know Softimage is discontinuated and did this by pure curiosity, but I was very surprised by such results...


  • EricTEricT Administrator, Moderator, Fabric Employee Posts: 305 admin

    Hi Ben,

    I've seen both of those issues previously. We have taken a few passes at optimizing the Softimage operators but unfortunately the Softimage API design causes them not to perform as well as they do in Maya. The lag is also and eval issue due to the way things work in Softimage as well.

    For your constraint test, it would probably be more interesting if you have 1 Canvas operator driving 120 objects instead of 120 operators.

    Eric Thivierge
    Kraken Developer
    Kraken Rigging Framework

  • AhmidouAhmidou Posts: 179 ✭✭

    Salut @benmalartre, it's nice to see you there!
    I believe there are still some room for improvement in the Softimage plugin, the problem should still be the operators re-evaluated for every ports. I think it has been fixed in Splice at some point but not really in Canvas.
    I guess now that Softimage is EOL we need someone that have the time and motivation to look into it...

  • benmalartrebenmalartre Posts: 16

    Hello Ahmidou!
    I would like to give a try at optimizing the CanvasOp, but I fail compiling the SpliceSoftimage Plugin
    I'll post a description of my problems in the Softimage section...

  • benmalartrebenmalartre Posts: 16

    I optimized a bit the CanvasOp by caching Input Port Definitions and accessing them by index, cached the ObjectID, the object ParentName, removed all verbose check...
    and gained 20 % evaluating Bob_Rig(only..., the Softimage API is indeed very greedy) . I use the verbose parameter as a trigger to recache the Input Port Definitions when needed(building new graph, adding/removing port...)
    Secondly I removed all SpliceOp and keep only one on a dummy null to get the OpenGL debug working, and gained 30%...
    Bob_Rig now runs at 15 fps+
    I still encounter the rig evaluation problem though, maybe it's related to multiple output associated with output to self, I'm still investigating...
    I join the compiled plugin and the Bob_Rig File optimized(Softimage 2015)

  • EricTEricT Administrator, Moderator, Fabric Employee Posts: 305 admin

    Thanks @benmalartre. This is a very good reason to dive into Git and create a fork of the SpliceSoftimage repo so you can open a pull request with fixes that could be merged into the main branch after we test and review.

    Eric Thivierge
    Kraken Developer
    Kraken Rigging Framework

  • benmalartrebenmalartre Posts: 16

    Hi @EricT I'm a bit confused with all the branches, I worked on the Burrows branch to get it compile with the FE2.3.1, I make a pull request on this branch?
    I've seen the Chagall branch(the most recent) have already some changes that I don't have in my files...

    Anyway I will try again to make a pull request

  • EricTEricT Administrator, Moderator, Fabric Employee Posts: 305 admin


    You are working on Burrows, but as you stated there may be changes that have been made to the files in chagall. The best thing to do would be to make the changes and tests on chagall as that is the branch the 2.4 release will be based on. I understand that you've been working on Burrows but if these changes should be included in 2.4 and future releases I think its best to work off of chagall.

    On Github, create a fork of the repo. Then checkout chagall. Create a branch with a name related to what you are working on (perfImprovements for example). Make code changes, test, make more changes, text, etc.

    Once you have done all you can / need to for the specific area you are working on and would like that work to get merged in, push your branch to your forked repo on Github. Then create a pull request where your branch will be merged into the Fabric chagall branch. We can then review it and give feedback on things that may need tweaking. Then once everything looks good we can merge it into the chagall branch on the Fabric repo and it will then go into daily builds and future releases.

    Hope that helps.

    Eric Thivierge
    Kraken Developer
    Kraken Rigging Framework

  • benmalartrebenmalartre Posts: 16

    The problem is I can't work with Chagall as the FabricCore of FE2.3.1 miss some functions and I can't compile against the provided libraries of FabricUI,FabricCore...(If I have not misunderstood)
    So I think I have to wait for the 2.4 release and then make my change to the Chagall branch and then make a pull request
    Thanks for the infos anyway

  • AhmidouAhmidou Posts: 179 ✭✭
  • benmalartrebenmalartre Posts: 16

    Hey @Ahmidou ! Thanks for that!!
    I'll give it a try...

  • benmalartrebenmalartre Posts: 16

    I made my changes to the chagall branch files, already optimized by @mootzoid and successfully compiled against the FE2.4 libraries...
    The bob rig file(without unecessary spliceOps) runs now at almost 20fps
    I also made a pull request :)

  • borjaborja Administrator, Fabric Employee Posts: 480 admin

    Thanks @benmalartre , we are taking a look at them!

    Borja Morales
    Technical Product Manager
    Fabric Software Inc.

  • AhmidouAhmidou Posts: 179 ✭✭
Sign In or Register to comment.