2008-11-13 - System log: Swoosh!

Read what's going on behind the scenes and in the minds of the developers of Craft Director Tools.
Post Reply
User avatar
Micael Belin
CTO
Posts: 168
Joined: Thu Apr 03, 2008 9:39 am
Location: Gothenburg, Sweden
Contact:

2008-11-13 - System log: Swoosh!

Post by Micael Belin » Thu Nov 13, 2008 4:42 pm

Yesterday we finally managed to finish of the final bundle! Even though Jonas is still fixing a final problem with the mac version, i do consider the project finished. Now we can get right on to the next. Fixing some leftover stuff.

First item is Maya. Don't get me started on Maya. It's always been my least favourite adaptor. The API is so vast and completelly garbled with deprecated stuff, some stuff don't even work as intended and some stuff simply doesn't work, period. Mind you it's my personal opinion, but Maya have really given us headache on several occasions.
Today, our biggest problem with Maya is Performance. I will try look at how to speed things up.

First, i created a temporary test plugin (Plugin is what we internally call our tools, such as Helicopter, 4Wheeler Extended, ObserverCam, etc) which basically animates a bunch of nodes when recorded. I suspect reading and writing node positions from the Maya scene is our bottleneck.
Then i started to do some benchmarking: 100 animated nodes, 1000 frames (one read, one write per frame and node, making it a total of 100,000 reads and writes)

No modifications: 31.4 seconds
Disabling writing new keys: 17.7 seconds
Disabling both writing and reading keys: 0.2 seconds

Ok, so it's definatelly key management. Maya is simply not designed to be able to store keys in realtime (in this scenario, 2400 transformations per second, to be exact).
For comparison, 3ds max 2008 managed to simulate the same scene in 2 seconds. Performance difference is huge.

My idéa of fixing this problem is to make a key cache which will manage all keys during recording and then batch them down to the host once the recording is done.

I stripped down everything regarding key storing in the adaptor and switched to simply move the nodes without storing any keys.
After some heavy tweaking i managed to make the simulation finish within 2 seconds! Max performance! (hehe)
What is left now is to store the keys internally and create some baking dialog at the end. I really hope there is a function in Maya API which will allow storing multiple keys more efficiently at once. Otherwise i have only postponed the problem to until recording has finished. Well, at least the recording part will go smooth.

Who said Maya has to be slow?
micael.fredriksson@craftanimations.com
http://www.craftanimations.com

Post Reply

Who is online

Users browsing this forum: No registered users and 2 guests