3D Model Glossary
This page contains a list of (many) concepts related to 3D models (and computing).
Representation of 3D objects
GPU's main job is to process vertices. They are very good at it. It is possible to store and render 3d graphics using other methods than the ones described here, like voxels. But modern GPUs are only good for rendering 3d graphics from the data we described here and most games need the GPU to run, as CPU is too slow for rendering 3d graphics in realtime, both polygonal or voxel based. What this means is 99.9 % of games you encounter will use the methods we describe in this document.
Vertex
The building block of 3d data is the vertex. A vertex is a point in 3d space. So a vertex needs 3 values: x, y and z position. The position values are usually represented as 4 byte floats, though not always.
Face (Triangle, Tristrip, etc.)
Two vertices (“vertices” is the plural for “vertex”) can connect and form a line.
Three vertices can connect and form a triangle. Although more vertices can connect and form more complex polygons like quads (4 vertices), triangles are the most common. In fact, the GPU needs to break more complex polygons down to triangles before processing them, so 3d formats are likely to always use triangles. But how are triangles stored in files? Three vertices (3*3 position values) are enough to create a triangle. But this is not how triangles are always generated from the vertex data in the 3d files. Triangles can also be represented as what is called a “tristrip”, or triangle strip. In a triangle strip, the first three vertices form a triangle, then every new vertex creates a new triangle by connecting with the previous two. Tristrips are performance optimization for some GPUs.
There are other ways to connect vertices, like linestrips or trifans (short for “triangle fan”, each new vertex after the 1st one creates a new triangle, by connecting with the previous and the very 1st vertex). However these are less common.
Some 3d formats will use what is called an “index buffer” (index list), together with the “vertex buffer” (vertex list). Index buffer is basically a list of (usually integer) numbers which tells which vertices connect with each other by their index in the vertex buffer.
Vertex and Index Buffer
Vertex buffer is just a list of vertex datas. The vertex buffer can be interleaved or non-interleaved. Interleaved means each vertex data in the buffer contains vertex positions, normals, colors, uv maps, etc. one after another. Non-interleaved means there is a list (buffer) of positions, then buffer of vertex normals and so on.
As explained above, index buffer is basically a list of (usually integer) numbers which tells which vertices connect with each other by their index in the vertex buffer. Index buffers are easy to spot as they are usually a list of growing integer numbers. Simple formats might not use an index buffer.
Mesh
A collection of triangles or tristrips is called a “Mesh” or “Surface”. Each file you explore will likely have more than one of these.
Vertex color
Vertex colors are color values assigned to vertices. It's not hard to imagine a colored dot in 3d space, but what happens when vertices connect and form lines or triangles? It would be practically useless to have colored dots on your mesh. Luckily, that's not how they are rendered by OpenGL or DirectX when connected. The colors of the neighboring vertices are interpolated over the surface, so you get a nice gradient. This makes vertex colors very useful for things like skydomes because they take up far less memory than gradient textures. Vertex colors are also used on map models to simulate shadows. Some old games use vertex colors on characters instead of textures (usually only the face of the character will use a texture image).
Vertex colors are usually 4 float numbers or integers. The 4 values are in RGBA order (Red, Green, Blue, Alpha), or BGRA. Alpha might not be used depending on the game. It's easy to find out if the game uses BGR(A) or RGB(A) order. If after importing the model appears too blueish or too reddish, then you probably read it in the wrong order.
Vertex normal
Vertex normals are vectors which are used to calculate lightning during rendering. If you won't read them, your 3d tool might display your meshes as completely black or white. But usually most 3d modellers will silently regenerate normals during import and editing, or at least give you an option to regenerate normals. Normals are usually stored as 3 floats (x,y,z).
Vertex UV map
UV maps are (x,y) position values which specify how a 2d texture image is “wrapped” over your 3d mesh. The game or 3d modeller treats your texture image as a grid where the bottom-left corner is the position (0.0, 0.0) and the top-right corner is the position (1.0, 1.0). Then your vertices, and therefore also the faces which they form are positioned on that grid and the GPU can easily tell what pixel to assign where on your mesh. So you can tell that your vertices have two positions: one in the 3d space, one in the 2d space of your texture grid. UV maps are usually represented as two (x,y) float numbers. Do note that although the grid has positions in the range of (0.0,1.0), the vertex positions might go beyond this range. Depending on the format, or a flag somewhere in the file, the vertex falling outside of that range will either not get any pixel assigned (black or transparent), will get assigned the closest pixel in the grid, or the UV grid will be treated as infinitely repeating (in other words, position 2.0 will be the same as 1.0 and so on).
Some games use what is called “multitexturing”, which means multiple textures are applied on top of each other like layers in Photoshop or GIMP. In such case each vertex can have a different UV map for every texture image it is assigned to. Multitexturing is often used for terrain models for texture splatting effect. Multitexturing is also present when the game uses normal maps or specular maps, though the vertex will not always use different UV maps for them.
Material
Materials specify how a Mesh is shaded, or how it appears when lit with OpenGL or DirectX lights. Usually each Mesh will have one material for it, in other games you may be given two indexes: starting face and face count/or ending face index, which will tell which faces of the Mesh are assigned which Material.
Some games might not use materials at all because they don't use realtime lightning, or they might have materials for characters, but no materials for levels, as lightning can be simulated by vertex colors or shadow textures.
Materials are pretty standard, there are usually RGBA/RGB or BGRA/BGR values for each material component. The material “components” are ambient color, diffuse color, specular color, emissive color. There is also a single integer or float for ? ... \n
Obama, CIA Arming Syrian Rebels With Missiles Following Secret Order
The Obama administration, partnered with the CIA, is engaged in arming the Syrian rebels (who openly behead Christians and innocents to raging crowds) with weapons of war following a 2012 secret order by Obama as reported in a Reuters breaking news story. It turns out that when you dig deep enough through all of the mainstream media mud, you can start to make ...
[Obama, CIA Arming Syrian Rebels With Missiles Following Secret Order]
['.GetDomainName().' - news, stories, articles]
Beach bum: Obama to holiday in Hawaii for 17 DAYS
Dave Boyer The Washington Times December 15, 2013 President Obama and his family will leave Washington Dec. 20 for a 17-day holiday vacation in Hawaii. TheWhite Houseannounced Friday that the Obamas will depart next week after what is expected to be alightwork schedule for the president in Washington. The president and his family traditionally spend theirChristmas...
[Beach bum: Obama to holiday in Hawaii for 17 DAYS ]
['.GetDomainName().' - news, stories, articles]
Bitcoin vs. Gold: The Future of Money Peter Schiff Debates Stefan Molyneux
Prison Planet.com November 27, 2013 Is bitcoin a bubble? Does gold have an intrinsic value? Is bitcoin a ponzi or pyramid scheme? Peter Schiff thinks so. Stefan Molyneux and Peter Schiff discuss Bitcoin vs. Gold and the future of money.
[Bitcoin vs. Gold: The Future of Money Peter Schiff Debates Stefan Molyneux ]
['.GetDomainName().' - news, stories, articles]
Following call with White House, lawmakers signal tepid approval for strike against Syria
SUSAN FERRECHIO Washington Examiner August 30, 2013 Congressional leaders Thursday night appeared ready to back at least a limited U.S. military strike on the Syrian government following a private telephone briefing with White House officials. Secretary of State John Kerry, Secretary of Defense Chuck Hagel and National Security Advisor Susan Rice as well as Director of ...
[Following call with White House, lawmakers signal tepid approval for strike against Syria ]
['.GetDomainName().' - news, stories, articles]
Was Paul Walker Murdered by a Drone Strike? (Debunked)
Baseless conspiracy discredits real evidence of political assassinations Paul Joseph Watson Prison Planet.com December 3, 2013 Does surveillance camera footage show a drone missile or a light pole? Theres more excitement and outrage over Paul Walkers death amongst so-called conspiracy theorists than the death of Michael Hastings, which is totally bizarre ...
[Was Paul Walker Murdered by a Drone Strike? (Debunked) ]