Skip to content
Return to Knowledge

Project structure, naming conventions, folder organization and workflows for VFX, audio, photo and visual production.

FieldVFX / Production

Drive Structure โ€‹

Real Drives โ€‹

No need to have the exact same setup, just a way I like to seperate my drives according to their usecase.

DriveFunction
C:Windows drive
D:Sync Work here
E:Sync Media here (Photo, Music, Video)

Mapped Drives โ€‹

These drives are virtual and each represents a folder within the folders that are synced from my Nas, for example: on the D Drive I have the folder "Work", synced with Synology Drive. Within that folder I have the folders "_PIPELINE", "Active" and "Archve". I mapped the P drive to the folder "_PIPELINE", and the I drive to the folder "Active".

DriveFunction
I:Active projects (Audio, Photo, Visual, VJ, Web)
M:Music
P:Pipeline, scripts and files for software (settings, add-ons)
F:Personal files

Remove a mapped drive from the command line:

bat
subst A: /d

Replace A with the drive letter you want to remove.

Startup โ€‹

Two scripts execute on startup using a single InvisibleLauncher.vbs file referenced in Windows Task Scheduler. Use .\1_StartupScript_AppsToDesktop.ps1 to run the script in D:\_work\_PIPELINE\_Script\startup manually.

1. CreateDrives โ€‹

Bat script that creates the mapped drives. In addition, VisualSubst is used to name the mapped drives.

2. AppsToDesktop โ€‹

PowerShell script that opens apps on specific virtual desktops. Place shortcuts in folders named after the corresponding desktop (e.g. Desktop1).

Uses the PSVirtualDesktop PowerShell module. Some windows need to be put in fullscreen (F11), which requires AutoHotkey to trigger the keystroke after launch.

Work Locally with NAS Mirror โ€‹

Create symbolic links from your Laragon www directory to your development folders on the NAS. This keeps your working environment organized while allowing Laragon to serve the sites.

bat
mklink /D [Link] [Target]

Audio Workflow โ€‹

Folder Structure โ€‹

MusicProduction/
โ”œโ”€โ”€ Practice/
โ”œโ”€โ”€ Ideas/
โ”œโ”€โ”€ InProgress/
โ”œโ”€โ”€ FinalTouches/
โ”œโ”€โ”€ Finished/
โ””โ”€โ”€ Publish/
DJSets/
Library/
โ””โ”€โ”€ Samples/
    โ”œโ”€โ”€ AmbiguousRoyaltySounds/
    โ””โ”€โ”€ FreeUse/

Artwork finder for album art.

MusicBee + Traktor Playlist Sync โ€‹

MusicBee: Ensure MusicBee consistently exports the M:\iTunes Music Library.xml file on close. Check under Preferences > Library > "export the library as an iTunes formatted XML file" โ€” point it to M:\iTunes Music Library.xml.

Traktor: In Preferences > File Management, set the "iTunes/Music Library" path to M:\iTunes Music Library.xml. Enable "Import Music-Folders at Startup" and add the folder(s) where your music files reside (e.g. M:\Music\).

Python sync script enables synchronization of playlists from any iTunes XML-compatible music library to any DJ software:

  • Reads an iTunes XML library file to extract tracks from user playlists
  • Copies tracks to a designated "DJ Library" folder
  • Optionally converts audio files to WAV format using FFmpeg
  • Creates a new XML file with updated file paths pointing to the DJ Library folder
  • Skips system and auto-generated playlists
  • Can skip files that already exist in the destination folder

Photo Workflow โ€‹

Folder Structure โ€‹

Year/
โ”œโ”€โ”€ 01_Incoming/
โ””โ”€โ”€ 02_Outgoing/

File Naming โ€‹

Template

YYYY-MM-DD_Location_Subject_FileVersion.Extension

Example

2020-12-19_Zele_PubLib_001.jpg

Visual Production Workflow โ€‹

Folder Structure โ€‹

YYYY-MM-DD_NameClient_NameProject/
โ”œโ”€โ”€ _Library/
โ”œโ”€โ”€ 00_Incoming/
โ”‚   โ”œโ”€โ”€ 01_Preproduction/
โ”‚   โ””โ”€โ”€ 02_Production/
โ”œโ”€โ”€ 01_Preproduction/
โ”‚   โ”œโ”€โ”€ 01_Moodboard/
โ”‚   โ””โ”€โ”€ 02_Storyboard/
โ”œโ”€โ”€ 02_Production/
โ”‚   โ”œโ”€โ”€ _Blender/
โ”‚   โ”œโ”€โ”€ _DaVinci/
โ”‚   โ”œโ”€โ”€ _Houdini/
โ”‚   โ””โ”€โ”€ Scene_01/
โ””โ”€โ”€ 03_Outgoing/
    โ””โ”€โ”€ YYYY-MM-DD/

Naming Convention โ€‹

Use CamelCase, no spaces. Underscores only for separating parts of the filename. Always make enough iterations so you can go back a version if something goes wrong.

Model Files โ€‹

Export files (FBX, OBJ) always share the same version number as the work file (Blender, Maya).

AbbreviationMeaning
CHCharacter
PProp
FFoliage

Template

Project_SceneNumber_Modeltype-ModelName_FileVersion.Extension

Example

Silver_000_CH-Nora_v001.blend

Texture Maps โ€‹

Export files (PNG, JPG) always share the same version number as work files (Substance, Photoshop).

AbbreviationMeaning
DIFFDiffuse
AOAmbient Occlusion
GGlossiness
NNormal
RRoughness
SSSSubsurface Scattering
MMetallic

Template

Project_SceneNumber_TextureName_FileVersion_TextureType.Extension

Example

Silver_010_NoraHair_v001_DIFF.PNG

Scenes โ€‹

Scene count starts from 010. Models with scene number 000 are not restricted to one scene.

Template

Project_SceneNumber-Description_FileVersion.Extension

Example

Silver_010-MudWorld_v001.blend

In 3D Software โ€‹

Max 5 letters for abbreviations.

AbbreviationMeaning
GRPGroup
MESHMesh
CRVECurve
JNTJoint
LGHTLight
CAMCamera
LOCLocator
CTRLController
LPLow Poly
HPHigh Poly
FRCEForces

Template

Type_Name_PolyType

Example

GRP_Nora_LP

Reference Library โ€‹

For reference images, use only broad categories as folders โ€” put other information in the name and metadata.

Tools used: Advanced Renamer, digiKam, Python, and TagGUI.

Workflow โ€‹

  1. Rename with Advanced Renamer
  2. Use TagGUI to generate captions into separate text files named after the image
  3. Run Python script to take information from the text files and add it to image metadata
  4. Convert all files to .jpg for clean metadata display

File Naming โ€‹

CATEGORY_SUBJECT_incrementalNr

Metadata โ€‹

A description/caption in the image's "Title" and "Subject" fields.

Sources โ€‹

Home ยท Hobi ยท Blog
Made with โค๏ธ in