Title: MultiResolution Mesh in Dark Reign II
1Multi-Resolution Mesh in Dark Reign II
March 18, 1999
All trademarks and brands property of their
respective owners
2Who are we?
- Pandemic Studios
- Developing Dark Reign II and Battlezone 2
- Dark Reign II
- Sequel to popular RTS Game
John Cooke 3D Programmer Dark Reign II
Rick Glenn Art Director Dark Reign II
3Dark Reign II Design Philosophy
- Stay Traditional Real Time Strategy
- Base Building, Resource Management, Big Battles
4Dark Reign II Design Philosophy
- True 3D
- Player controlled camera
- True Scale
- Night/Day
- Physics
- Infantry based
- Detailed units and animations
- Fifa-style
5(No Transcript)
6The Problem
RTS means lots of units RTS means large
views Detailed infantry means tons of
polys Pentium 550 with Voodoo 3 minimum
7Searching for a solution
- Static LOD
- The way weve always done it
- Tessellation
- Messiah
- Multi-Resolution Mesh (MRM)
- IALs latest 3D Software Technology
8What is MRM
- MRM allows SMOOTH real time polygon reduction of
meshes.
9Why 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.
10Why 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
11Integration 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 engines mesh
data format.
12Integration 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.
13Integration into Code
- Works best with a continuous skin, but not
absolutely necessary. - MRMGEN doesnt 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.
14Tool 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.
15Data 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.
16Data 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.
17Data 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
18Data 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
19Data Structures
- typedef struct FaceUpdateTag
-
- unsigned long faceIndex
- AttribToken attrib // Vertex, Normal, or
TexCoord - Unsigned long value2 // New attrib index
Increasing or Decreasing - FaceUpdate
20Data 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.
21(No Transcript)
22Runtime
- 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.
233DSMax 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.
243DSMax 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
25Production Application
- MRM allows for better art
- MRM saves time
- More Time More Art
- MRM gives peace of mind
26Concept
- Shoot for a higher ideal
- Can think about the high end
- Less low end issues than with Static LODs
27Author Once
- One Time Authorship of Assets
- One High poly rather than several Low poly
- Animate one model
- Dont have to deal with transfer of animations
28Dark Reign II Unit created at 800 polys
Time to create unit 1 Day
29Interstate 76 Car at 300 Polys
Time to create car 1 Day
30Static LODs then created at 200, 100, and 75
polys
Time to create static LODs 1 Day
31Dark Reign II assets MRMd to 800, 500, 300 polys
Time to create Continuous LODs 0 days
32Art team can create two MRMd assets in time it
takes to create one asset using static LODs
33How does number of polys in source model affect
MRMing?
1200 poly model
800 poly model
34Both models at 800 polys
1200 poly source
800 poly source
35Both models at 500 polys
1200 poly source
800 poly source
36Both models at 300 polys
1200 poly source
800 poly source
Result - No penalty for Higher Source Model
37Better Than Static LODs
- Less production time
- Able to experiment more
- No popping
- Easier to change an asset
- Dial-In MRMing on a per asset basis
38Better Frame Rate During Production
- Code rarely optimized early on
- Lack of static LODs early on
- How many times do you run the game
- Easier to experiment
39Peace 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
- Its usually pretty late in the production when
you decide to either reduce polys or optimize
engine
40Bigger 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
41Longer Legs
- Art made higher than intended target
- Game will look better as machines get faster
42Art 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
43Is 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!
44Is 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