A Python library to generate, reconstruct, and map Minecraft skins between 2D textures and 3D renders
Project description
Skinpy Extended
➔
➔
A Python library for Minecraft skins, focusing on high-fidelity rendering, texture reconstruction, and bi-directional mapping.
Motivation
This project is a fork and extension of the archived skinpy library. We aim to revitalize the project with advanced features inspired by modern high-performance renderers like nmsr-rs.
Our core goal is to provide a simple, Pythonic way to bridge the gap between 2D skin textures and 3D renders, enabling seamless mapping in both directions.
AI Dataset Preparation
Modern AI models require high-quality, structured data. By providing bi-directional mapping between 2D textures and 3D renders, Skinpy Extended acts as a powerful tool for dataset preparation in the field of skin generation and processing.
- Automated Dataset Generation: Efficiently create thousands of consistent perspective renders from raw skin textures to feed into training pipelines for GANs, Diffusion models, or Vision Transformers.
- Bi-directional Ground Truth: Leverage the ability to reconstruct textures from renders to validate model performance and calculate loss between generated renders and original textures.
- Structured Mapping: Streamlining the process of preparing datasets that help models understand Minecraft's unique texture-to-model mapping, enabling high-fidelity regeneration based on AI-processed outputs.
Features
- 2D to 3D Mapping: Render high-quality isometric views of any Minecraft skin.
- 3D to 2D Reconstruction: Reconstruct original 64x64 skin textures from rendered images.
- Granular Control: Access and modify pixels at the skin, body part, or individual face level using 3D coordinates.
- Dataset Preparation: Perfect for generating large-scale, consistent datasets of skin renders and their corresponding textures.
- CLI & API: Use the built-in command-line tool or integrate the flexible Python API into your own projects.
Installation
pip install skinpy-extended
Quickstart
Loading and Saving
from skinpy import Skin
# Load a skin from a file
skin = Skin.from_path("steve.png")
# Save the skin texture back to a file
skin.to_image().save("steve_copy.png")
Rendering a Perspective View
from skinpy import Skin, Perspective
skin = Skin.from_path("steve.png")
# Create a perspective (Front-Right-Up)
perspective = Perspective.new(
x="right",
y="front",
z="up",
scaling_factor=20
)
# Render and save
skin.to_isometric_image(perspective).save("render.png")
Reconstructing a Skin from a Render
from PIL import Image
from skinpy import Skin
# Load a combined render (e.g. front and back views)
render_img = Image.open("render.png").convert("RGBA")
# Map the render back to a 3D Skin object
skin = Skin.from_combined_render(render_img, scale=20)
# Extract the original 2D texture
skin.to_image().save("reconstructed.png")
Coordinate System
Skinpy uses a coordinate system with the origin at the left-down-front of the skin from the perspective of an observer looking at the skin.
Development & Contributing
We welcome contributions to expand the library's capabilities! Areas of interest include:
- Support for Slim (Alex-style) models.
- Support for secondary layers (overlays/hats).
- Improved rendering performance.
Feel free to open issues or submit pull requests.
Credits
- Originally created by Tim Martin and Steven Van Ingelgem.
- Maintained and extended by Bonenk.
- Logic inspired by nmsr-rs.
License
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file skinpy_extended-1.0.1.tar.gz.
File metadata
- Download URL: skinpy_extended-1.0.1.tar.gz
- Upload date:
- Size: 238.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
84f9665dfb4c67eb88f9c6b16f57c2d07dd58009e63c34a34853eb054784e879
|
|
| MD5 |
f3babaa5554e0a51cd64d171c2213a27
|
|
| BLAKE2b-256 |
e8dc7dc5d9fbbef4e46f46fcdc9e69e18a85e45e48ec3de80c4b1b462242f049
|
File details
Details for the file skinpy_extended-1.0.1-py3-none-any.whl.
File metadata
- Download URL: skinpy_extended-1.0.1-py3-none-any.whl
- Upload date:
- Size: 12.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3dbf97ad345c0155c5f0d5653b3f1af334625bf41d78766dfd0acf35a031dad6
|
|
| MD5 |
d99f49271a1adf4061c75d91ce0f4d1f
|
|
| BLAKE2b-256 |
6d2f6c260c041e9845708844a3ebb9a2c92a8880aa1f938d917a3fff0943da6a
|