This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
start:structures [2024/07/31 10:48] – florian | start:structures [Unknown date] (current) – removed - external edit (Unknown date) 127.0.0.1 | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | [[: | ||
- | ====== Structures ====== | ||
- | ===== Drives ===== | ||
- | Real drives | ||
- | ^ Drive letter | ||
- | | C: | Windows drive | | ||
- | | D: | Sync work drive here + other work related stuff | | ||
- | | E: | Sync all media here (foto, music, video) | ||
- | |||
- | Mapped drives | ||
- | ^ Drive letter | ||
- | | I: | Active projects | ||
- | | M: | Music | | ||
- | | P: | Personal files for software (settings, adons) | ||
- | |||
- | From the command line, subst [drive letter]: /d deletes the drive\\ | ||
- | |||
- | ===== Music ===== | ||
- | [[https:// | ||
- | ==== Folder structure ==== | ||
- | *MusicProduction | ||
- | *Practice | ||
- | *Ideas | ||
- | *InProgress | ||
- | *FinalTouches | ||
- | *Finished | ||
- | *Publish | ||
- | *DJSets | ||
- | *Library | ||
- | *Samples | ||
- | *AmbiguousRoyaltySounds | ||
- | *FreeUse | ||
- | |||
- | |||
- | ===== Photography ===== | ||
- | |||
- | ==== Folder structure ==== | ||
- | *Year | ||
- | *01_Incoming | ||
- | *02_Outgoing | ||
- | ==== File structure ==== | ||
- | <color rgb(18%, | ||
- | <color rgb(0%, | ||
- | |||
- | ===== CG ===== | ||
- | |||
- | ==== 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 | ||
- | |||
- | ==== File structure ==== | ||
- | |||
- | === Naming Convention === | ||
- | [[https:// | ||
- | 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: | ||
- | *Character: CH | ||
- | *Prop: P | ||
- | *Foilage: F | ||
- | <color rgb(18%, | ||
- | <color rgb(0%, | ||
- | |||
- | === Texture Maps === | ||
- | Export files (PNG, JPG) hebben steeds zelfde versienummer als work files (Substance, Photoshop) | ||
- | Afkortingen: | ||
- | *Diffuse: DIFF | ||
- | *Ambient Oclusion: AO | ||
- | *Glossines: G | ||
- | *Normal: N | ||
- | *Roughness: R | ||
- | *Subsurface Scattering: SSS | ||
- | *Metallic: M | ||
- | <color rgb(18%, | ||
- | <color rgb(0%, | ||
- | |||
- | === Scenes === | ||
- | The count of scenes starts from 010, models with the scene number 000 are not restricted to one scene.\\ | ||
- | |||
- | <color rgb(18%, | ||
- | <color rgb(0%, | ||
- | |||
- | === In 3D Software === | ||
- | Max 5 letters voor afkortingen\\ | ||
- | Afkortingen: | ||
- | *Group: GRP | ||
- | *Mesh: MESH | ||
- | *Curve: CRVE | ||
- | *Joint: JNT | ||
- | *Light: LGHT | ||
- | *Camera: CAM | ||
- | *Locator: LOC | ||
- | *Controller: | ||
- | *Low Poly: LP | ||
- | *High Poly: HP | ||
- | *Forces: FRCE | ||
- | <color rgb(18%, | ||
- | <color rgb(0%, | ||
- | |||
- | ===== 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 [[https:// | ||
- | |||
- | == 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, | ||
- | |||
- | == The name == | ||
- | CATEGORY_SUBJECT_inc Nr | ||
- | |||
- | == The metadata == | ||
- | A description/ | ||
- | |||
- | == The script == | ||
- | <code Python [enable_line_numbers=" | ||
- | import os | ||
- | from PIL import Image as PilImage, PngImagePlugin | ||
- | from pyexiv2 import Image as Pyexiv2Image | ||
- | |||
- | def add_text_to_image_metadata(image_folder): | ||
- | try: | ||
- | # Iterate through all files in the specified folder | ||
- | for filename in os.listdir(image_folder): | ||
- | image_path = os.path.join(image_folder, | ||
- | text_file_path = os.path.join(image_folder, | ||
- | |||
- | print(f" | ||
- | |||
- | if os.path.exists(text_file_path): | ||
- | # Read the content from the text file | ||
- | with open(text_file_path, | ||
- | caption_text = file.read() | ||
- | |||
- | # Convert filename to lowercase for extension checking | ||
- | filename_lower = filename.lower() | ||
- | |||
- | if filename_lower.endswith((' | ||
- | # Load the image' | ||
- | image = Pyexiv2Image(image_path) | ||
- | |||
- | # Add the caption to the image' | ||
- | image.modify_exif({' | ||
- | elif filename_lower.endswith(' | ||
- | # Convert the PNG image to JPEG | ||
- | image = PilImage.open(image_path) | ||
- | rgb_image = image.convert(' | ||
- | rgb_image.save(os.path.splitext(image_path)[0] + ' | ||
- | |||
- | # Load the image' | ||
- | image = Pyexiv2Image(os.path.splitext(image_path)[0] + ' | ||
- | |||
- | # Add the caption to the image' | ||
- | image.modify_exif({' | ||
- | |||
- | # Delete the original PNG image | ||
- | os.remove(image_path) | ||
- | |||
- | # Delete the text file | ||
- | os.remove(text_file_path) | ||
- | |||
- | print(" | ||
- | except Exception as e: | ||
- | print(f" | ||
- | |||
- | # Example usage: Specify the folder containing your images | ||
- | image_folder_path = '/ | ||
- | add_text_to_image_metadata(image_folder_path) | ||
- | }(); | ||
- | </ | ||
- | |||
- | \\ | ||
- | |||
- | Sources: [[https:// | ||
- | [[https:// |