返回博客列表

Minecraft Lohse 皮肤:程序化像素艺术

通过 Python PIL 程序化生成 Minecraft 皮肤,以《神界:原罪 2》角色 Lohse 为主题进行像素艺术创作。

#Python#PIL#Minecraft#Pixel Art

项目概述

本项目通过 Python 脚本(PIL 库)程序化生成 Minecraft Java 版 64×64 皮肤。以《神界:原罪 2》中的同伴角色 Lohse 为原型,在 Minecraft 像素化美学框架下还原角色特征。

技术实现

皮肤生成完全通过代码定义像素颜色与位置,不涉及手动图像编辑:

  • 使用 RGB 颜色混合函数模拟明暗渐变与材质过渡
  • 为 Steve(4px 手臂)与 Alex(3px 手臂)两种模型分别实现
  • 帽子层支持全透明(正常版)与局部加厚(立体发版)两种模式

生成流程

定义调色板 → 绘制头部/躯干基础层 → 绘制手臂(分 Steve/Alex)→
绘制腿部 → 叠加装饰层(披风、魔法特效)→ 输出 PNG

核心代码

调色板定义

# Lohse 主题色
PALETTE = {
    'hair': (199, 168, 119),      # 金色长发
    'skin': (255, 213, 170),      # 肤色
    'coat_primary': (45, 45, 75),   # 深紫外套
    'coat_secondary': (80, 60, 100),# 浅紫内衬
    'accent': (180, 140, 200),     # 魔法紫
    'cape': (60, 50, 90),          # 披风
}

像素绘制

from PIL import Image
 
def draw_pixel(img, x, y, color, alpha=255):
    """在指定位置绘制像素"""
    if alpha < 255:
        # 半透明混合
        base = img.getpixel((x, y))
        blended = blend_colors(base, color, alpha / 255)
        img.putpixel((x, y), blended)
    else:
        img.putpixel((x, y), color)
 
def draw_gradient(img, x, y, width, color_start, color_end):
    """绘制渐变条"""
    for i in range(width):
        ratio = i / width
        color = interpolate_color(color_start, color_end, ratio)
        draw_pixel(img, x + i, y, color)

Steve vs Alex 手臂

def draw_arm_alex(img, is_left):
    """Alex 模型:3px 宽手臂"""
    offset = 0 if is_left else 5
    for x in range(3):
        for y in range(12):  # 手臂高度
            color = get_arm_color(x, y, is_left)
            draw_pixel(img, offset + x, y, color)
 
def draw_arm_steve(img, is_left):
    """Steve 模型:4px 宽手臂"""
    offset = 0 if is_left else 4
    for x in range(4):
        for y in range(12):
            color = get_arm_color(x, y, is_left)
            draw_pixel(img, offset + x, y, color)

输出文件

  • Lohse.png — Alex 模型版本
  • Lohse_steve.png — Steve 模型版本
  • Lohse_alex_volumetric.png — Alex 立体发版
  • Lohse_steve_volumetric.png — Steve 立体发版

使用方法

# 安装依赖
pip install Pillow
 
# 生成皮肤
python build_lohse_skin.py
 
# 输出在 output/ 目录

局限性

当前实现为纯代码像素生成,未提供图形化编辑界面或游戏内预览功能。皮肤的使用需要手动导入 Minecraft 游戏。


相关链接


最后更新: 2026-04-19