{"id":46662869,"url":"https://github.com/cvipdebug/roblox-outfit-studio","last_synced_at":"2026-03-13T06:05:15.375Z","repository":{"id":342967452,"uuid":"1175802245","full_name":"cvipdebug/roblox-outfit-studio","owner":"cvipdebug","description":"Free desktop clothing editor for Roblox — paint shirts \u0026 pants in 2D with a layer-based editor and see your design on a live 3D R6 avatar preview. Built with Python, PyQt6, and OpenGL.","archived":false,"fork":false,"pushed_at":"2026-03-08T12:16:28.000Z","size":538,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-03-08T12:32:49.287Z","etag":null,"topics":["2d-editor","3d-preview","clothing-texture","desktop-app","game-tools","image-editor","layer-editor","open-source","opengl","outfit-editor","pillow","pyopengl","pyqt6","python","r6-avatar","roblox","roblox-clothing","roblox-studio","roblox-tools","texture-editor"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cvipdebug.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-03-08T07:27:25.000Z","updated_at":"2026-03-08T12:11:55.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/cvipdebug/roblox-outfit-studio","commit_stats":null,"previous_names":["cvipdebug/roblox-outfit-studio"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/cvipdebug/roblox-outfit-studio","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cvipdebug%2Froblox-outfit-studio","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cvipdebug%2Froblox-outfit-studio/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cvipdebug%2Froblox-outfit-studio/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cvipdebug%2Froblox-outfit-studio/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cvipdebug","download_url":"https://codeload.github.com/cvipdebug/roblox-outfit-studio/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cvipdebug%2Froblox-outfit-studio/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30459812,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-13T03:55:51.346Z","status":"ssl_error","status_checked_at":"2026-03-13T03:55:33.055Z","response_time":60,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["2d-editor","3d-preview","clothing-texture","desktop-app","game-tools","image-editor","layer-editor","open-source","opengl","outfit-editor","pillow","pyopengl","pyqt6","python","r6-avatar","roblox","roblox-clothing","roblox-studio","roblox-tools","texture-editor"],"created_at":"2026-03-08T14:02:48.912Z","updated_at":"2026-03-13T06:05:15.346Z","avatar_url":"https://github.com/cvipdebug.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🎨 Roblox Outfit Studio\n\nA free, open-source **desktop clothing editor** for Roblox — paint shirts and pants in 2D with a full layer-based editor and see your design on a 3D R6 avatar in real time.\n\n![Python](https://img.shields.io/badge/Python-3.10%2B-blue?logo=python\u0026logoColor=white)\n![PyQt6](https://img.shields.io/badge/UI-PyQt6-green?logo=qt\u0026logoColor=white)\n![OpenGL](https://img.shields.io/badge/3D-OpenGL-orange)\n![License](https://img.shields.io/badge/License-MIT-lightgrey)\n![Platform](https://img.shields.io/badge/Platform-Windows%20%7C%20macOS%20%7C%20Linux-informational)\n\n---\n\n## ✨ Features\n\n### 🖌️ 2D Clothing Editor\n- **Full layer system** — add, delete, duplicate, reorder, lock, hide, and set opacity per layer\n- **Blend modes** — Normal, Multiply, Screen, Overlay, Add, Subtract, and more\n- **Brush \u0026 Eraser** — adjustable size (1–500px), hardness, and opacity with smooth stroke interpolation\n- **Non-destructive Transform tool** — move, scale, rotate, and flip imported images with on-canvas handles; nothing is baked until you choose to\n- **Fill / Bucket** — configurable tolerance flood fill\n- **Eyedropper** — pick any colour from any visible layer\n- **Shape tools** — Rectangle, Ellipse, Line\n- **Text tool** — system font picker with size control\n- **Import images** — PNG, JPG, BMP, WebP as new layers; drag-and-drop supported\n- **Undo / Redo** — 100-step history\n- **Zoom** — 10% to 1600% with scroll-wheel, keyboard shortcuts, and fit-to-window\n- **Snap to grid** — configurable grid size\n\n### 🧍 Real-Time 3D Avatar Preview\n- **R6 avatar** — accurate Roblox R6 body proportions (stud-correct dimensions)\n- **Live texture sync** — 2D canvas changes appear on the 3D avatar automatically\n- **Orbit camera** — left-drag to orbit, right-drag to pan, scroll to zoom\n- **Camera presets** — Front, Back, Left, Right, Top, ¾ View\n- **Lighting controls** — adjustable ambient and diffuse sliders\n- **Ground grid** and **auto-rotate** toggle\n\n### 🎨 Theme System\n- 4 built-in themes: **Dark** (default), **Light**, **Neon**, **Ocean**\n- Full theme editor with colour pickers for every UI element\n- Import / export themes as JSON\n\n### 💾 Project \u0026 Export\n- Save/load projects as `.outfitproj` (layers + metadata, ZIP-based)\n- Export final texture as a Roblox-ready **585×559 PNG**\n- Export blank UV template guides\n- New canvas from Shirt template, Pants template, or custom size\n\n---\n\n## 🚀 Quick Start\n\n### Requirements\n- Python **3.10** or newer\n- Any system with OpenGL support (any modern GPU or integrated graphics)\n\n### Run from source\n\n```bash\n# 1. Clone\ngit clone https://github.com/cvipdebug/roblox-outfit-studio.git\ncd roblox-outfit-studio\n\n# 2. Create a virtual environment (recommended)\npython -m venv .venv\n\n# Windows\n.venv\\Scripts\\activate\n# macOS / Linux\nsource .venv/bin/activate\n\n# 3. Install dependencies\npip install -r requirements.txt\n\n# 4. Launch\npython src/main.py\n```\n\n### Dependencies\n\n| Package | Purpose |\n|---------|---------|\n| `PyQt6` | GUI framework |\n| `Pillow` | Image loading, blending, export |\n| `numpy` | Fast pixel painting |\n| `PyOpenGL` | 3D avatar renderer |\n| `PyOpenGL_accelerate` | Optional C accelerators |\n\n---\n\n## 📦 Building a Standalone .exe (Windows)\n\nNo Python required on the user's machine.\n\n```bash\npip install pyinstaller\npython build_dist.py\n```\n\nOutput goes into `dist/OutfitStudio/` — distribute the whole folder. Users run `OutfitStudio.exe`.\n\nThe build script automatically bundles all template PNGs, the app icon, and all required hidden imports for PyQt6 + PyOpenGL.\n\n---\n\n## ⌨️ Keyboard Shortcuts\n\n| Key | Action |\n|-----|--------|\n| `B` | Brush |\n| `E` | Eraser |\n| `G` | Fill / Bucket |\n| `I` | Eyedropper |\n| `R` | Rectangle |\n| `C` | Ellipse |\n| `L` | Line |\n| `T` | Text |\n| `V` | Transform |\n| `Ctrl+Z` | Undo |\n| `Ctrl+Y` | Redo |\n| `Ctrl+S` | Save project |\n| `Ctrl+E` | Export texture PNG |\n| `Ctrl+I` | Import image as layer |\n| `Ctrl+Shift+N` | New layer |\n| `=` / `-` | Zoom in / out |\n| `0` | Fit to window |\n| `1` | 100% zoom |\n| `Delete` | Clear active layer |\n\n---\n\n## 📐 Roblox Template Reference\n\n| Template | Size | Regions |\n|----------|------|---------|\n| Shirt | 585 × 559 px | Torso (front/back/sides/top/bottom), Left arm, Right arm |\n| Pants | 585 × 559 px | Torso (waistband), Left leg, Right leg |\n\nExported PNGs match the official Roblox UV layout and can be uploaded directly to Roblox Studio or the Roblox website.\n\n---\n\n## 🗂️ Project Structure\n\n```\nroblox-outfit-studio/\n├── src/\n│   ├── main.py                  # Entry point\n│   ├── core/\n│   │   ├── models.py            # Layer, CanvasState, LayerTransform, Color\n│   │   ├── history.py           # Undo/redo stack\n│   │   ├── paint_engine.py      # All pixel painting operations\n│   │   ├── project_io.py        # Save/load/export\n│   │   └── resources.py         # Cross-platform asset path resolver\n│   ├── editor/\n│   │   └── canvas_widget.py     # 2D canvas + Transform tool handles\n│   ├── viewer/\n│   │   └── gl_widget.py         # PyOpenGL 3D R6 avatar renderer\n│   └── ui/\n│       ├── main_window.py       # Main application window\n│       ├── layer_panel.py       # Layer management panel\n│       ├── tool_options.py      # Tool options sidebar\n│       ├── viewer_controls.py   # 3D viewer controls\n│       └── theme_manager.py     # Theme system + editor dialog\n├── assets/\n│   ├── icon.ico                 # App icon (16–256px, all sizes)\n│   ├── icon.png                 # App icon 256px PNG\n│   └── templates/\n│       ├── shirt_template_default.png\n│       └── pants_template_default.png\n├── tests/\n├── requirements.txt\n├── build_dist.py                # PyInstaller build script\n└── README.md\n```\n\n---\n\n## 🤝 Contributing\n\nPull requests are welcome! Some ideas for future improvements:\n\n- R15 avatar support\n- Load actual Roblox `.rbxm` avatar models\n- Selection / lasso tool\n- GLSL shader rendering for higher visual quality\n- Roblox API integration (fetch avatar by username)\n- Animation preview (idle, walk cycle)\n- macOS `.app` build\n\n---\n\n## 📄 License\n\nMIT License — see [`LICENSE`](LICENSE) for details.\n\n---\n\n## 🙏 Credits\n\n3D avatar preview concept inspired by [SlothX Outfit Viewer](https://github.com/SlothXTheDev/slothxoutfitviewer).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcvipdebug%2Froblox-outfit-studio","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcvipdebug%2Froblox-outfit-studio","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcvipdebug%2Froblox-outfit-studio/lists"}