The Ultimate 3D Art Workflow Book

Download as pdf or txt
Download as pdf or txt
You are on page 1of 9

The Ultimate

3D Art Workflow Book

Naming Conventions 2
1. General Rules & Quick Example 2
2. Upper CamelCase / PascalCase 2
3. Prefixes & Suffixes 2
4. Numbering 4
5. Folder Structure 4
6. Example 5

Hierarchy Conventions 6
1. Quick global overview 6
2. Hierarchy 6
3. Source files 7
4. FBX game files 7

Axis Conventions 8

3D Asset Delivery Checklist 9

High Priority - Game Art


www.highpriority.com
Naming Conventions
1. General Rules & Quick Example
● All names in English, using PascalCase.
● Asset type determines prefix. Only textures have a suffix.
● Use 2 digits and 1 letter for family numbering and variations.
● Use underscores to split prefix, asset name, numbering and suffix
● One folder per asset and it’s asset dependencies.

[Prefix]_[AssetName]_[Family numbering][Variation letter]_[Suffix].[Format]

[ Folder : RoofTiles_01 ]
SM_RoofTiles_01a.fbx [mesh]
T_RoofTiles_01a_C.png [color or albedo or diffuse]
T_RoofTiles_01b_C.png [variation of color map]
T_RoofTiles_01a_R.png [roughness]
T_RoofTiles_01a_M.png [metallic]
T_RoofTiles_01a_N.png [normals]
T_RoofTiles_01a_A.png [AO]
M_RoofTiles_01a [material]
M_RoofTiles_01b [same material, but uses the 01b_C texture]

2. Upper CamelCase / PascalCase


Use Pascal Case when naming assets. PascalCase is the practice of writing compound words or phrases such that
the first letter of each concatenated word is capitalized.
Good examples: Bad examples:
● BlackColor ● blackColor
● TimeUTC ● Time UTC (Note the space)
● RedCat ● Redcat
● ComputerRAMSize ● ComputerRAMsize

3. Prefixes & Suffixes

Prefixes
SM_ 3D files. Static Meshes, Weapons, Foliage, Props with just a few joints for function.
SK_ 3D files that contain humanoid or animal skeleton joint rigs
T_ Texture
M_ Material
MI_ Material Instance
MF_ Material Function

High Priority - Game Art


www.highpriority.com
MPC_ Material Parameter Collection
J_ Joints / Bones
SH_ Shader
P_ Particle System
A_ Animation (clip) / Animation Sequence
AC_ Unity Animation Controller
ABP_ Animation Blueprint
PP_ Post Process
MT_ Morph Target
S_ Sounds
SC_ Sounds Cue
BP_ Unreal Blueprint
Unity Prefabs Are named the same as the asset they house. Eg, SM_BigTree_01a
SP_ Substance Painter File
SD_ Substance Designer File

Suffixes (Textures only)


Each map type is represented with ‘one’ letter. Color is _C, Metallic is _M, Emissive is _E. If maps are
combined to create a combined mask map. We combine the letters. So _M(etallic) with _R(oughness) with
_A(mbient Occlusion) becomes _MRA.

_C Color map (diffuse or albedo)


[Optional 4th channel = Height or Transparency/Opacity]
_A Transparency / Opacity mask
_M Metallic mask
_R Roughness mask
_S Smoothness (Inverted roughness map)
_N Normal map
_O Ambient Occlusion mask
_E Emissive map
_H Height mask
_D Displacement map (Often a blurred height map re reduce artifacts)
_MRO (Combined mask) Mask map combined
[R=Metallic, G=Roughness, B=AO, 4th channel = Emissive, Height or Other]
_MODS (Unity HDRP Mask map combined
mask) [R=Metallic, G=AO, B=Detail Map, 4th channel = Smoothness]
_I Color ID masks or color channel map
_U Subsurface mask

High Priority - Game Art


www.highpriority.com
4. Numbering
T_ObjectName_01a_C

There are two parts to the numbering. The number, and the letter.

The number is for family numbering. A completely new asset but within the same family. For example:
● SM_WillowTree_01a
● SM_WillowTree_02a
These are two different tree models, but part of the same WillowTree family.

