In my years managing complex 3D pipelines, I've found that disciplined naming conventions are the single most effective, low-tech solution for preventing production chaos. A good system isn't about being fancy; it's about creating a predictable, searchable, and automatable structure for every asset. This guide is for artists and technical directors who want to ship projects faster with less frustration, whether you're working solo or in a large studio. I'll share the principles I live by, the templates I use daily, and how to adapt them for modern, AI-assisted workflows.
Key takeaways:
I've lost count of the hours I've wasted in production hunting for "final_final_v7_really.ma" or trying to decipher what "geo_01" refers to in a scene with 300 assets. Bad naming creates immediate, tangible costs: missed deadlines from artists waiting on assets, broken rigs and materials from incorrect references, and the mental drain of constant archaeological digs through your project folders. In one early project, a misnamed texture set caused a last-minute re-export of dozens of assets, pushing our milestone back by two days. The error was simple, but the ripple effect was massive.
What works for a single prop fails utterly for an entire game level or animated film sequence. A scalable naming system is your project's skeleton; it holds everything together as complexity grows. When you name with intent—thinking about how assets will be grouped, referenced, and processed—you enable powerful workflows. Batch operations, automated LOD generation, and seamless engine integration all rely on predictable asset names. I structure my names to answer key questions instantly: What is it? What part is it? What version is it?
My most painful lessons came from projects where naming was an afterthought. The worst was a collaborative environment project where three artists used completely different systems for the same asset types. Merging the work was a manual, error-prone nightmare. I learned that the convention must be established before a single polygon is modeled and that it needs to be documented in a place everyone can see. A "pipeline nightmare" is almost always, at its core, an information management failure.
These aren't just suggestions; they're the non-negotiable foundation of my system.
SM_Prop_DeskLamp_Wood_01 is instantly understandable. Lamp04 is not._) or hyphens (-) and stick with them. Never use spaces. I use underscores for readability.SK_ for skeleton, GRP_ for group, MAT_ for material, TEX_ for texture._v02. For finals, I use _F or a publish date.My naming evolves with the asset's maturity, preventing "blockout_geo" from accidentally making it into the final game.
BLO_Env_TownHall_Main. The BLO_ prefix flags it as temporary geometry for scale and layout.HP_Prop_MetalBarrel_01. HP_ denotes the sculpt or high-detail mesh for baking.SM_Prop_MetalBarrel_01. SM_ for "static mesh." This is the final in-engine asset.M_Prop_Metal_Barrel_Rusted. The M_ prefix, followed by type, specific asset, and description.T_Prop_MetalBarrel_01_Albedo, T_Prop_MetalBarrel_01_Normal. Consistent base name links all maps.This is the grammar of your naming language. Here’s my standard lexicon:
SK_ (Skeleton), RIG_ (Rig), ANIM_ (Animation), FX_ (Effect), COL_ (Collision Mesh)._LOD0 (Level of Detail 0), _UV1 (UV Set), _FRONT (Direction), _GRP (Parent Group)._) to separate logical blocks: [Prefix]_[Type]_[Name]_[Descriptor]_[Version]. For example, SK_Char_Hero_Soldier_F for a final skeleton.Don't overcomplicate the start. Use this simple template for props and environments:
[AssetType]_[Category]_[SpecificName]_[Variant/Version]
SM_Prop_Chair_Wooden_01, SM_Env_Wall_Stone_Broken_v02M_[SurfaceType]_[BaseName] (e.g., M_Metal_WornIron, M_Fabric_Leather).Different asset families have different needs. My systems branch accordingly:
SK_Char_Hero_Main: Root skeleton.SM_Char_Hero_Body: Main mesh.SM_Char_Hero_Helmet: Attached prop mesh.M_Char_Hero_Skin, M_Char_Hero_Armor: Associated materials.SM_Env_City_Module_Wall_4mSM_Env_City_Prop_NewspaperBoxElec_, Foliage_, Weapon_).Modern AI generation tools make strict naming more critical, not less. When I generate a base mesh in Tripo AI, the descriptive prompt I use often becomes the core of the asset name. More importantly, for the generated textures and materials to integrate cleanly, they need to follow the same convention. I might generate a SM_Creature_CrystalBeetle in Tripo, then ensure the exported textures are named T_Creature_CrystalBeetle_BaseColor, etc., so my material builder script can automatically assemble the shader. AI accelerates creation, but a solid naming pipeline ensures the results are production-ready.
Manual enforcement is unsustainable. I use simple, custom scripts (in Python or via DCC-specific tools like Maya's fileInfo) that run on file save or export. They can:
SM_ to all selected meshes).A convention only works if everyone uses it. I create a one-page "cheat sheet" PDF that's pinned in every project's Slack channel and shared drive. We run a 15-minute briefing at the start of a project to walk through it, using concrete examples from the asset list. The key is to frame it as a time-saver and bug-preventer for them, not as arbitrary rules from above.
No system is perfect from day one. I schedule a brief "pipeline check" at the end of each major project phase. We ask: What names were confusing? Did we encounter a new asset type that doesn't fit? We then update the living document. The goal is a system that evolves with your team's needs, remaining a helpful tool rather than a frustrating constraint.
moving at the speed of creativity, achieving the depths of imagination.
Text & Image to 3D models
Free Credits Monthly
High-Fidelity Detail Preservation