Hi All
I'm trying to do up a checklist for quality assurance on realtime models. Does anyone else / your company use such a thing?
The models are pretty basic - one object, unwrapped with one texture (diffuse/opacity combined) - created in 3ds Max. This is the list i've come up with:
o Model Integrity (using STL Check)
o Normal directions
o Welded vertices
o All one model
o Smoothing Groups
o Triangle orientation (no long edges)
o Texture resolution
o Texel density
o Unwrap quality (packing)
o UV padding
o Model naming conventions
o Material application
o Material naming conventions (and sub-materials)
o Bitmap naming conventions
Is there any others that you can think of? My aim is to have a comprehensive checklist to give to a model checker that can run through the list and verify the quality.
Thanks!
Replies
Thanks ZacD, added to my list.
Scale check
Bake quality / normalmap seam check
Rig construction and functionality (if applicable)
Skinning (if applicable)
Export check
Check in engine
Usually the cause of some very obvious brokenness when imported
Lay out the UI buttons on the tool in the same order as the checklist.
Few more:
- Ensure you're not using duplicate or extraneous textures, and all textures are assigned to the correct path (aka not your desktop): (Shift+T)
- Ensure your skinning has assigned the proper bone affect limit (usually 4 for most games I've worked on, not the default '20' assigned by max).
- Ensure you have the correct number of UV channels. (Channel Info)
Depending on the render engine you use:
- Sorting order for alpha transparencies.
I've found reset Xform not to be universally reliable. What I do is just create a box snapped to 0,0,0, attach the model to it as an element and delete the the box. This does the same thing you're suggesting.
How would you manage that? I know UDK allows you to manually manage sorting planes if you wish, but most engines rely on export part for this information. Does it come down to the exporter?
usually, the way i manage it is combining the alpha planes in the order you want them drawn.
If this is on an already attached/combined collection of planes, then you have to separate/detach them all, and re-attach/combine in the correct order.
Interested to hear if there is a quicker way ?
I have worked on engines where you could determine the sort order using a variable on the shader/material in 3dsmax. It required a custom shader that worked with the exporter.
Box tricking. thats what we did before reset xforms
I think this is still sort of manual sorting is a remnant of forward rendering. Most of the newer engines are switching to deferred which I believe uses other sorting methods like Alpha Safe, or Dithering the alpha test.
(which is generally what I believe is done in UDK).
And Jonny, I believe that's the out-of-the-box solution for Max. I've worked with internal tools that dealt with it differently.
Here's the copy and pasted list (got the info from here, http://support.turbosquid.com/entries/20203606?locale=1 :
2. Standards for 3D Model Inspection
2.1 Geometry
2.1.1 No isolated vertices
2.1.2 No coincident vertices
2.1.3 No coincident/coplanar faces
2.1.4 Face normals point outward - By "outward" we mean the appropriate direction for correct rendering, with no normals incorrectly flipped.
2.1.5 No empty objects - All objects should have geometry or splines or be null/control helpers. No "empty objects" that have names but nothing else permitted.
2.2 Topology
2.2.1 Quads and triangles only
2.2.2 Mostly quads - The model must use quads as much as possible. A range of 10%-20% tris is sensible for most models, but some will call for a higher percentage to form sensible topology. Models are inspected manually to ensure a sensible quad/tri ratio is maintained.
2.3 Real-World Scale
2.3.1 Real-world scale within 1-3% - Model can use any units to achieve real-world scale. If the model does not have an exact real-world counterpart (such as a human character or an unbranded car), the model must use the size/scale of comparable objects in real life.
2.3.2 Exception for exceedingly large/small models - Models of objects that have a real-world scale at a microscopic or astronomical level, such as amoebas and solar systems, are excepted from having real-world scale.
2.3.3 Units used in the file should be included in the description.
2.4 Position and Orientation - See Centering and Freezing Transforms for more info
2.4.1 Base of model at or near 0,0,0 origin
2.4.2 Entire model sits on or just above ground plane
2.4.3 Oriented to World up-axis - The obvious "up" side of the model must be pointing toward the World up axis. In other words, the model can't be lying on its side or upside-down when the file is opened.
2.5 Transforms - See Centering and Freezing Transforms for more info
2.5.1 Position and rotation transforms frozen/reset - Exception: This requirement does not apply to 3ds Max.
2.5.2 3ds Max Requirement: All objects at 100% scale at object level
2.6 Naming and Organization
2.6.1 Descriptive and unique object names - Default object names are not acceptable. For character rigs, a prefix or suffix must be added to bone names.
2.6.2 Model file includes only the 3D model being sold - No extraneous helpers, shapes, splines, or other unexpected objects not specifically needed for model functionality
2.6.3 Includes a grouping or hierarchy for moving all objects in model together
2.7 Textures and Materials
2.7.1 At least one material must be applied to the model to represent real-world object surfaces. While not every object must have a material or texture, the customer should be able to render the model upon purchase and get quality surface representation.
2.7.2 Textures applied where appropriate
2.7.3 Texture files and nodes named descriptively - Texture filenames Image, Pic, or Picture plus a number are not acceptable.
2.7.4 Materials named descriptively
2.7.5 No texture paths referenced by model. Any texture paths must be stripped from model. See Texture References.
2.8 UVs - A model with mapped textures must meet these requirements:
2.8.1 No obvious texture stretching on model
2.8.2 Seams hidden in less visible areas of model
2.8.3 People and animals must have unwrapped UVs - This standard does not apply to larger scenes where the character or animal is not the focal point.
2.9 Rigging
2.9.1 Transforms must be frozen/reset unless model is animated
2.9.2 Hierarchy objects must be uniquely and appropriately named
2.9.3 Rig must function as expected - Rig must perform simple deformations
2.9.4 Custom rig must include instructions - A Readme, PDF document, or other documentation on how to use the rig. Rigs that use Biped or CAT are not required to have a readme unless there are custom controls.
In UDK u can do some manual draw sorting, but I find it a real ballache for anything more than very minor fixes.
-No unnecessary materials.
-No unnecesary layers.
-No geometry nodes that doesn't exist (if you look in the outliner after a long modeling session you'll see what I mean.)
-everything is named in a organized fashion (meshs and materials)
And I'll run an "optimize scene size" to top it all off.
Thanks a lot people!
Got a source for "alpha safe"? I can't find any reference to it being used in a 3D realtime context, nor a definition beyond some technique used on 2D brushes.
Dithering the alpha test (stipple, or screen door) is indeed a great workaround.
It's not a forward rendering thing in particular, and stippling is indeed the best way of doing alpha in that there's no sorting problems; it interacts with depth sorting properly. However, you need both good screen resolution and good AA to make it look good. I heard some games on the XBox were using it, because TVs of the time were so blurry it looked really good. Changing the stipple pattern frame by frame also makes the pattern less obvious as TVs tend to blur the result themselves. (lots of slow TVs out there)
The main reason a lot of deferred games moved to stippled alpha is that the only alternative is drawing all blended triangles in a non-deferred post pass afterwards. (whether forward or unlit - lots of deferred renderers I've seen cannot draw lit blended surfaces) Certainly can't populate the G-buffers with blended positions
I loved doing graphics programming, it's a shame the market for graphics programmers disappeared overnight.
http://www.turbosquid.com/CheckMateTools/
Quite a handy little tool. Thanks for the heads up!
You're a legend Zepic! Cheers!