Sign in to follow this  
VladR

Whats the Highest-Quality offline Character LOD method ?

Recommended Posts

VladR    722
I`m trying to save the time of my modeller and save him from re-modelling the same character three times - since we want 3 levels of detail (Original, Half tris of Original, Third tris of Original). Considering, we have about 10 different characters in our game with 3-5 animations per each, it`s a LOT of work to be made and exported into engine. So if it takes me a week to program a routine that makes quality low-poly version of the original, than it`s great. Since I don`t plan to do it real-time, all LODs shall be preprocessed (and selected via Options Menu), any slow O (N^2) method (or worse) is fine. It just needs to be quality and preserve outline curves because of diffuse lighting (no per-pixel lighting). Just for the record, our models are 1500-2000 tris each. Thanks VladR

Share this post


Link to post
Share on other sites
mikiex    261
Depends on how you make your models, if they are built from
patches then u can get your LODs for free.

If your using normal mapping there are also ways you can go.

For standard models you could use 3dsmax's multi-res or
anything else that maintains uv's

one question would be, why do you need LODs ?
why not build your models to one level?
newer graphics cards will kick them out fine
try some tests??

Share this post


Link to post
Share on other sites
mikiex    261
infact reading your post again, your models are pretty low
as it is for these days.... many games are looking to push 5000+ polys for a top LOD character

Share this post


Link to post
Share on other sites
Jim Adams    440
I think it's still there's still a lot of call for LOD today - even if cards can push out so many polygons. Look at a game like Spiderman 2 - the size of the city, all the cars and people, etc. I can pick out a number of LOD methods they are using to keep things smooth, and I'm very impressed.

I would just use some sort of progressive mesh method mixed with a normal map to compensate for lost details. Pre-compute all meshes and store in files, or if you're not LODing much, just compute at load-time. A great thing about doing at load time, you can update your project later and not have to redistribute the precomputed files. The best way would be to generate the LOD files every time you update your prog, or the first time you run your program (during the install for example).

Share this post


Link to post
Share on other sites
VladR    722
Quote:
Original post by lonesock
there is an app here which shows a few different methods. I'm sure you could load you model and check them out.

http://www.jsomers.com/vipm_demo/meshsimp.html
Interesting link, Thanks, I`ll try it.
Quote:
Original post by mikiex
infact reading your post again, your models are pretty low
as it is for these days.... many games are looking to push 5000+ polys for a top LOD character
Well, I`m targeting Budget range of games, not a AAA game that can push it`s HW limits. I still need this game to be playable on TNT1-level cards that can be found in many 500-1000 MHz machines still. Since I`m animating characters through Vertex Shaders, these shall run on CPU with such old cards, so the less vertices, the better for CPU too.
Quote:
Original post by mikiex
Depends on how you make your models, if they are built from
patches then u can get your LODs for free.
Nope, pure triangles.
Quote:
Original post by mikiex
For standard models you could use 3dsmax's multi-res or
anything else that maintains uv's
That`s what we want to avoid ! No more manual work with models ! We`ve done that with our first game and we had just 4 characters there with 1-2 animations. It was a tough experience and I definitely want to avoid it here when we have separate animations for weapons and for character. Just Reexporting and Reimporting it all already detriangled into Game would take us 2 days. And with so many different directories and files, errors are bound to happen. That`s where the function shall take care of it itself.
Quote:
Original post by mikiex
one question would be, why do you need LODs ?
why not build your models to one level?
newer graphics cards will kick them out fine
try some tests??
Man, I`m not competing with BIG GUYS out there so I can say that min. config is 1,5 GHz with GF3. Then no one would take my game into retail budget. I don`t expect those with 4GHz machines and ATI X800 to run and buy my game. Those probably never even look into budget section (if I actually make it there, that is).
And based on my previous tests with our first game, it`s quite a difference in fps if all characters on screen have 10k polys, or just 3k polys on TNT1.

