Hi poly mesh strategies?

I will be using some high poly meshes in an upcoming project (40,000+ polys per model). My plan was to break them into roughly 4,000 poly “pieces” and create a separate 512x512 or 1024x1024 texture for each “piece”. I’ve seen models as large as a million polys (that awesome spaceship project) used in Unity and I wondered what other methods I should also use?

With Unity, breaking it into pieces may actually hurt you more than help you.

You want to reduce the amount of times that the gpu has to start and stop. (a draw call)

Each separate mesh will be a separate draw call. Each separate texture will be a draw call. Ideally you’d want to combine as many meshes together in a view as possible. One group of meshes should use one just one texture.

You don’t want to combine objects that are so far away from each other that they are rarely in view at the same time, because if part of the object is in view the whole object will be rendered. So you don’t want to combine all of your level objects into one large mesh.

But if you have a group of parked next to each other cars in the background, and you could manage to get them all to share the same texture, then combine them!

Nitpick mode on: polygons not visible aren’t rendered. There are two culling levels–Unity handles the object level, where objects completely out of the view frustum aren’t submitted, and OpenGL (and presumably Direct3D) handles culling on the polygon level, where off-screen polygons aren’t rendered. However, the entire mesh has to be submitted even if just a bit of it is visible, which can still be a drag on performance.

–Eric

Thanks WinningGuy, here’s the issue I’m trying to address (copied from the other thread as it’s more on topic here):

To some extent it depends on your hardware, so it’s not really possible to give a definitive answer. Best to try out different things and see what the framerate is.

–Eric

Thanks Eric, that’s what I’m doing. Just was hoping you gurus had some magic formula to this. :wink:

Well, there’s no magic formula to game dev as you know by now Paul :wink:

A few things to consider…

How many of these high poly meshes are going to be onscreen at any one time?

What is the poly/draw count of the environment?

How high resolution do the textures need to be?

I know you mostly do marine simulations so if this is a single high poly mesh sub-marine model or similar that you need to look as detailed as possible then I’d go for breaking it up into several meshes each with its own texture. You break a 40k mesh into 10 pieces with 512 or 1024 textures each it isn’t really going to matter that much… 10 draw calls and 4-7 MB (depending on DXT1 or DXT5) of texture space isn’t going to significantly change the performance.