Advertisement

Best practices for 3D video game art

Started by May 24, 2012 04:41 PM
1 comment, last by Conoktra 12 years, 7 months ago
Hello!

I have a few questions regarding how 3D art should be developed for a video game. I was hoping someone with experience in this area could help me out.

First some background information - this is for a RTS game. The game engine uses Skeletal Animation via the MD5 model format. My artist is providing the model in the COLLADA format (I then convert it to the MD5 format the engine needs). Our aim is for high quality graphics but we keep performance in mind since it is a RTS game with large-scale battles.


  1. For an animation do you need a begin animation, loop animation, and end animation? So for a worker mining resources would it need a "begin mining", "mining loop", and "end mining" animation? I wouldn't think so, because the skeletal animation should smooth the transitions, right?
  2. When rigging the model, do you want to minimize joints or do you want to create a complete rig with all the support bones? And what is the difference? The engine does use a physics simulator for unit deaths, so when they die they fall into pieces on the ground, if that makes any difference in the answer.
  3. How is the best way to organize animations in the COLLADA format? Is it best to export each animation as a separate model, or is there a way to organize them inside a single model file? Keeping in mind that I am converting it to the MD5 format afterwards.
  4. Around what polycount would you recommend for an RTS game? I am telling my artists < 2500 polys atm.


I really appreciate any advice you can give me - I really don't know what the best practices are for developing 3D game art!

Thanks.

# For an animation do you need a begin animation, loop animation, and end animation? So for a worker mining resources would it need a "begin mining", "mining loop", and "end mining" animation? I wouldn't think so, because the skeletal animation should smooth the transitions, right?

It is not necessary, smooth transition will do the job, but an explicit beginning/ending animation could improve the animation quality.


# When rigging the model, do you want to minimize joints or do you want to create a complete rig with all the support bones? And what is the difference? The engine does use a physics simulator for unit deaths, so when they die they fall into pieces on the ground, if that makes any difference in the answer.

In game-animation, you have three sets of bones (joints/contrains doesn't matter). First are the bones which deform the mesh, then you have bones you need ingame to i.e. link objects to them (weapon bone) and atlast you have bones which only control your rig. In general you can ignore the latter one, they are only useful to the animator to ease his work. The other two will have a impact on performance, each bone must be calculated, more bones will require more calculations. Later on, when using GPU skinning, more bones will use up more registers.

Often games uses a second rig, with less bones, to be used in i.e. ragdoll calculations. They are only used in phyiscal calculations and are mapped to the deforming skeleton later on.


# How is the best way to organize animations in the COLLADA format? Is it best to export each animation as a separate model, or is there a way to organize them inside a single model file? Keeping in mind that I am converting it to the MD5 format afterwards.

I don't know the best practise, but I put all animations in a single file and use frame ranges to describe my animation, similar to md5 I think.


# Around what polycount would you recommend for an RTS game? I am telling my artists < 2500 polys atm.

What is your target platform ? Will you use instancing, batching or single calls for each unit ? How many units will you have on screen ? How small/large will be the a unit on screen ? Are you using some kind of LOD ?

There're really many factors which will influence the right answer, but <2500 sounds like a good start.
Advertisement
Thanks Ashaman73 smile.png

@polycount: I know this one is hard to answer because there are so many variables that can have an effect. Hardware varies, shaders can drastically skew the performances, and the scene dynamically changes with more/less being rendered on a continual basis. I guess a better way to phrase the question is is there a optimal # of polygons you want to aim for in a scene? Say 50,000? Then from there you can calculate shader costs & individual polycounts?

@hardware + implementation: The target platform is the average user's PC (as according to Steam's statistics). The engine uses octree scene culling and renders everything in batches organized by their type & render settings (it can't really be any more optimal, practically every fancy feature has been added in). It does utilize advanced shading & post processing effects (real-time lighting, bloom/HDR, light scattering, etc), but those can be disabled in a options menu.

Thanks again!

This topic is closed to new replies.

Advertisement