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 buildcargo run -- render --skin-type classiccargo run -- preview --skin-type classicMore 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 mut character = Character::new();
character.skin_type = SkinType::Classic;
character.skin = Some(renderer.load_texture("resources/bingling_sama.png")?);
let camera = Camera::new();
renderer.render_to_image(
&character,
&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.