Pexlib

Pexlib

用于将UV 2D贴图渲染为png的库

杂项

Pexlib

一个用于 Hytale 的服务端渲染库,能够从 .blockymodel 文件生成等距 PNG 预览图。

功能概述

Pexlib 读取 Hytale 中 Assets.zip 的生物模型和纹理,将其渲染为等距 2D 图像,并通过简单的 API 供其他模组调用。它处理完整的流水线:模型解析、纹理提取、面 UV 映射(包括旋转和镜像)、深度排序和等距投影。

特性

  • 解析 .blockymodel JSON 文件,支持完整的节点层级结构
  • 提取每个面的纹理,包含 UV 偏移、旋转(0/90/180/270)和镜像
  • 处理负拉伸值(几何镜像配合正确的面交换)
  • 等距投影,采用正面相机角度
  • 从后向前深度排序,实现正确的遮挡效果
  • 渲染缓存,避免重复工作
  • 批量渲染 Assets.zip 中的所有生物
  • 通过 InputStream API 支持自定义/模组中的 .blockymodel 文件

API 用法

// 按名称渲染生物
BufferedImage img = PexlibApi.renderCreature("Bear_Grizzly");

// 使用自定义选项(尺寸、缩放比例)
RenderOptions opts = RenderOptions.builder().width(256).height(256).scale(4.0).build();
BufferedImage img = PexlibApi.renderCreature("Wolf", opts);

// 缓存渲染(如果可用则返回缓存结果)
BufferedImage img = PexlibApi.getCachedRender("Rat", RenderOptions.defaults());

// 列出所有可用生物
List<String> creatures = PexlibApi.listCreatures();

// 渲染来自任何模组的自定义模型
BlockyModel model = PexlibApi.parseModel(inputStream);
BufferedImage img = PexlibApi.renderModel(model, texturePng, opts);

资源结构

Pexlib 从 Hytale 的资源系统中读取文件:

  • 模型Common/NPC/{类别}/{生物名称}/Models/Model.blockymodel
  • 纹理Common/NPC/{类别}/{生物名称}/Models/Texture.png
  • 模型配置Server/Models/{类别}/{名称}.json

构建

./gradlew build

Shadow JAR 会自动部署到 %APPDATA%/Hytale/UserData/Mods/

包名

dev.hytalemod.pexlib

作者

uwudwagon