Reasonable amount of vertices, skeletal animation

Hy there,



I wonder what is a reasonable amount of vertices for a mesh-model which should be animated by a skeleton.

I have got a pretty detailed model of a sheep, which has got a vertice count of about 80k. Now, if I do a skeletal animation with that sheep, it looks really pretty, but the framerate drops drastically. I.e. from 60 to 10, with just one of the sheeps animated.



I am using the MeshAnimationController to do the skeletal animation.



Also, it seems that the amount of bones does not influence the skinning time a lot, it does not matter if i've got 20 or 100 bones, the time used for software skinning is around 40-50ms on my Intel Core Duo E8200 @ 2.66 GHz.



As I am absolutely new to games, skeletal animation and so on, I have no clue how far away I am from a reasonable model.



So, the questions are:


  • For a really nice looking animal, how much vertices is about reasonable, so you can get 50 of them at the same time on the screen ?


  • Is skeletal animation the way to go for animated characters ? Or is anything else better/faster ?


  • In professional games (like 'Overlord, Raising Hell'), I've seen some sheeps too ;), and I wonder about how much vertices that such a character has, or one of these creatures in the game (those helping you to fulfill your mission). Do they also use skeletal animations (in such games) ?





    Thanx for any responses

    maxx_981

Skeletal animation is fine, but 80,000 vertices for a background creature is extreme.

Reasonable numbers will vary considerably depending on your target hardware, but I would say you should be looking closer to 1,000. Also you will probably want to use multiple levels of detail, and other optimisations if you want both good visual quality and the ability to have 50 on the screen at once.

What Alric said.  Check out the following Blender page (which may not apply to the modeling system you are working with) that shows visually what should be done.  You 3D modeling app may have a feature to reduce the poly count.  More information on what type of model you are using would be helpful.



http://wiki.blender.org/index.php/Doc:Manual/Modelling/Scripts


1000 polys is little conservative with todays hardware even yesterdays hardware I saw a tut for modding unreal2004 think it was :? that build a 3500 tri character with 1 10241024 and 1 20482048 texture

I am using Maya 2009 -> export to binary Ogre -> Deserialize to xml -> my script fixing Maya output (or me handling Maya wrong ;)) -> jme ogre-importer …



Ok, seems I have to reduce polys and look into LOD … the model looks so sweet … its hard to remove something:-)



Also, I am using the latest SVN Revision of jme, which has some performance updates for the skinning, but actually I couldn't 'feel' the difference in my case.



And yes, what about the textures … I am using quite a lot of high-resolution textures, like 6 x 10241024 and a 1 x 20482048 … could that be another reason for the slow skinning ?



and … these answers where fast, wow, excited …



regards

80k verts for a sheep?  :-o that is around 240k polys ?

look at  this one



So i’d say try to get a polycount of about 5-10k polys for a high detailed charctermodel, including most of his invetory and/or cloths. Together with one 2048x2048 map. If you’d like to get real nice effects then check for normalmapping!

lowpoly

detailed highPoly

Render the normalmaps from your high-poly-model and apply the normalMap to the lowpoly model.



For a sheep i’d say try to stay unter 3-5k polys. And 6 detailtextures is quite a lot as well :wink:

Exception: the sheep is your super-neat main character, and you have a bunch of close-ups on his front hooves :slight_smile:








Not sure how intensive everything else is in your program is (ie: dynamic: point lights, shadows, texture blending), if you reallllly wanted to keep the count of your character you might look into whether you have over-complicated other areas too.



I do however agree with others that it seems over kill, and Level of Detail (LOD) would be a necessity… There are some tutorials on jMonkey for terrain LOD etc… same principle.

>> 80k verts for a sheep?  shocked that is around 240k polys ?



Maya says:



Verts:   81774

Edges:  96110

Faces:  38128

Tris   :  38176

UVs  :     750





Alright, so I tracked the problem from the wrong side.

It seems it is more the mapping than the modelling that makes the essence. Btw. that rhino looks great. Is it just made from one 2048 texture ? If so, wow…



I just have a really nicely detailed sheep model, but then thats maybe something you could use for a rendered animation, but never for realtime.



I am already using "Dot3 bump mapping", but could you explain me in more detail how exactly your hint works ?



Render the normalmaps from your high-poly-model and apply the normalMap to the lowpoly model.


For example, why do I need to create the normalMap on the high-poly-model ? The normalMap is created from the texture, which I can also apply on the low-poly-model, right ?

Another question is, do you always model the high-res version, and then reduce it, or do you build a low-res model, and then go on adding details ?

-> it seems to me that reducing a mesh has a lot of side-effects (for example in Maya I often get holes).
But maybe here again, this could be because the model is just overkill.

Regards




Ok, I got it now :slight_smile:



First, my model is unusable for such an animation. It was downloaded and converted before I started using it, but now I know all the details about how such a mesh should actually be. Optimized.



I looked at a lot of other models now, and on these models, with 'correct' meshes (ie. all normals fine, no holes, triangulated…) its really easy even to reduce a high poly mesh (at least within Maya).



But, 3) makes eveything clear now for me. I didn't understand the difference between these normal-maps. Now I will go on trying to create such a "between the models" normal-map and apply it together with just one high-res texture (also there, the magic word, optimization). 



-> So my questions are answered !



-> got an unusable model

-> need to optimize all aspects

-> vert-count should stay in the lower thousands

-> use normal-maps for detail, not actual mesh-geometry

-> use LOD

-> use this forum :wink:



Thank you all

Cheers


Maya says:

Verts:  81774
Edges:  96110
Faces:  38128
Tris  :  38176
UVs  :    750



well' this seems to me, that you have a lot of loose vertices on the model.
A Sphere with 20000 Verts has 40000 faces (Triangle polygons) or 20000 faces (Quad Polygons).
So normally the vertex-face ratio is ~ 1:1 (Quadpolys) or 1:2 (faces).
On your mesh its 1:0.5...
...this makes me think, and one thought is that you have either a lot of loose vertices (which you might merge togheter) or the sheep's fur is modelled as geometry, and there are a lot of vertices which have only one face attached.

, but could you explain me in more detail how exactly your hint works ?


well.
A common workflow in 3D-modelling is:

1. start modelling a lowpoly-mesh, as it fits the general shape of your object, with some little important geometric details. (~10.000 polys).
Starting with a highpolymodel and try to reduce the polycount afterwards will never work satisfactorily!!

2. keep the lowpolymesh and start adding details to get a high-poly model from it, with every single geometric detail, like scars, wrinkels, cloths etc. You may do it in 3dsMax/Maya....but you may check out some tools like Z-Brush for this as well. (up to millions of polys) Zbrush-Central.

3. A Normalmap stores the information of every normal of this high-detail geometry - and this is pretty different from a normalmap which is created from a color-map-texture! Normalmaps from textures are quite ok as well for many objects(barrels, shags), but for a real high level of detail you should create a normalmap from geometry. Because you'll never get that much detail from a painted colormap. *afaik*
And normally you paint the colormap onto the highpoly model to be aware of every single geometrical detail.

4. Then use this normalmap and colormap for your lowpolymodel, and you gain a lot of "faked" geometrical details for it.

hope this make things clear.

what you see on the high-detail rhino pic, is the Zbrush-model allready with applied color-map.

So for your sheep, i dunno how detailed it is (maybe post a screen?), you may think of getting another way.
Start building a new lowpoly model, and use the current model as a reference, to fit the general shape as good as possible.

so far...