Table of Contents

<< Back

Structures

Drives

Real drives

Drive letter Function
C: Windows drive
D: Sync work drive here + other work related stuff
E: Sync all media here (foto, music, video)

Mapped drives

Drive letter Function
I: Active projects
M: Music
P: Files for software (settings, adons)
F: Personal files

From the command line:

subst A: /d 

Replace A with drive you want deleted

Music

Artwork finder

Folder structure

Photography

Folder structure

File structure

Template: YYYY-MM-DD_Location_Subject(abbreviated, PubLib (Public Library))_FileVersion.Extention
Example: 2020-12-19_Zele_PubLib_001.jpg

CG

Folder structure

File structure

Naming Convention

CamelCaps, geen spaties, underscores/streepjes enkel gebruiken bij opdeling filenaam.
Maak genoeg iteraties van je bestand, zodat je steeds een versie terug kan gaan, moest er iets mislopen.

Models

Export files (FBX, OBJ) hebben steeds zelfde versienummer als work file (Blender, Maya).
Afkortingen:

Template: Project_SceneNumber_Modeltype-ModelName_FileVersion.Extension
Example: Silver_000_CH-Nora_v001.blend

Texture Maps

Export files (PNG, JPG) hebben steeds zelfde versienummer als work files (Substance, Photoshop) Afkortingen:

Template: Project_SceneNumber_TextureName_FileVersion_TextureType.Extension
Example: Silver_010_NoraHair_v001_DIFF.PNG

Scenes

The count of scenes starts from 010, models with the 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 voor afkortingen
Afkortingen:

Template: Type_Name_PolyType
Example: GRP_Nora_LP

Reference Library

For my collection of reference images, I only use broad categories as folders, the other information I put in the name and metadata.

I'm using a combination of tools, including Advanced Renamer, digiKam, Python and a tool from GitHub called taggui.

Workflow

First, I will change the name with Advanced Renamer.
Using TagGUI, I will then let the program generate captions into seperate text files, wich are named after the image they are describing.
Now we need the Python script to take the information from the text file, and add it to the metadata of the images.
For clean organisation, I opted to convert all files to .jpg. This to make sure the metadata is displayed in a clean way.

The name

CATEGORY_SUBJECT_inc Nr

The metadata

A description/caption in the images “Title” and “Subject” fields.

The script
  1. import os
  2. from PIL import Image as PilImage, PngImagePlugin
  3. from pyexiv2 import Image as Pyexiv2Image
  4.  
  5. def add_text_to_image_metadata(image_folder):
  6. try:
  7. # Iterate through all files in the specified folder
  8. for filename in os.listdir(image_folder):
  9. image_path = os.path.join(image_folder, filename)
  10. text_file_path = os.path.join(image_folder, f"{os.path.splitext(filename)[0]}.txt")
  11.  
  12. print(f"Processing {image_path}") # Debugging line
  13.  
  14. if os.path.exists(text_file_path):
  15. # Read the content from the text file
  16. with open(text_file_path, 'r') as file:
  17. caption_text = file.read()
  18.  
  19. # Convert filename to lowercase for extension checking
  20. filename_lower = filename.lower()
  21.  
  22. if filename_lower.endswith(('.jpg', '.jpeg')):
  23. # Load the image's metadata
  24. image = Pyexiv2Image(image_path)
  25.  
  26. # Add the caption to the image's EXIF UserComment and ImageDescription fields
  27. image.modify_exif({'Exif.Photo.UserComment': caption_text, 'Exif.Image.ImageDescription': caption_text})
  28. elif filename_lower.endswith('.png'):
  29. # Convert the PNG image to JPEG
  30. image = PilImage.open(image_path)
  31. rgb_image = image.convert('RGB')
  32. rgb_image.save(os.path.splitext(image_path)[0] + '.jpg', 'JPEG')
  33.  
  34. # Load the image's metadata
  35. image = Pyexiv2Image(os.path.splitext(image_path)[0] + '.jpg')
  36.  
  37. # Add the caption to the image's EXIF UserComment and ImageDescription fields
  38. image.modify_exif({'Exif.Photo.UserComment': caption_text, 'Exif.Image.ImageDescription': caption_text})
  39.  
  40. # Delete the original PNG image
  41. os.remove(image_path)
  42.  
  43. # Delete the text file
  44. os.remove(text_file_path)
  45.  
  46. print("Processing completed for all images.")
  47. except Exception as e:
  48. print(f"Error: {e}")
  49.  
  50. # Example usage: Specify the folder containing your images
  51. image_folder_path = '/path/to/your/source/folder'
  52. add_text_to_image_metadata(image_folder_path)
  53. }();


Sources: https://www.youtube.com/watch?v=6KCtPnam6Sk&ab_channel=TimvanHelsdingen
https://github.com/alexanderrichtertd/plex/wiki/Project-Structure
https://www.youtube.com/watch?v=o2LqKH6ahDA