Rhino Performance Problems - Current Status and Next Steps

Dear Forum Community,

We would like to be more transparent and give context to the issues you all have been experiencing with Rhino using Enscape 3.5 and above.

In Enscape 3.5, we switched to Rhino’s ChangeQueue to transfer model data to the Enscape renderer. We did this for two reasons. Firstly, the ChangeQueue enabled features that we would otherwise not be able to offer (though we do not support all of them yet). Secondly, the old API is already deprecated, meaning it can be removed at any time. So this switch seemed reasonable to us at the time.

We had evaluated the ChangeQueue in Rhino 6 but it did not fit our needs. In Rhino 7, at first glance, all issues seemed to have been resolved. So we went ahead and switched over to it fully.

This meant a complete rewrite of the way data is transferred between Rhino and Enscape. The reason you were seeing new bugs in old workflows was due to this. Some bugs were caused by our implementation and some were on McNeel’s side.

The performance degradation is also due to this switch. One feature that initially sounded really promising (dynamic updates) unfortunately proved to be too costly for larger projects, leading to its removal in version 4.0.2. That alone is not enough, though. We are in close contact with the McNeel developers and are working with them to get Rhino’s ChangeQueue and our implementation to where they need to be performance-wise.

Some of you have already allowed us to share your projects with McNeel so they can also take a look and analyze what is happening. This is extremely valuable.

Trust us that we have learned some hard lessons with this. Here are two things we are changing or have already changed.

  1. Automated Performance Measurements
    Performance benchmarks will be automated so that these problems do not surface on your machines for the first time.
    We still rely on your reports, the exact workflows and projects you are seeing these problems with. So please do not stop sending us your feedback!
  2. Feature Flags
    We now have a feature flag system in place where big changes can be opt-in. This will make it possible to isolate changes like the ChangeQueue implementation and allow us to fully test it before committing to it and finally releasing it.

Thank you for bearing with us!