460 likes | 647 Views
Multi-Resolution Mesh in Dark Reign II. March 18, 1999. *All trademarks and brands property of their respective owners. Pandemic Studios Developing Dark Reign II and Battlezone 2 Dark Reign II Sequel to popular RTS Game. Who are we?. John Cooke 3D Programmer Dark Reign II. Rick Glenn
E N D
Multi-Resolution Mesh in Dark Reign II March 18, 1999 Integrating Multi-Resolution Meshes Into Games - GDC '99 *All trademarks and brands property of their respective owners
Pandemic Studios Developing Dark Reign II and Battlezone 2 Dark Reign II Sequel to popular RTS Game Who are we? John Cooke 3D Programmer Dark Reign II Rick Glenn Art Director Dark Reign II Integrating Multi-Resolution Meshes Into Games - GDC '99
Dark Reign II Design Philosophy • Stay Traditional Real Time Strategy • Base Building, Resource Management, Big Battles Integrating Multi-Resolution Meshes Into Games - GDC '99
Dark Reign II Design Philosophy • True 3D • Player controlled camera • True Scale • Night/Day • Physics • Infantry based • Detailed units and animations • ‘Fifa’-style Integrating Multi-Resolution Meshes Into Games - GDC '99
The Problem RTS means lots of units RTS means large views Detailed infantry means tons of polys Pentium 550 with Voodoo 3 minimum Integrating Multi-Resolution Meshes Into Games - GDC '99
Searching for a solution • Static LOD • The way we’ve always done it • Tessellation • Messiah • Multi-Resolution Mesh (MRM) • IAL’s latest 3D Software Technology Integrating Multi-Resolution Meshes Into Games - GDC '99
What is MRM • MRM allows SMOOTH real time polygon reduction of meshes. Integrating Multi-Resolution Meshes Into Games - GDC '99
Why use MRM? • Scalability • real time frame rate control via polygon reduction. • Visual quality • increase foreground detail by reducing background. • better in game engine cut scenes. Integrating Multi-Resolution Meshes Into Games - GDC '99
Why use MRM? • Flexibility • author only once for each unit • tweak unit counts • generate static LODs • MultiRes* Software Toolkit consists of: • MRMGEN.dll: integrate into authoring tool. • MRM plug in for MAX: generates MRM files. • MRM Data from an export file Integrating Multi-Resolution Meshes Into Games - GDC '99
Integration into Code • MRM runtime is very simple. • No run time tesselation or data generation of any kind. All mesh data is pre-allocated. • Data describes how faces should re-index their vertex data to display a mesh at various resolutions. • Easy to integrate with any graphics engine’s mesh data format. Integrating Multi-Resolution Meshes Into Games - GDC '99
Integration into Code • MRMGEN does a lot of complex decision making to generate the runtime data • Integration programmer doesn't need to know how it works. • It uses only the meshes original data, determining the least important vertex at each resolution level. • It attempts to keep texture and normal distortions to a minimum for as long as possible. Integrating Multi-Resolution Meshes Into Games - GDC '99
Integration into Code • Works best with a continuous skin, but not absolutely necessary. • MRMGEN doesn’t accept data from multiple meshes. • MultiRes Modifier plugin generates MRM files directly from Max. • MultiRes Software Toolkit provides code for loading and saving MRM data. Integrating Multi-Resolution Meshes Into Games - GDC '99
Tool Integration • Write a simple mesh viewer application with your graphics library for development. • Integrate the MRMGEN.dll directly into the tool and generate custom file format including MRM data. • Provides artists a quick and easy way to see their assets in the game. Integrating Multi-Resolution Meshes Into Games - GDC '99
Data structures • Integration is easier for continuous-skin mesh data structures • Continuous-skin, envelope animated models are typical for most current games • Only requirement is vertex and face data must exist in contiguous arrays • Meshes have separate arrays of vertex positions, normals, texture coordinates, and faces • Each face has 3 sets of indexes; 1 each for vertex position, normal, and texture uv • Could use other formats i.e. 1-to-1 mapping for vertex, normal, and uv • IMESH accepts custom data records and keeps track of them for you. Integrating Multi-Resolution Meshes Into Games - GDC '99
Data structures • MRMGEN generates MRM update records and optimizes the mesh • One Vertex Update Record for each vertex in the mesh. • Each contains a number of faces to increase/decrease and a collection of Face Update Records. • One Face Update for each face vertex attribute to change: position, normal, uv. Integrating Multi-Resolution Meshes Into Games - GDC '99
Data Structures typedef struct MRMUpdatesTag { unsigned long maxNumVertices; unsigned long maxNumFaces; unsigned long maxNumNormals; unsigned long maxNumTexCoords; VertexUpdate * vertexUpdates; // one for each vertex in the mesh } MRMUpdates; Integrating Multi-Resolution Meshes Into Games - GDC '99
Data Structures typedef struct VertexUpdateTag { unsigned long vertexIndex; unsigned long parentVertexIndex; unsigned long numNewFaces; unsigned long numNewNormals; unsigned long numNewTexCoords; unsigned long numFaceUpdates; FaceUpdate * faceUpdates; // typically 2 } VertexUpdate; Integrating Multi-Resolution Meshes Into Games - GDC '99
Data Structures typedef struct FaceUpdateTag { unsigned long faceIndex; AttribToken attrib; // Vertex, Normal, or TexCoord Unsigned long value[2]; // New attrib index; Increasing or Decreasing } FaceUpdate; Integrating Multi-Resolution Meshes Into Games - GDC '99
Data structures • Resolution change is achieved by traversing the update records. • Only records for the vertices being removed or added are looped • Vertex data is sorted by decreasing order of importance so LOD changes are minimal hit on the cache. • Important as mesh polygon count increase • MRM data is typically about the same size as the mesh data itself. Integrating Multi-Resolution Meshes Into Games - GDC '99
Runtime • Distance from the camera is a good primary polygon reduction metric • Since detail is wasted in the background, get rid of it. • Increase your polygon budget for the foreground, or for more units, effects, etc. • Frame rate is another great metric • Extra reduction for when frame rate drops below threshold. Integrating Multi-Resolution Meshes Into Games - GDC '99
3DSMax* vs. Softimage* • Digimation MultiRes tools for 3DS Max. • 3DS plug-in lets artists hand tweak MRM parameters and see the results in real-time. • Dialogs for: • Vertex Merging Threshold: merge vertices of distinct groups; MRMGEN optimizes mesh. • Maintain Base Vertices: maintains vertices selected when MRMGEN is invoked. • Boundary Metric: keep materials distinct at the expense of reduction. • Multiple Normals per Vertex with Crease Angle specification. • Gives programmers an instant game friendly format and code toolkit. Integrating Multi-Resolution Meshes Into Games - GDC '99
3DSMax vs. Softimage • For Softimage you need to write your own plug-in or custom tool. • Dark Reign II uses a custom tool along with some versatile tricks • Frog Pose Integrating Multi-Resolution Meshes Into Games - GDC '99
Production Application • MRM allows for better art • MRM saves time • More Time = More Art • MRM gives peace of mind Integrating Multi-Resolution Meshes Into Games - GDC '99
Concept • Shoot for a higher ideal • Can think about the high end • Less low end issues than with Static LOD’s Integrating Multi-Resolution Meshes Into Games - GDC '99
Author Once • One Time Authorship of Assets • One High poly rather than several Low poly • Animate one model • Don’t have to deal with transfer of animations Integrating Multi-Resolution Meshes Into Games - GDC '99
Dark Reign II Unit created at 800 polys Time to create unit = 1 Day Integrating Multi-Resolution Meshes Into Games - GDC '99
Interstate ‘76 Car at 300 Polys Time to create car = 1 Day Integrating Multi-Resolution Meshes Into Games - GDC '99
Static LOD’s then created at 200, 100, and 75 polys Time to create static LOD’s= 1 Day Integrating Multi-Resolution Meshes Into Games - GDC '99
Dark Reign II assets MRM’d to 800, 500, 300 polys Time to create Continuous LOD’s = 0 days Integrating Multi-Resolution Meshes Into Games - GDC '99
Art team can create two MRM’d assets in time it takes to create one asset using static LOD’s Integrating Multi-Resolution Meshes Into Games - GDC '99
How does number of polys in source model affect MRMing? 1200 poly model 800 poly model Integrating Multi-Resolution Meshes Into Games - GDC '99
Both models at 800 polys 1200 poly source 800 poly source Integrating Multi-Resolution Meshes Into Games - GDC '99
Both models at 500 polys 1200 poly source 800 poly source Integrating Multi-Resolution Meshes Into Games - GDC '99
Both models at 300 polys 1200 poly source 800 poly source Result - No penalty for Higher Source Model Integrating Multi-Resolution Meshes Into Games - GDC '99
Better Than Static LOD’s • Less production time • Able to experiment more • No popping • Easier to change an asset • Dial-In MRMing on a per asset basis Integrating Multi-Resolution Meshes Into Games - GDC '99
Better Frame Rate During Production • Code rarely optimized early on • Lack of static LOD’s early on • How many times do you run the game • Easier to experiment Integrating Multi-Resolution Meshes Into Games - GDC '99
Peace of Mind • Proven technology • Trying to project ahead to system spec is difficult 1 to 2 years before release • High visuals vs. Frame Rate • Take a lot of risk in production • It’s usually pretty late in the production when you decide to either reduce polys or optimize engine Integrating Multi-Resolution Meshes Into Games - GDC '99
Bigger Sweet Spot • Low end versus high end • Low end = 166 with Voodoo 1 • High end = 550+ with TNT2+ • How do we make a great game for all systems Integrating Multi-Resolution Meshes Into Games - GDC '99
Longer Legs • Art made higher than intended target • Game will look better as machines get faster Integrating Multi-Resolution Meshes Into Games - GDC '99
Art Considerations • Fewer texture and normal discontinuities is better for MRM • Mesh is more efficient with fewer discontinuities • Trade off between discontinuities and efficient use of texture space Integrating Multi-Resolution Meshes Into Games - GDC '99
Is MRM right for you • Why do we like MRM • easy to use • increases frame rate without degrading visual quality. • Who can use MRM • anyone writing a 3D game that displays significant perspective reduction. i.e. everybody! Integrating Multi-Resolution Meshes Into Games - GDC '99
Is MRM right for you • Things to consider when considering using MRM in your project • how else are you going to compete in the brave new world of super-scalability Integrating Multi-Resolution Meshes Into Games - GDC '99