The letters are for variations of the same asset. Most commonly used for texture variations.
● M_WillowTree_01a
● M_WillowTree_01b
Both of these are for the same model. So the SM_WillowTree_01 model. But the B variation has a different
leaf and bark color. And so uses different textures and materials.

5. Folder Structure

Folder per “object”


Each “object” and its dependency files get their own folder. For example:

Content/Environments/Props/BigTree_01/…
.../SM_BigTree_01.fbx
.../T_BigTree_01_C.tga
.../T_BigTree_01_M.tga
.../T_BigTree_01_R.tga
.../T_BigTree_01_N.tga
.../M_BigTree_01.mat

High Priority - Game Art


www.highpriority.com
6. Example
Content/...
.../Characters
.../Vehicles
.../Weapons
.../Effects
.../Environments
.../ .../Terrain
.../ .../Background
.../ .../Props
.../ .../ .../BigTree_01 [ Game ready export files go here ]
.../ .../ .../ .../ [ SM_BigTree_01 ]
.../ .../ .../ .../ [ T_BigTree_01_C ]
.../ .../ .../ .../ [ T_BigTree_01_M ]
.../ .../ .../ .../ [ T_BigTree_01_R ]
.../ .../ .../ .../ [ T_BigTree_01_N ]
.../ .../ .../ .../ [ M_BigTree_01 ]
.../ .../ .../ .../Source [ Authoring source files go here. Not included in the game engine ]
.../ .../ .../ .../ .../ [ Modo, 3Ds Max, Maya, etc ]
.../ .../ .../ .../ .../ [ Zbrush ]
.../ .../ .../ .../ .../ [ Photoshop ]
.../Materials [ Global tile-able materials and their dependency files go here ]
.../ .../CobbleStone_01
.../ .../ .../ [ T_CobbleStone_01a_C ]
.../ .../ .../ [ T_CobbleStone_01a_M ]
.../ .../ .../ [ T_CobbleStone_01a_R ]
.../ .../ .../ [ T_CobbleStone_01a_N ]
.../ .../ .../ [ T_CobbleStone_01a_D ]
.../ .../ .../ [ M_CobbleStone_01a ]
.../ .../ .../ .../Source [ Authoring source files go here. Not included in the game engine ]
.../ .../ .../ .../ .../ [ Modo, 3Ds Max, Maya, etc ]
.../ .../ .../ .../ .../ [ Zbrush ]
.../ .../ .../ .../ .../ [ Photoshop ]
.../Shaders
.../Scenes or Maps
.../Sound
.../UI
.../Gameplay
.../Volumes

High Priority - Game Art


www.highpriority.com
Hierarchy Conventions
1. Quick global overview
The image below (high-res link) shows a quick overview of how the hierarchy should be depending on if the
object is animated or not, and how it is animated (pivot animation vs joint animation). Note: For correct
understanding please review the rest of the document.

2. Hierarchy
For rigged characters or objects, we use the following hierarchy >

The first entity is the Root group/locator object.


● Has the name of the object using correct naming conventions, in this case SK_Rat_01
● Is always on 0.0.0 within world space
● Should never have any keys or animation data

The second entities are group objects for the meshes, joints and controllers.
● ControlGroup contains the controllers that are used to animate the character. Usually the followup
entity is the Master controller. (Depending on project needs, this is not always used)
● JointGroup contains the entire joint hierarchy. Usually the followup entity is the J_Root_01 joint,
which is usually also located at 0.0.0.
● MeshGroup contains all mesh and blendshape objects.
● All three of these groups are always on 0.0.0
● All three of these groups should never have any keys or animation data.

High Priority - Game Art


www.highpriority.com
3. Source files
Source files should have a setup as follows, might slightly differ per authoring tool.
The master source file, containing:
● The full hierarchy with:
a) The MeshGroup with Meshes & Blendshapes.
b) The JointGroup with the full Skeleton.
c) The ControlGroup with controllers, constraints and everything else needed to complete the
rig. This ControlGroup is NOT exported into the FBX game files.
● Should NOT be animated and so should NOT contain key frames (except for controller/rig setup).
● The character and it’s rig should be clean with correct naming, pivots, locations and pose.