Quote:
Original post by Jim Adams
or if you're not LODing much, just compute at load-time. A great thing about doing at load time, you can update your project later and not have to redistribute the precomputed files.
Load-time preprocessing is absolute NO-NO. What I hate most is looking at the load screen in any game for 2 minutes and guessing what on earth is this game actually doing if I have 256 MB of RAM and the textury quality is low, and I freed 200 MB of RAM before running the game ? Besides, such LOD preprocessing eats up RAM very quickly, and I want to avoid swapping, if at all possible, at least on 128 MB of RAM. Because then during the game, the game would swap because of my previous preprocessing.

The only viable preprocessing during load-time is decompression of character animations into Vertex Buffers.It`s much faster to load just 200 KB of data and decompress it and make a 1 MB Vertex Buffer, than to load whole 1 MB Vertex Buffer from HDD. Besides, I already have a Vertex Decompression Shader in-place, so after some performance test on low-spec machines, I might stuff the packed animation directly into Vertex Buffer thus shortening the load-time to absolute minimum.

Share this post


Link to post
Share on other sites
Jim Adams    440
Quote:

Load-time preprocessing is absolute NO-NO. What I hate most is looking at the load screen in any game for 2 minutes and guessing what on earth is this game actually doing if I have 256 MB of RAM and the textury quality is low, and I freed 200 MB of RAM before running the game ? Besides, such LOD preprocessing eats up RAM very quickly, and I want to avoid swapping, if at all possible, at least on 128 MB of RAM. Because then during the game, the game would swap because of my previous preprocessing.


If you're using DirectX, I would recommend checking out the progressive mesh sample - it's extremely fast at reducing the polygon count, so load-time is not a problem. Coupled with the load-time and save to disc for later use method, I don't see a big problem.

Also, you can use the same vertex buffers for the vertex data and just swap out the index buffers for the various levels. If an LOD creates extra vertices, jsut append those to the end of the vertex buffer and compensate in the index buffers.

Share this post


Link to post
Share on other sites
mikiex    261
Even a GF3 is quite powerful:)
Like I said, last project I worked on used patches
which gives you great loding while maintaining the original shape at the lowest level, min spec was gf3 -mainly for shaders.




Share this post


Link to post
Share on other sites
Raloth    379
Have your artist do everything in NURBS if he/she can. That way he/she can simply reduce the tesselation level for the different models (with maybe a few touchups). That should give the best overall result, but it might be harder to model at first.

Share this post


Link to post
Share on other sites
VladR    722
Quote:
Original post by Raloth
Have your artist do everything in NURBS if he/she can. That way he/she can simply reduce the tesselation level for the different models (with maybe a few touchups). That should give the best overall result, but it might be harder to model at first.
Well, it`s too late for that now that hero and all creatures are already animated. And now he`s finishing animations for second game, so it`s late for that game too. Maybe in next game.

Besides, this still brings the problem of exporting countless animations into many subdirectories which is very error-prone. We`ll see later if I find the time to implement some of above mentioned algorithms. Though I currently prefer devoting the time to finishing Radiosity than this.

Share this post


Link to post
Share on other sites
Teknofreek    331
Quote:
Original post by Raloth
Have your artist do everything in NURBS if he/she can.


Absolutely not! NURBS are horrible to work with for characters. There's no really good way to get seamless branching geometry(eg. arms coming off the torso). You can try to use stitching routines, but there are often artifacts. More importantly, given the poster's poly counts, NURBS are not really an adequate way to describe those surfaces well. NURBS, as well as patches, work well when you have naturally smooth flowing shapes that you want to dynamically res where the results are in the thousands of polys. For characters of the posters resolution, every poly counts and the artist will want fine control over each and every one of them.

Anyway, to the original poster, I hate to say this but something like Multi-Res is the best way to go. It will keep the UVs intact and can be fairly quick to work with. And tweaking things by hand, especially at this poly count, will give you the best results.

However, another thing you can do is to automate the Multi-Res process. I've set our exporter up so that the artist can define multiple LODs, but the geometry is only created at export time. This way they can go back and update the model and re-export easily.

Another thing to note is that if you're using bone-driven animations there shouldn't be any problems with keeping animations up to date. As long as each of the LODs is linked/skinned to the same skeleton you can just export one set of geometry and many sets of animated bones. This makes it easy to update the geometry, and it's LODs, without having to re-export every animation.

-John

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this