2
\$\begingroup\$

The game MegaGlest uses a MD3-like mesh format, which is keyframe-based vertex animation.

One of the challenges moving forward is to continue to support lower-end hardware. We know some users have trouble with high-poly models, and the current MegaGlest assets are thoughtfully spartan because of this. Not all players have hardware that supports shaders, even.

However, we aim to provide a much richer experience to people with today's high-end hardware. We also aim to add support for a bone-based format, probably IQM/IQE. We want much higher quality meshes, but we want to continue to support low-end hardware.

The plan that is hatching in my mind is to distribute high-end meshes and have the low-end targets auto-simplify them in order to meet some sliding scale of budget.

How do you simplify meshes? I can find lots of research-like papers, but nothing really mainstream nor concrete. And to my mind, some consideration of triangles per unit cube (in game space) is needed, and not just arbitrarily saying 'make this mesh have only n triangles', where the triangles may be unevenly distributed around the model.

\$\endgroup\$
4
  • \$\begingroup\$ I think the animations being vertex based is going to cause a lot of issues with the standard simplification techniques. \$\endgroup\$
    – House
    Dec 9, 2013 at 20:49
  • \$\begingroup\$ @Byte56 yes I anticipated this; all the papers I find are for non-animated meshes, even. \$\endgroup\$
    – Will
    Dec 9, 2013 at 20:50
  • \$\begingroup\$ As for your question, you might need to be a bit more specific. If you want more than papers describing the process, you need to tell us which method you're using and what about it you're having trouble implementing/understanding. See this related question: gamedev.stackexchange.com/questions/40552/… \$\endgroup\$
    – House
    Dec 9, 2013 at 20:53
  • 2
    \$\begingroup\$ There's the probably most mainstream simplification algorithm (you can call it award winning): the Quadric Error Metric simplification heuristic (and its vertex-attribute flavours worth mentioning): google.com/… \$\endgroup\$
    – teodron
    Dec 10, 2013 at 8:28

1 Answer 1

2
\$\begingroup\$

There are several decimation algorithms you can implement, here is the original paper on decimation. But as you said non of them are mainstream, or even easy to implement.

I would say your best bet is to check OpenMesh's decimation framework, they have a policy based C++ implementation of decimation algorithms, so you can try different policies based on the criteria you need. I have on-hand experience with it and I would say they got impressive results maintaining the general shape and the attributes of the vertices. The only drawback I can think of is that they use half-edge data structure, so unless it's a pre-process it might not be practical to use in your game.

They also have an editor where you can try it without even bothering with code.

\$\endgroup\$

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .