Mazzle的图片导入器

Mazzle的图片导入器

一个独立的实用工具,用于将图片目录作为纹理图集导入到《博德之门3》的模组中。这可用于创建按钮图标,或让脚本扩展器模组显示自定义图片和动画。此工具面向模组制作者。

图片导入器会获取一个图片文件夹,并自动执行以下操作:

  • 构建一个 DDS 纹理图集,可配置单元格大小和网格布局
  • 生成访问模组中图片和图标所需的 BG3 模组文件(LSX/LSF)
  • 将所有内容部署到模组的目录结构中
  • 还可以从模组中移除图集

支持的格式

  • PNG (.png)
  • JPEG (.jpg, .jpeg)
  • GIF (.gif)
  • BMP (.bmp)
  • TIFF (.tiff)
  • WebP (.webp)
  • DDS (.dds)

安装

  1. 将工具解压到您计算机上的任意位置
  2. 确保您已安装 Python 3.7+
  3. 该工具会在首次运行时自动安装所需依赖项(Pillow、LSLib)

基本用法

步骤 1:选择您的模组目录

  1. 点击“目标模组(公共)目录”旁边的浏览
  2. 选择您模组的根目录(包含 Public/ 子文件夹的文件夹)

图片

步骤 2:选择要导入的图片

  1. 点击添加照片目录到模组
  2. 选择包含您图片的文件夹
  3. 日志应显示找到的图片数量

步骤 3:配置导入

  1. 点击构建并部署图集
  2. 将出现一个窗口,允许您配置正在生成的图集:

图片

图集信息

  • 图集名称:纹理库的显示名称
  • 图集键:唯一标识符。这是您在 ScriptExtender 中访问图片时使用的键。

单元格大小 选择图片应如何适应图集单元格:

  • 调整为最大:所有图片都调整为与最大图片相同的尺寸
  • 调整为平均:单元格大小设为图片的平均尺寸
  • 调整为最小:所有图片都缩小到最小图片的尺寸
  • 使用最大(不调整):单元格大小设为最大图片的尺寸,较小的图片居中放置在透明背景上而不进行放大
  • 图标 64x64:标准图标大小(64x64 像素)
  • 自定义:手动指定宽度和高度

网格布局

  • 自动:针对该图片数量,生成一个接近正方形且浪费空间最小的布局
  • 手动:指定精确的列数和行数

单独的 UV

  • 添加单独的 UV:为每张图片创建独立的 UV 映射
    • 未选中时:整个图集只有一个 UV 条目。ScriptExtender 代码必须处理 UV 映射。(当将图片导入 MazzleDoc 时应使用单个 UV 条目。)
    • 选中时:每张图片根据文件名获得自己的 MapKey。在创建快捷栏图标时使用此选项。

步骤 4:将图片导入您的模组

  1. 检查计算出的图集大小和 DDS 估计值
    • 如果您选择的图集尺寸不兼容 DirectX,工具会警告您。(必须能被 4 整除)
  2. 点击部署以构建图集图片,并将其连同其 lsx 和 lsf 文件一起安装到您的模组中。
  3. 日志会显示详细的进度和最终配置

MazzleDoc 用户注意: 部署后,日志会显示一个小的代码片段,您可以直接在 MazzleDoc 的配置文件中使用:

image_config = {
    atlas_key = "MyImages",
    columns = 3,
    rows = 2,
    image_width = 64,
    image_height = 64
},

删除现有图集

点击管理图集以查看和移除先前安装的图集。对话框显示:

  • 每个图集及其名称和键
  • 每个图集中包含的图片列表(如果可用)
  • 用于选择要移除的图集的复选框
  • 点击移除所选以从您的模组中删除这些图集

图片

输出文件

该工具会在您的模组目录中创建以下内容:

Assets/Textures/Icons/

  • {atlas_name}.dds - 包含您所有单独图片的图集图片

GUI/

  • {atlas_name}_atlas.lsx - 包含 UV 映射的纹理图集信息
  • {atlas_name}_atlas.json - 图片列表快照(用于 UI 显示)

Content/UI/[PAK]_UI/

  • {atlas_name}_bank.lsx - 纹理库定义(源文件)
  • {atlas_name}_bank.lsf - 纹理库定义(已编译)

故障排除

“图集尺寸不能被 4 整除” 如果尺寸不能被 4 整除,会出现警告。这不应阻止部署,但可能导致 DDS 压缩问题。调整自定义单元格大小以修复此问题。

网格容量过小 如果您手动设置的网格对于您的图片数量来说太小,部署将失败。请增大网格尺寸或选择自动。

图片在游戏中不显示

  • 确保图集键与您在脚本或 UI 定义中引用的键匹配。
  • 仔细检查所有文件是否都已生成。

我的模组

游戏工具

  • EZ-Manipulator(用于移动、缩放、旋转角色、物品和场景的小工具)
  • Fricken FreeCam(自由移动相机)
  • MF Radio(游戏中可播放原生和下载音乐的收音机)
  • RangeFinder(可视化移动范围和攻击,规划/自动化移动)
  • Tav's Journal(创建带有照片的游戏内日志,导出和分享)
  • Tav's Clock(一个小型时钟和会话计时器,可放置在任何位置)

生活质量改进

库和外部工具

模组制作者的模组

支持此模组

如果您觉得这个模组有用,请考虑捐赠。

[!Ko-fi](https://ko-fi.com/mazzle)

另外,如果您喜欢这个模组,请查看我的另一个模组 RangeFinder。它值得您花时间学习!