PDA

View Full Version : Viewport performance on animation – How to explain these numbers?


FiveTalents
12-21-2004, 06:48 PM
I just started learning XSI a few months ago and so far am quite happy with it. My system consists of an Athlon XP 2000+, 1GB PC2100 DDR, GeForce4 Ti4200 with 64MB RAM, and Windows 2000 Pro OS. The system is by no means top-notch but should be OK to handle most of the work for me. However, I have found that the viewport performance is not up to the standard, especially when I tried to preview the animation sequence. In order to see where to improve my system set up to get a better viewport performance, I ran a few tests and got some performance data to ponder. I have drawn some thoughts from my tests but hope to see how you more experienced guys think about it. Since this is a long post, I am afraid to waste your time if I am totally off on this topic. If so, I stay humbly corrected.

For the first test, I took the elephant scene from the project folder on the Animation DVD (the Production Series DVD), did a frame rate benchmark on it, and got the following initial numbers.

Test 1 – Original elephant scene
Camera viewport with hidden line removal, showing only 3D geometry, ground grid, frame rates and scene/selection info, Uncheck the “Limit Max Playback Rate to Scene Frame Rate” in Display preference.
------------------------------------------------------------------------------------------------
Elephant Triangles (fps): 9324 (14.8), 37296 (4.6), 149184 (2.2), 596736 (did not try)
------------------------------------------------------------------------------------------------

As you can see, the frame rate is almost not usable even with only 37296 triangles (after just one “+” subdivision.) At first I thought it was the fault of Ti4200 (being a “game” card), but was wondering how could it be this bad when games can be played so well. I went ahead with a second test, this time by muting the envelope operator in the Animation region (so the elephant will not animate but only move like a sculpture.)

Test 2 – Elephant scene with muted envelopes: other settings same as Test 1.
----------------------------------------
Frames per seconds: 30, 30, 30, 18.7
----------------------------------------

Two things to my surprise: (a) Ti4200 apparently is not the culprit and can handle the rendering of quite many triangles; (b) The frame rate was capped at 30 fps (the scene setting) even when I have unchecked the “Limit Max Playback Rate to Scene Frame Rate” in preference.

At this point I was in a puzzle. So I decided to make a third test – this time with only the elephant and some very simple key frames on rotations. I removed all animation action clips from the original scene, and added only a few key frames to rotate the elephant along Y and X axes several rounds. The envelope is still muted.

Test 3 – Elephant scene with only simple rotations: other settings same as Test 1.
--------------------------------------
Frames per seconds: 60, 60, 30, 20
--------------------------------------

The test numbers drove me to the following observations (being new to XSI, I may be way wrong though):

(A) Envelope calculation is taking up a lot of time (as shown in comparing test 1 and 2) and is the main reason for the slow viewport animation performance on my set up. Does anyone know if CPU or GPU is responsible of this calculation? My assumption is that CPU does 99% of the work, and only passes the final TRS (translation/rotation/scaling) matrix to GPU for geometry rendering calculation. Or has the modern GPU already taken over some of these calculations from CPU?
(B) The rendering performance on Ti4200 is not the bottle neck for the viewport performance in my set up, as shown in Test 2 and 3.
(C) I could not explain why the frame rates are capped at 30 fps in Test 2 while they can go up to 60 in Test 3. Maybe there are some other settings I forgot to check/uncheck?


From observations (A) and (B), it seems like in order to improve my viewport performance in animation, I need to first upgrade the CPU, not the GPU. However, this conclusion is different from the “conventional wisdom” that I have always perceived from this forum (“High-end OpenGL card for the viewport performance, CPU for rendering.”) Also, based on the numbers from test 1, I wonder what kind of CPU to get in order to get a usable frame rate (like 15 fps) for even just 150K triangles (is this a high count at all?) I think I may be missing something here.

For comparison, I borrowed a notebook and tried to run same tests on it. The configuration of the notebook is as follows: Pentium 4-M 2GHz, 512 MB RAM, Mobility Radeon 7500 with 32 MB RAM, and Windows XP OS. I re-ran the tests above with the same settings and got the following numbers.

Test 1 to 3 on the P4 Notebook PC
-----------------------------------------
Test 1 FPS: 13, 4.5, 2.0, did not run
Test 2 FPS: 36, 30.2, 19.6, 8.9
Test 3 FPS: 45.8, 39.5, 22.8, 9.5
-----------------------------------------

Comparing the above numbers, with the assumption that P4 2GHz is comparable to Athlon XP 2000+ in terms of CPU power, and knowing Radeon 7500 is at least one class below GF4 Ti4200, I have the following thoughts:

(D) The envelope calculation mainly depends on CPU, not GPU, as the numbers from test 1 are almost identical in both cases. This seems confirming my assumption in the previous observation.
(E) XSI does use GPU for viewport rendering acceleration, as shown by the frame rate differences in test 2 and 3 on the two cases.
(F) In Radeon’s case, the frame rate on test 2 does go beyond 30 fps. Hmm… interesting. It’s the same scene files used on my system.

OK, this sums up my long post and effort to analyze my experiments on the viewport performance. I know I must have missed something in the process so your feedback is greatly appreciated. Thanks!

RayenD
12-23-2004, 09:35 PM
Well, if you want to improve performance while using enveloped objects, buy dual processor system.
Enevelope in XSI is multithreaded, but I don't know exactly how it works (probably envelope op runs its own thread). It speeds up things a bit, comparing to single processor.

Honestly, in 99% of cases in 99% of any 3D software you won't get realitme performance with enveloped objects. There is also a lot of other factors which can possibly slow down things (expressions, constrains, no of lights in the scene etc, etc.). Use simplified objects and skeletons, then transfer animation.

One last thing. With "pro level" graphic card (like quadro equivalent to your geforce) you will get around 5-10% performance boost, no more.

FiveTalents
12-25-2004, 07:05 PM
RayenD, thanks for your reply.

Your feedback kind of confirms my observations in those experiments, and that's help I am looking for here - to help me make the right judgements from the observations. Thanks a lot. :thumbsup:

CGTalk Moderation
01-20-2006, 05:00 AM
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.