Eidolon is a Minecraft skin renderer written in Rust. It can render a 3D model of a player skin to an image, or preview it in a window.
- Load and render Minecraft player models
- Texture mapping support
- 3D rendering with wgpu (Vulkan / Metal / DX12)
- Save rendering result as PNG or WebP
- Configurable camera, poses, and output size
- Headless off-screen rendering and windowed preview
- Cross-platform: Windows, macOS, Linux
Full documentation lives in docs/.
docs/getting-started.mdBuild, first render, and preview workflowdocs/cli.mdComplete command-line referencedocs/library.mdLibrary API usage patternsdocs/architecture.mdProject layout and render pipeline overviewdocs/development.mdLocal development, tests, and benchmarksdocs/troubleshooting.mdCommon runtime and asset issues
- Rust (latest stable recommended)
- A GPU with Vulkan, Metal, or DX12 support
- A working
wgpubackend. On headless systems this may require a configured software backend such as OSMesa, depending on the platform.
cargo build# Minimal — all defaults (classic arms, stand pose, 800×600 PNG)
cargo run -- render resources/bingling_sama.png
# Slim arms, wave pose, WebP output
cargo run -- render resources/bingling_sama.png out.webp --slim --posture wave
# Custom camera angle and zoom
cargo run -- render resources/bingling_sama.png --cam-yaw 210 --cam-zoom 1.5 --width 1024 --height 1024cargo run -- preview resources/bingling_sama.png
cargo run -- preview resources/bingling_sama.png --slim --cam-zoom 2.0More CLI options are documented in docs/cli.md.
Eidolon can be used as a Rust library. Minimal example:
use eidolon::{
camera::Camera,
character::{Character, SkinType},
renderer::{OutputFormat, Renderer},
};
fn main() -> Result<(), Box<dyn std::error::Error>> {
let renderer = Renderer::new()?;
let character = Character::new();
let skin = renderer.load_texture("skin.png")?;
let camera = Camera::new();
renderer.render_to_image(
&character,
&skin,
&camera,
"output.png",
(800, 600),
OutputFormat::Png,
)?;
Ok(())
}More details are in docs/library.md.
Contributions are welcome. See docs/contributing.md.
See LICENSE.
See docs/credits.md and docs/resources.md.