I have a medium complex mesh model - about 400K polys total with 500 different parts. My dynamic display is great - I can spin it as fast as I can move the mouse and no stuttering, TestMaxSpeed is 1.3 seconds for 100 redraws… (Quadro K2000)
Now, I want to rotate the model (not the camera) 360 degrees in 4 degree increments - so 90 rotations/redraws. The operation takes 5.2 seconds and there is noticeable stuttering; the speed of rotation is not constant.
Certainly, there is the actual calculation and transformation of the objects that adds to the load. To see how much that is, I cut the redraw and ran the script. It takes about 2.5 seconds. So if I remove that from the 5.2 second results, I get about 2.7 seconds left which should be the time used to to redraw the 90 rotations. That’s only half the rate that TestMaxSpeed gets. (And mouse tumbling is way faster than TestMaxSpeed, but I guess some display trickery is used to drop frames that are not needed…)
Why this is a problem: I’m scripting an animation in which I am rotating 300 different objects like the one above 360 degrees about their center, one by one… And the thing just bogs down tremendously. I cannot get a rotation speed as fast as I would like, but I am prepared to live with the 5 seconds per object…
What is a problem is that I cannot get smooth rotational movement out of it no matter how much I try. I need to use RhinoApp.Wait() to make sure it waits to redraw before doing the next rotate - otherwise it just freezes about halfway through, skips the last half of of the rotations and just finishes at the final position. But, as I said, the incremental rotations don’t all take the same time, so the movement is jumpy. I’ve tried to even it out by adding a dwell time after each rotation, but that is simply added after the RhinoApp.Wait(), so all it does is slow the unevenness down, not eliminate it.
It would be cool to use something like Bongo to do this, but I don’t know if it’s possible to program a rotation and then loop through it with 300 objects like you can with a script. So, any other way to insure that the redraws happen at a more constant rate?
I can provide some cooked-up samples (I can’t post the real stuff yet) if necessary…