{"id":17026846,"url":"https://github.com/crauzer/lol2gltf","last_synced_at":"2025-04-05T10:08:41.735Z","repository":{"id":53265515,"uuid":"292057936","full_name":"Crauzer/lol2gltf","owner":"Crauzer","description":"Convert between League of Legends mesh formats and the glTF runtime format","archived":false,"fork":false,"pushed_at":"2025-02-28T21:54:50.000Z","size":9234,"stargazers_count":141,"open_issues_count":14,"forks_count":21,"subscribers_count":8,"default_branch":"main","last_synced_at":"2025-03-28T16:42:56.391Z","etag":null,"topics":["gltf","leagueoflegends"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Crauzer.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}},"created_at":"2020-09-01T17:02:41.000Z","updated_at":"2025-03-01T03:52:35.000Z","dependencies_parsed_at":"2024-01-14T17:53:45.349Z","dependency_job_id":null,"html_url":"https://github.com/Crauzer/lol2gltf","commit_stats":null,"previous_names":[],"tags_count":27,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Crauzer%2Flol2gltf","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Crauzer%2Flol2gltf/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Crauzer%2Flol2gltf/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Crauzer%2Flol2gltf/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Crauzer","download_url":"https://codeload.github.com/Crauzer/lol2gltf/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247318744,"owners_count":20919484,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["gltf","leagueoflegends"],"created_at":"2024-10-14T07:44:56.522Z","updated_at":"2025-04-05T10:08:41.715Z","avatar_url":"https://github.com/Crauzer.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"Resources/lol2gltf-logo.png\" alt=\"lol2gltf logo\"\u003e \n  \u003ch1 align=\"center\"\u003elol2gltf\u003c/h1\u003e\n  \u003cp align=\"center\"\u003e\n    \u003ca href=\"https://github.com/Crauzer/lol2gltf/releases\"\u003e\n      \u003cimg alt=\"GitHub release (latest by date)\" src=\"https://img.shields.io/github/v/release/Crauzer/lol2gltf?color=teal\u0026label=Download\u0026logo=github\u0026style=for-the-badge\"\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://github.com/Crauzer/lol2gltf/releases\"\u003e\n      \u003cimg alt=\"GitHub All Releases\" src=\"https://img.shields.io/github/downloads/Crauzer/lol2gltf/total?style=for-the-badge\"\u003e\n    \u003c/a\u003e\n  \u003c/p\u003e\n  \u003cp align=\"center\"\u003e\n    A powerful tool for converting between the glTF format and League of Legends models and animations\n  \u003c/p\u003e\n\u003c/p\u003e\n\n## 📋 Overview\n\nlol2gltf is a command-line utility that enables seamless conversion between League of Legends' proprietary 3D formats and the industry-standard glTF format. This tool is essential for game modders, artists, and developers working with League of Legends assets.\n\n## ✨ Features\n\n- **Skinned Mesh Conversion**: Convert League's SKN/SKL/ANM files to glTF and back\n- **Map Geometry Conversion**: Transform League's map geometry files to glTF\n- **Static Mesh Conversion**: Convert glTF to League's static mesh formats (SCB/SCO)\n- **Animation Support**: Include League animations in your glTF exports\n- **Texture Integration**: Bundle textures with your models\n\n## 🚀 Getting Started\n\n### Installation\n\n1. Download the latest release from the [Releases page](https://github.com/Crauzer/lol2gltf/releases)\n2. Extract the ZIP file to a location of your choice\n3. Run the tool from the command line as described below\n\n## 📖 Command Reference\n\nlol2gltf offers several conversion modes, each with its own set of parameters:\n\n### Converting Skinned Mesh to glTF (`skn2gltf`)\n\nConverts League's skinned mesh files (SKN, SKL, ANM) into a glTF asset.\n\n```\nlol2gltf skn2gltf -m \u003cskn_path\u003e -s \u003cskl_path\u003e -g \u003cgltf_path\u003e [-a \u003canm_folder\u003e] [--materials \u003cmaterial_names\u003e] [--textures \u003ctexture_paths\u003e]\n```\n\n**Required Parameters:**\n- `-m, --skn`: Path to the Simple Skin (.skn) file\n- `-s, --skl`: Path to the Skeleton (.skl) file\n- `-g, --gltf`: Path for the output glTF file (use .glb extension for binary format)\n\n**Optional Parameters:**\n- `-a, --anm`: Path to a folder containing Animation (.anm) files\n- `--materials`: Material names for textures (must match the count of texture paths)\n- `--textures`: Paths to texture files (must match the count of material names)\n\n**Example:**\n```\nlol2gltf skn2gltf -m Aatrox.skn -s Aatrox.skl -g Aatrox.glb -a animations/\n```\n\n### Converting glTF to Skinned Mesh (`gltf2skn`)\n\nConverts a glTF asset into League's skinned mesh formats (SKN, SKL).\n\n```\nlol2gltf gltf2skn -g \u003cgltf_path\u003e -m \u003cskn_path\u003e [-s \u003cskl_path\u003e]\n```\n\n**Required Parameters:**\n- `-g, --gltf`: Path to the glTF asset (.glb or .gltf)\n- `-m, --skn`: Path for the output Simple Skin (.skn) file\n\n**Optional Parameters:**\n- `-s, --skl`: Path for the output Skeleton (.skl) file (if not specified, will use the same name as the SKN file)\n\n**Example:**\n```\nlol2gltf gltf2skn -g Aatrox.glb -m Aatrox.skn\n```\n\n### Converting Map Geometry to glTF (`mapgeo2gltf`)\n\nConverts League's map geometry files into a glTF asset.\n\n```\nlol2gltf mapgeo2gltf -m \u003cmapgeo_path\u003e -b \u003cmatbin_path\u003e -g \u003cgltf_path\u003e [-d \u003cgamedata_path\u003e] [-x \u003cflip_x\u003e] [-l \u003clayer_policy\u003e] [-q \u003ctexture_quality\u003e]\n```\n\n**Required Parameters:**\n- `-m, --mgeo`: Path to the Map Geometry (.mapgeo) file\n- `-b, --matbin`: Path to the Materials Bin (.materials.bin) file\n- `-g, --gltf`: Path for the output glTF file (use .glb extension for binary format)\n\n**Optional Parameters:**\n- `-d, --gamedata`: Path to the Game Data directory (required for bundling textures)\n  - In order to correctly bundle all textures into the glTF file, you should make sure to export all relevant `.wad.client` files into this folder (MapXX.wad.client, some maps require the DATA wads as well).\n- `-x, --flipX`: Whether to flip the map node's X axis (default: true)\n- `-l, --layerGroupingPolicy`: Layer grouping policy for meshes (Default, Ignore)\n- `-q, --textureQuality`: Quality of textures to bundle (Low = 4x, Medium = 2x)\n\n### Converting glTF to Static Mesh (`gltf2static`)\n\nConverts a glTF asset into League's static mesh formats (SCB/SCO).\n\n```\nlol2gltf gltf2static -i \u003cgltf_path\u003e -o \u003coutput_path\u003e\n```\n\n**Required Parameters:**\n- `-i, --input`: Path to the input glTF file\n- `-o, --output`: Path to the output SCB/SCO file (extension determines format)\n\n**Example:**\n```\nlol2gltf gltf2static -i prop_rock.glb -o prop_rock.scb\n```\n\n## 📚 Additional Resources\n\n- [Video Tutorial (Outdated)](https://www.youtube.com/watch?v=XxSGk6SAcAM): Comprehensive guide to using lol2gltf\n\n## 🖼️ Gallery\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://i.imgur.com/Gu31ztz.jpg\"\u003e\n    \u003cimg src=\"https://i.imgur.com/Gu31ztz.jpg\" width=\"45%\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://i.imgur.com/NfBlga6.jpg\"\u003e\n    \u003cimg src=\"https://i.imgur.com/NfBlga6.jpg\" width=\"45%\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://i.imgur.com/psWiYa2.jpg\"\u003e\n    \u003cimg src=\"https://i.imgur.com/psWiYa2.jpg\" width=\"45%\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://i.imgur.com/jx8yuHI.jpg\"\u003e\n    \u003cimg src=\"https://i.imgur.com/jx8yuHI.jpg\" width=\"45%\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://thumbs.gfycat.com/HappyRectangularAntelopegroundsquirrel-size_restricted.gif\"\u003e\n    \u003cimg src=\"https://thumbs.gfycat.com/HappyRectangularAntelopegroundsquirrel-size_restricted.gif\" width=\"45%\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://thumbs.gfycat.com/ShorttermThoroughDingo-size_restricted.gif\"\u003e\n    \u003cimg src=\"https://thumbs.gfycat.com/ShorttermThoroughDingo-size_restricted.gif\" width=\"45%\"\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n## 📜 License\n\nThis project is licensed under the terms found in the [LICENSE](LICENSE) file.\n\n## 🔮 Upcoming Features\n\n- glTF to ANM conversion\n- Improved texture handling\n- Support for more League file formats\n\n---\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://www.khronos.org/assets/uploads/apis/2017-collada-gltf-positioning.png\" alt=\"glTF positioning\"\u003e\n\u003c/p\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcrauzer%2Flol2gltf","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcrauzer%2Flol2gltf","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcrauzer%2Flol2gltf/lists"}