Game Making & Editing FAQ/Q&A

Below are answers to common questions and problems, or Frequently Asked Questions, that often go unanswered that User Generated Content creators or game developers need answering that haven't been elsewhere. For a full list click here »

Converting Normal maps to Bump maps

July 17, 2015, 04:18:21 AM by kat
Problem
Typically Normal maps are converted into Bump or Height maps by simply opening the Normal map in an image editor and using some form of image desaturatation, either a filter or some other image process that swaps Normalised RGB colours for grey-scale values. This an incorrect approach to take because the variable colours present in normal maps do not represent the same light=height, dark=depth approach to creating the illusion of a three-dimensional surface. In other words, Normalised RGB colours and grey-scale tones are not interchangeable, they each represent completely different types of image data.


Shown above a Normal map (left) has undergone a simple image desaturation process to 'convert' the image to a series of grey-scale tones (right). This causes issues however because the filter interprets lighter normalised colours, the pale blues and greens[1], as light-grey tones, which are in turn treated as 'height' elements of the resulting bumpmap (vice versa for darker colours[2])

Solution
The Correct way to convert a Normal map into a grey-scale height or Bump map is to open the Normal into a proper Normal map processing application like nJob, or an image editor with a Normal map filter that can invert-process normal maps, and selecting the appropriate option to convert or reprocess 'Normal to Height' (in the case of nJob) or 'Normal to Bump'. This will desaturate the Normal map by correctly reinterpreting the three-dimensional structure represented by the Normalised RGB colours as simple Z-axis 'height' and 'depth' values.


On the left is the original 'template' used to generate the normal map. On the right is the result of reprocessing the actual Normal map in nJob. Although there are minor differences between the two, they are far less significant than those resulting from simple desaturation. In-game especially, the difference is noticeable

Additional Resources
- Bake Normal maps from meshes using Cycles
- Bake Normals using Blender Internal
- How NOT to make Normal maps
- Make Normal maps from Images

Why model in Quads and not Triangles

July 14, 2015, 12:27:59 AM by kat
Mesh Structure and Quads
Generally speaking there are a number of reasons why preference is given to modelling using quadratic faces ("quads") instead of, or rather than, triangles ("tris"). From a production point of view, i.e. making the content used in games, quadratic faces greatly aid the editing process because they allow certain functions to freely flow around the object. The reason for this has to do with the way mesh structures are generated as a lattice, a collection of vertex points connected by edges that define a space, which is then filled with a face. This lattice is 'formal', it follows a set pattern to aid speedy analysis when traced whilst minimising the amount of backtracking that might be necessary to catch missed edges, slowing down the process. In other words edge orientation flows in a particular direction (usually bottom-left to top-right) to ensure a given structure is rendered as quickly as possible regardless of individual faces being 'quads' or 'tris'.

A 'Quad' and 'Tris' represented by the same underlying lattice

Quads and Striping
The effect this mesh lattice has and the way it's processed, a procedure called "Striping", also affects the way certain structures appear, and is one of the reasons why meshes are broken down into triangles before export for game use. Shown below for example is what this means. If a four sided cone is needed, because the triangle strips orientate by default from bottom-left to top-right, the bottom-left and top-right quads have a virtual edge that travels up the longest diagonal (corner-to-centre) making the face appear convex (it has a hump) when it should properly be concave - which requires the edge to travel along the shortest diagonal (edge-to-edge). Wanting a cone would necessitates the two quads in question being broken down into triangles and the longest diagonal edges being turned against the natural flow of the triangle strip (select the diagonal edge after splitting the face, "Ctrl+F Rotate Edge CW") to create a concave surface from the two triangles. Exported for game use the default orientation of the triangle strip often means edges are flipped the wrong way relative to what the artist intended so manual turning is often necessary.

Quote
Design note: for editing purposes, a quad can be broken down into triangles, the diagonal edge turned, with the two faces joined back together (select, "Alt+J") to form a quad with a more appropriate edge orientation that doesn't affect the ability of the face to be cut and manipulated as normal.

How lattice structure affects the surfaces
Lattice structure makes some surface 'convex' others 'concave' by default

Quads and Mesh Editing
From an editing point of view the difference between 'quads' and 'tris' is important insomuch as they make the editing process easier or more difficult when performing certain basic functions like cutting, splitting or dividing surfaces. When cutting a face the application needs a way to determined whether that face can be cut, and if the cut can propagate across other faces. For quads cuts can be made from edge to edge around an object until the action forms a closed loop, a "loop cut", this can be done because each quadratic surface is an 'open' structure, cuts can be made from one side to the other and continue on to neighboring faces because the can cross shared border edges.

When quads are converted or split (select face, "Ctrl+T") into triangles however, the edge they share corner to corner, essentially blocks progress of the cut because it forces it to effectively terminate at a corner vertex instead of continuing across another edge - doing so would basically mean placing a mesh division at a tangent to an edge instead of essentially being perpendicular to it; for actions such as loop cutting the math involved in doing the former is more complex than for the latter. In other words where a triangle exists as part of a loop of faces, a loop-cut place around an object will always terminate at the corner vertex of a triangle.

