# How to print a League figure ## Tools ### Required - [Obsidian](https://github.com/Crauzer/Obsidian) - [lol2gltf](https://github.com/Crauzer/lol2gltf) - [Blender 2.91+](https://www.blender.org) - [Prusa Slicer](https://www.prusa3d.com/prusaslicer/) - [UV tools](https://github.com/sn4k3/UVtools) ### Optional - [ripgrep](https://github.com/BurntSushi/ripgrep#installation) - [Meshmixer](https://www.meshmixer.com/download.html) - [Chitubox](https://www.chitubox.com/en/download/chitubox-free) ## Steps 1. Use Obsidian to open the `<your champion>.wad.client` for your champion. To find the file, navigate Obsidian to `...\League of Legends\Game\DATA\FINAL\Champions` You want to extract `assets\characters\<your champion>\skins`. This will give you the `.skn`, `.skl`, `.dds`, and `.anm` files needed for the next step. *Note:* Sometimes the data is in the wrong file. You can use ripgrep to search through the files using `rg --binary -i <your champion>`. 2. Use lol2gltf to convert the data extracted by Obsidian into a `.gltf` which blender can read. Choose the `.skn` and `.skl` for the desired skin. You will want all the `.anm`'s for both your desired skin and for the base skin. Choose the `.dds` for your desired skin/chroma. Make sure you give it all the files it requests. *Note:* If you can't find all the `.dds`'s lol2gltf wants, it can cause issues with some animations, causing the program to crash. If this happens you can either try and find the missing `.dds` in other champion files or just carefully avoid animations which cause the crash. 3. Open blender, delete the starting cube, and use `File -> Import -> glTF 2.0 (.glb/.gltf)` to import the `.gltf` generated in step 2. Switch to material preview viewport shading. If it looks like an eldritch horror, the normals are inverted. Select the model. Press tab to go into edit mode. Tap `A` until everything is selected. Use `Mesh -> Normals -> Flip`. Press tab to go back to object mode. Go to the animation tab. Switch to non-linear animation mode using the button in the upper left that looks like a picnic table ![](https://i.imgur.com/T8rHwo6.png). Select the animation you want by click the star. Go to the desired frame. Freeze the animation by selecting the model, clicking the wrench icon on the right ![](https://i.imgur.com/QEH8kGS.png), clicking the down arrow for the modifier and clicking apply. If there is an apply button that also works. 4. Make the model look better. Use the subdivision surface modifier to make it look smoother/less polygony. I like a setting of 3, but they all have trade-offs. Don't forget to apply. 5. Now we have a model, but it's not suitable for printing. There are a number of tools we have to improve it. *Model too thin:* Use blender to extrude parts of the model that are too thin to print. Go into edit mode, switch to face select, select the faces, press E to extrude. *Parts of model disconnected:* Use blender to extrude faces to make it connect again, move the parts around, or just delete them. *Self intersection:* Do this at the end because afterwards it will make blender hang for about ~5 minutes every time you do anything. Select the model. Add a boolean modifier. Select union. Change the operand type to collection, but DON'T put anything in the collection field. Change the solver to exact. Don't forget to apply! Note: This process requires version 2.91 or higher. *Nowhere to sit:* You can either add cylinders poking out of the fit to attach to a base or flatten the bottom of the model. Either can be done in blender. One technique which definitely not the best way to use blender, but works is to add a cube, scale and place, and use a boolean modifier with difference mode to create a flat bottom area. 6. Support the model! The Prusa Slicer does good with supporting the areas that need structural support, but sucks at handling islands which will ruin your print. *Prusa Slicer support settings:* I use `1mm` min point distance and `75%` density. *UV tools check:* Everytime you slice, load the `.sl1` file in UV tools and detect issues using the gear icon ![](https://i.imgur.com/sxOCMCT.png). The most important issues are overhangs and islands. You can filter to just see those by right clicking the detect icon ![](https://i.imgur.com/VVry7ES.png) and selecting just those two. Then rerun detect issues. Look at the layer where UV tools found issues in the Prusa Slicer. You can use the scroll-wheel for layer-by-layer selection by hovering over the slider on the right in Preview mode ![](https://i.imgur.com/jQTD7JE.png). Fix the issues by either adding supports or making changes to the model (usually in blender, but meshmixer can sometimes help). Remember after adding manual support points in the Prusa Slicer that you have to click apply or it won't work. If the Prusa slicer just refuses to put a working support somewhere, you can add them in Chitubox instead. Use `File -> Export -> Export plate as stl...`, then load that stl in Chitubox. Add the needed supports, then export from Chitubox back to the Prusa Slicer by clicking the hamburger menu in the upper left, clicking `Save As...` and then saving it as an `.stl`. Then reimport into the Prusa Slicer and continue the process of slicing and checking. *Hollowing:* If you need to hollow the model, it's easy to do in the Prusa Slicer. Remember to add drain holes! If trying to hollow just crashes the slicer, it's probably because your model has self intersection. See above for a fix in blender. 7. Once all the issues are resolved you should be good to print! ## Sources The information for this guide comes from this excellent video: https://www.youtube.com/watch?v=XxSGk6SAcAM and from my own trials and tribulations.