PDA

View Full Version : 3ds Max 7 SP 1 - Rig Performance


WGerick
05-25-2006, 07:42 PM
Hi there,

for the last week I've been working on my first more complex rig. Finally it all worked out and I got all the controls in, that I needed. Problem is, now that everything is finished, I can hardly work with the rig. Everything is way too slow. Scrubbing the timeslider or especially rotating the pelvis leads to a huge 20 sec lag. (Funny thing is, rotating via the viewport gizmo is almost impossible, whereas using the transform type-in works quite well)
It's not that the rig is extremly fancy. It has some nice features like stretchy spine and neck, which are mostly scripted, but can scripting cause Max to slow down so drastically? There is no skinning, no turbosmooth applied. It's a rig for a robot and all the geometry is simply linked to the bones.

It I think of something like Automatron (http://lotsofrobots.com/automatron/Automatron.htm) by Andy Murdock for "Lots of Robots" this here should be fairly easy. So I must be doing something terribly wrong.

Here is a quick vid of the features (techsmith codec, 29MB):
http://www.derwanja.de/spine.jpg (http://www.derwanja.de/BasicRig.avi)

I used scripting quite a lot. Even when I didn't have to, just to keep things easier to change. For example, I tried wiring the weight of a controller, instead of scripting it, but it worked even slower.

I know it's hard to say something without having a closer look at the actual controls, but are there some general rules? Like, choose scripting over wiring, when trying to do blablabla...

I even tried to use a node-base referencing system, instead of always using a full path name to access a custom attribute, but it left me stuck with quaternions, which caused fliping in the rotations...(http://forums.cgsociety.org/showthread.php?t=361424)

So basicly, I have no idea left. The controls are working better than I thought, but you can't animate anything. Quite frustrating ;)

Any help would be great.

THX in advance...

Mattrne
05-29-2006, 06:43 PM
i think you may be running into what seems to be the bain of my life - getting complex rigs to work at speed in my experience is incredibly difficult, even without hi poly meshes bound to them. All i can suggest (and wether this is practical is another question entirely) is to setup a much simpler scene with none of your clever stuff in, which will allow you to rough out your animation and then load this animation back onto your more complex rig. One thing which seems to speed up my workflow is setting the length of the controllers in the dope sheet - for some reason (at least on my pc which is a crash addict), repsonsiveness always seems a little better if my controllers only last 1000 frames (via dopesheet) instead of say 100000. Dont know if thats just me imagining it though!

CarlosA
05-30-2006, 10:15 AM
you know in max 7 there is a very bad bugg with the time slider.....
seems that if you use many position contraints and you try to scrub the time slider you will get a huge heng in your system.
one fix for that is to scrub through the time sheet or use a scripted time slider.
i have one in my sight if you want to check it out. http://www.losart3d.com/scripts/lospwerScrub2.mzp
you can get preaty complex on your setups in max 7 but the one thing that will kill you is building complexity up the hierchy.
which means that if you are building a psudo neck spline ik untop of a psudo spine spline ik your moving both of this togather can become virtualy imposible. add arms with splike ik based twist and you have now rendered you rigg useless.

should you use wireing over scripting.... if you can that is a sure "HELL YES!!".. you might not nonticed a difference now but once you have more than one character moving around in your scene, you will notice the differance. but you will also save you self from people saying to you why you script that?? you know you can just wire it right??? don't forget you can do math to your wires either.
if you are using nodes which you are forced to query the world space roatation try using expose transform node. this does a nice euler conversion for you, but if posible try to get your info from the node's trasformation controllerers.

the good news is that max8 does not have many of this limitation. if you can afford to make the jump, you won't regret it.

cheers,
Los.

WGerick
05-31-2006, 11:27 PM
THX for the help, guys.

I exchanged a lot of the scripts, and simply used wiring... As you mentioned Carlos, it didn't speed my scene up all at once.

I tried opening my scene at college, where I can use max 8 and, who knew, everything works perfect. I also changed my static dependsOn with nodes, which increased the speed even further.

Carlos, you talked about building complexity up the hiearchy. Thats exactly what happend. I build some nice auto-orient control for the neck, which totaly killed the performance. So I removed it.

Same thing with the spine control. I kept it stretchy, but deleted all the complex orientation controls.

I'm not feeling too bad about all the things I took out. After playing with the rig in max 8, I, once again, noticed that you really don't use these fancy auto - something controls, since you always have to touch everything anyway to correct little things.

Mattrne: About loading animation on a "high res" rig... I will go for it, on my next organic character, which should be more complex than these robot rigs. And also, thx for the controller length hint. I will try to shorten those, according to the shot.

THX again!

CGTalk Moderation
05-31-2006, 11:27 PM
This thread has been automatically closed as it remained inactive for 12 months. If you wish to continue the discussion, please create a new thread in the appropriate forum.