Quote
Design note: this behavior is most noticeable when manually sub-dividing the diagonal line shared between two triangles (that would otherwise constitute a quad), although it divides, creating a new vertex and two new nGon quadratic faces (nGons are irregualar shaped quads in that they have four edges that don't mark a traditional 'quad' shape), the action does not propagate beyond those initial consequence. If the new faces are then broken into triangles, the new edges would fan out to the original corner vertices indicating the structures inability to allow automatic propagation of the cut.

How triangle edges affect mesh cuts

[Blender] opening 3DS Max *.max files (max2blend)

July 12, 2015, 04:19:04 AM by kat
Biped posed in Max

Problem
Game development often means multiple people working on the same files using different applications. This presents an issue when others need to edit a file they don't have the software to do, 3DS Max and their proprietary *.max format being a typical case in point; how can *.max files be opened in Blender.

Unfortunately they can't because the *.max format is proprietary to 3DS Max, only that application can open the file. Also of issue would be the fact that Max's native format is essentially a working format, its file-dump much like Blenders *.blend - everything in an active Scene is dumped into the file when its saved so it contains a lot of destructive UI and other application specific functionality records (modifier stack info etc.) that have no meaning outside the application. Because of this its unlikely there will ever be an official max2blend import/export script.

Solution
With that said however, it is possible to open content made with 3DS Max in Blender by exporting it to a suitable format Blender understands; *.obj or *.ase specifically for mesh data for example; *.fbx, *.dae or even *.md5 for animated elements (rigs and sequences). Although for Gmax, which is essentially Max v4 stripped of 'pro' features, the following provides some instruction on exporting content from Max for use in other applications.

[Windows] Start Menu folder location

July 12, 2015, 02:21:06 AM by kat
The location of the "Start Menu" folder in Windows moves from version to version. It's essentially a protected 'User' location hidden from general access, the contents of which are generated based on the users actions (what software or applications are loaded and need to start when Windows loads).

To edit its contents the folder itself needs to be unhidden and unprotected. To do that open up Windows Explorer ("Start Accessories Windows Explorer") and do the following;
  • With Windows Explorer open, click "Tools" then on "Folder Options..." ("Tools Folder Options...").
  • In the pop-up window that appears, click "View" to display the 'view options' for folders in Windows.
  • Mid-way down the page is the "Advanced settings:" windowed area - it lists a series of options accompanied with check-boxes - find "Hide protected operating system files (Recommended)" and click the check box to deactivate that options - clears the checkbox.
  • A "Warning" will appear. Click "Yes" to agree to turning OFF this feature.
Hidden files will then be visible and available for editing. Once done adjusting the Start Menu follow the same procedure but click the "Hide...." checkbox to reactivate the option, hiding system files again.

Start Folder location
The Start Folder is usually located in the "User" directory of the "C:\" drive where the operating systems is installed, typically;

Quote
C:\Users\

This would generally means the Start Folder being in the following location;

Quote
[user name] AppData Roaming Microsoft Windows Start Menu

Or using the actual file path as;

Quote
C:\Users\[user name]\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Start Menu\

Note that editing Start Menu item directly by accessing the folder in Windows Explorer may cause issues with the system Registry which keeps track of where everything it located or the functionality of features.

Resources
For help finding Blenders "Scripts" folder click here.

[Blender] cleaning Orphan Data from *.blend files

July 12, 2015, 12:29:21 AM by kat
Problem
Over time and much editing, updating and deleting, *.blend files get filled with a lot of data that cannot be removed through normal means. This "Orphan Data" as it's called can eventually cause problems that can corrupt files if not taken care of.

Orphaned data happens because of the way Blender works, the application basically creates a central repository or library of actionable data, essentially block of instructions, that can be used in one way or another within Blender. In order for these "dataBlocks" to be used however, a "link" must be created between them and the instance representing them in a Scene - normally if a link doesn't exist the data tends to remove itself when the file is saved and reloaded (because the data no longer has a "User"). However, this linking functionality, after protracted editing sessions, might become corrupt leaving the datablock isolated and unused but still present in the file as if its not. It becomes 'orphaned' and often hidden from use as a result.

Being saved with the *.blend file, orphaned data is also persistent and carries over to newer versions of Blender when older files are opened. In addition to this true Orphaned data is rarely removed when *.blend files are re-saved and re-loaded, which is normally how its removed.

Solution
To fix Orphaned data a new *.blend file needs to be created to which data from the corrupt file will be imported using the "Append" feature - doing this instead of opening the old file directly loads in 'active' data only, i.e. data being used in the Scene or with active link of some kind (it has a "User").

To "Append" first create a new file, "File New" (restarting Blender beforehand to clear memory), then from the "File" menu again click "Append" ("File Append"). The "File Browse" window will appear. Here browse to the file that data is to be appended from and left-click it; this drills-down exposing the files contents and the data 'types'available - "Action", "Armature", "Image" and so on. Left-click a data type to further expose the sub-types associated contents and then (shift+)left-click (multi)select the items needed - only those available will be listed, which is why appending is used to fix the problem, Orphaned data isn't shown. Once done click the "Append from Library" button top-right to bring in the selection(s). Save the file once loaded into the Scene.

Quote
Design note: for older versions of Blender, 2.49 and below in particular, the "Append" button in the File Browser" Header must be active (clicked) otherwise selections are linked and not appended, i.e. they remain outside the new file and are referenced as an external resource.
KatsBits Web
Search KatsBits using StartPage
  • Visit KatsBits Store today
  • Blender Art Magazine
^