| Crates.io | eidolonmc |
| lib.rs | eidolonmc |
| version | 0.0.1-alpha |
| created_at | 2025-08-24 10:50:41.657054+00 |
| updated_at | 2025-08-24 10:50:41.657054+00 |
| description | A Minecraft skin off-screen renderer written in Rust |
| homepage | https://github.com/bingling-sama/eidolon |
| repository | https://github.com/bingling-sama/eidolon |
| max_upload_size | |
| id | 1808247 |
| size | 201,311 |
Eidolon is a Minecraft skin renderer written in Rust. It can render a 3D model of a player skin and save it as a PNG image.
osmesa, which is included in mesa versions prior to 25.10.
sudo apt install libosmesa6-dev on Ubuntu).mesa or osmesa available.osmesa, check your system's mesa version and consider downgrading if necessary.Clone the repository:
git clone https://github.com/bingling-sama/SkinViewer.git
cd SkinViewer
Run with CLI subcommands:
Render a Minecraft skin as a 3D image.
cargo run -- render [OPTIONS]
Options:
--filename <FILENAME>: Output image filename (default: output.png)--width <WIDTH>: Output image width (default: 800)--height <HEIGHT>: Output image height (default: 600)--texture <TEXTURE>: PNG skin file path (default: resources/bingling_sama.png)--skin-type <SkinType>: Skin type (Steve or Alex), required--yaw <YAW>: Camera yaw (default: 180.0)--pitch <PITCH>: Camera pitch (default: 90.0)--scale <SCALE>: Camera scale (default: 1.0)--head-yaw <ANGLE>: Head yaw (default: 90.0)--head-pitch <ANGLE>: Head pitch (default: 90.0)--left-arm-roll <ANGLE>: Left arm roll (default: 90.0)--left-arm-pitch <ANGLE>: Left arm pitch (default: 0.0)--right-arm-roll <ANGLE>: Right arm roll (default: 90.0)--right-arm-pitch <ANGLE>: Right arm pitch (default: 0.0)--left-leg-pitch <ANGLE>: Left leg pitch (default: 90.0)--right-leg-pitch <ANGLE>: Right leg pitch (default: 90.0)Example:
cargo run -- render --filename my_skin.png --texture resources/bingling_sama.png --skin-type Steve --width 1024 --height 768 --yaw 180 --pitch 90 --scale 1.2
Convert a classic single-layer Minecraft skin to double-layer format.
cargo run -- convert <INPUT> <OUTPUT>
<INPUT>: Path to the single-layer skin PNG file<OUTPUT>: Path to save the converted double-layer PNG fileExample:
cargo run -- convert old_skin.png new_skin.png
Eidolon can also be used as a Rust library for Minecraft skin rendering and image generation.
use skinviewer::{Renderer, Character, Camera};
let renderer = Renderer::new();
let mut character = Character::new();
// character.load_skin("path/to/skin.png");
let camera = Camera::new();
renderer.render_to_image(&character, &camera, "output.png", (800, 600));
Renderer: Handles the rendering process and output.Character: Represents the Minecraft player model and skin.Camera: Controls the viewpoint, yaw, pitch, and scale.See the source code and module docs for advanced usage, such as custom poses, camera settings, and texture loading.
This project uses the following main crates:
glium: For OpenGL rendering.glutin: For windowing and input.image: For image processing.cgmath: For 3D math.tobj: For loading .obj files.clap: For command-line argument parsing.Contributions are welcome! Please feel free to submit a pull request or open an issue.
.DS_Store. (Seriously)