Sorry your browser is not supported!

You are using an outdated browser that does not support modern web technologies, in order to use this site please update to a new browser.

Browsers supported include Chrome, FireFox, Safari, Opera, Internet Explorer 10+ or Microsoft Edge.

Bug Reports / DBP 6.2, Keyframe Animated Models are not Automatically Culled

Author
Message
Cash Curtis II
19
Years of Service
User Offline
Joined: 8th Apr 2005
Location: Corpus Christi Texas
Posted: 20th Jul 2006 04:59 Edited at: 20th Jul 2006 05:00
I don't know how long this problem has existed, as I've never run this kind of test before. I discovered this by running stress tests with animated models. I was comparing boned animation to keyframe animation.

Boned animation, 50 identical models, same number of animations, Size, 242 KB.
FPS ranges from almost 240 FPS to 50, depending on how many models are on screen.


Keyframe animation, 50 identical models loaded. Size, 1.16 megabytes.
15 fps, no matter where the camera is pointing.
]


With keyframe animated models, the framerates don't change, whether I'm looking at 1, 3, or 25 models at the same time. So, obviously, DBP is not culling them when they're animated.


Here's a rather dramatic example of the culling problem with animated models...



Here's the code, but the entire project with media is included in the download link below...

Keyframe Animation Culling Example, 2.17 MB

Compile the program. You'll see a line of soldiers in a row. The framerate will be extremely low. Hold the control key and see manual culling being applied to the models. You can move the camera around with the mouse. Framerates jump from 15 to as much as 230 on my computer, depending on how many soldiers you're looking at.

This tells me quite conclusively that DBP is not culling. Of course I can manually cull them myself with 'exclude object on', but that's beside the point. This definitely appears to be a bug, and a potentially noob game killing bug at that. I imagine that every RPG has failed as soon as people started loading animated models into their world, as there is no reason to suspect that DBP handles animated models differently than regular ones.

And, it is possible to cull them, so there is no reason that DBP shouldn't be. DBPs culling would simply be faster than any manual calculations that can be made, so the problem should be fixed.

Thanks!



Come see the WIP!
Fallout
21
Years of Service
User Offline
Joined: 1st Sep 2002
Location: Basingstoke, England
Posted: 20th Jul 2006 13:00
Out of interest Cash, what is the difference between bone based and keyframe, just to make it clear?

Also, I've found I always have to implement my own culling in pretty much everything. DBP culling does work, but its not totally accurate or efficient. For example, my demo level in Claymore Island is made of 50 individual pieces to allow DB to cull the off screen ones. It ran at about 250-350 FPS. When I made my own culling system, I managed to get it to exceed 1000FPS, and never drop below 600FPS. Before I carved the model into 50 pieces, DB would run it at about 140FPS, so that shows DB was doing some type of culling, but far from optimised.

I think you should be implementing your own Exclude Object On based culling system anyway, because DB will be removing off screen objects from rendering, but it won't stop processing them (animating etc.). If for example, you were changing vertex data of and offscreen object, you couldn't do that if it was excluded, but you could if it was just culled. Therefore DB can't go as far as Excluding the object when it's off screen, incase the user still wants to do some processing on it - only you can do that, and therefore increase the FPS.

But I'm not disputing this as a possible bug because there's no reason that I can see that DB needs to animate offscreen objects. It can just keep track of where the rotations/positions are and then carry on again when they come on screen. Similar to you though, with my custom animation system, any animating character that is offscreen gets excluded and no animating (or processing of any kind) will happen on it ... not even positioning. I'll just move it in variable form and replace the object when the variable coordinates are located as on screen.

Cash Curtis II
19
Years of Service
User Offline
Joined: 8th Apr 2005
Location: Corpus Christi Texas
Posted: 20th Jul 2006 13:56
DBP is animating off screen models, which I suppose it shouldn't, but I think that's up to the user to disable. In my example above, I stop animations off screen, since I do it in my game.

DBP culls objects, not limbs. So if you have one huge model, it will render the entire thing. Breaking it up into smaller pieces is very smart - that's what I do too.

The basic problem is that DBP is actually rendering the models that are off screen rather than skipping the render step. It's still tracking everything that the model is doing, but just skipping that last intensive step.

Boned animation uses software to move the model limbs. I have the Advanced Animation Plugin, but I find it very difficult to use. But, the models aren't animated, animations are applied to them as the program runs. Therefore, normal object culling is applied.

Positioning a model is very CPU cheap. You can actually do a lot to a model that is excluded - animate it, move it, rotate it, etc. It's a great command.


Come see the WIP!
Fallout
21
Years of Service
User Offline
Joined: 1st Sep 2002
Location: Basingstoke, England
Posted: 20th Jul 2006 17:13
Yep. Exclude object on is my new best friend too. I use it all the time, where ever possible, and enjoy the FPS increases.

Cash Curtis II
19
Years of Service
User Offline
Joined: 8th Apr 2005
Location: Corpus Christi Texas
Posted: 8th Sep 2006 10:22
This too is really a bug


Come see the WIP!

Login to post a reply

Server time is: 2024-05-10 22:26:59
Your offset time is: 2024-05-10 22:26:59