The animation source file(s), containing:


● A reference to the Master File (Everything in the Master File is now also in this animation file)
● The animations and keyframes, stored in either two ways:
a) All animation in one file, with tracks/clips per animation.
b) Or, a separate source file per animation.
● Each animation should be clean with correct naming.

4. FBX game files


There are two ways to create and export the FBX game files. Depending on if you created one source file
for all animations, or a separate source file for each unique animation.
1) One animation file, and so one FBX file.
The Master FBX, exported from the single Animation Source File, Containing:
● The full hierarchy with:
a) The MeshGroup.
b) The JointGroup.
c) But NOT(!) the ControlGroup.
● Should NOT contain controllers, constraints or other data that game engines cannot use.
● All animations, each one in it’s own unique track/clip, with each track correctly named.

High Priority - Game Art


www.highpriority.com
2) Separate animation files, and so multiple FBX files
The Master FBX, exported from the Master Source File, containing:
● The full hierarchy with:
a) The MeshGroup.
b) The JointGroup.
c) But NOT(!) the ControlGroup.
● Should NOT contain controllers, constraints or other data that game engines cannot use.
● Should NOT be animated and so should NOT contain key frames.
● The character and it’s rig should be clean with correct naming, pivots, locations and pose.

The animation file(s), containing:


● The full hierarchy with:
a) The MeshGroup. (Technically should not be needed, but is needed in Unity)
b) The JointGroup.
c) But NOT(!) the ControlGroup.
● The animations and keyframes for it’s specific animation.
● Each animation should be clean with correct naming.

Axis Conventions
Unity Software
X+ = Left / Horizontal / Side ● Unity = Y-Up
Y+ = Up / Vertical ● Unreal = Z-Up
Z+ = Forward / Front / Deepness ● Maya = Y-Up by default
● 3DS Max = Z-Up by default
Unreal ● Blender = Z up
[NOTE: For scenes and world space. Y = Front, X is ● Softimage = Y up
Side. Yes, it’s inconsistent] ● C4D = Y up
X+ = Forward / Front / Deepness ● Lightwave = Y up
Y+ = Right / Horizontal / Side ● Most CAD software = Z up
Z+ = Up / Vertical ● Modo = Y up.

High Priority - Game Art


www.highpriority.com
3D Asset Delivery Checklist
1) Is the mesh clean?
Check for: Clean topology, Double vertices, Broken edges, Inverted faces, etc.

2) Is the pivot, mesh location and orientation correct?


Often this should be at 0.0.0, bottom center of an object, facing towards Z+.

3) Are the Transform, Rotate & Scale values correct?


Reset your transform values. Don’t freeze them so the values read 0, but they are actually not.

4) Is the scale correct?


Check scene and object scale. Confirm correct exporting scale.

5) Is the normal smoothing correct?


Especially important when baking normal maps. Use Weighted Vertex Normals.
Changes afterwards will break your normal maps.

6) Are the UV channels correct?


Check and clean up the UV channel list.

7) Are the materials correctly assigned?


Check the material list, material assignment and material names.

8) Is the naming correct?


a) Meshes: SM_ / SK_ObjectName_01a
b) Materials: M_MaterialName_01a
c) Joints: J_BoneName_01a
d) Animations: A_AnimationName_01a
e) Textures: T_TextureName_01a_C, _M, _R, _N

9) Is the hierarchy correct?


Correct root groups, skeleton hierarchy, rigging, etc. A common example:

10) Are the animations correct?


Check for: Correct FPS (30), No animations on root object, Correct curves, Correct looping.

11) Correct timeline frame length and/or animation tracks?


Check for: Correct track/clip amount and naming, Correct time line length per track/clip.

12) Check correct export settings


Check for: What to export, Export unit scale, Format version, Animations & bake/sample rate.

13) Re-import your model to see if it exported correctly

High Priority - Game Art


www.highpriority.com

You might also like