Skip to content

Repository files navigation

VRChat Avatar FBX Optimizer

将多骨架与未充分利用的 UV 整理为合并骨架和 Atlas UV

Portable checks License: MIT

English

VRChat Avatar FBX Optimizer(内部工作流标识为 Avatar Opt V2)用于把从 VRChat 或 Unity 导出的 Avatar FBX/Blend 文件整理成经过独立验证的单骨架 Blender/FBX 交付物。仓库同时保留完整的 Agent skill;当一键流程遇到新模型兼容性问题时,Agent 可以读取失败证据、修复流程并重新通过同一套验证,而不是绕过失败门槛。

这是非官方社区工具。请保留源文件备份,并在 Blender 与 Unity 中复核最终结果。

与 Blender-Safe Exporter 的关系

本仓库就是 BlenderSafeAvatarFbxExporter README 中提到的配套 FBX 后处理工具。两个仓库负责同一工作流中的不同阶段:

  1. BlenderSafeAvatarFbxExporter 在 Unity 中把 Modular Avatar Manual Bake 结果安全导出为 Blender 兼容 FBX,重点保留 Rest Pose、BlendShape、蒙皮权重与贴图。
  2. 本工具接收导出的 FBX(也支持普通 FBX/Blend),继续执行安全拓扑清理、重复骨架与蒙皮权重合并,并可选择保留原 UV 或构建和重烘焙语义 Atlas。

推荐流程为 Unity / Modular Avatar -> BlenderSafeAvatarFbxExporter -> VRChatAvatarFBXOptimizer -> Blender / FBX。本工具也可以独立处理其他来源的 VRChat Avatar FBX/Blend。

两个处理入口

模式 Windows 拖放入口 处理范围 默认输出目录
不做 Atlas Drop_Avatar_Here_NO_ATLAS.cmd 安全拓扑清理、骨架合并、导出与独立验证;保留原有 UV/材质布局,不运行任何 Atlas 打包或贴图重烘焙业务。 <名称>_AvatarOptV2_NoAtlas
完整 Atlas Drop_Avatar_Here_WITH_ATLAS.cmd 在相同的几何与骨架流程之后,修复有证据的 UV 问题、构建语义 Atlas、重烘焙 PBR 通道、导出并验证。 <名称>_AvatarOptV2_Atlas

两个模式都不会修改源文件,也不会覆盖非空输出目录。默认目录已经存在时,会自动创建带时间戳的新目录。

不做 Atlas 模式会保留源材质和图片引用,但不会把外部源贴图自动复制成自包含交付物。完整 Atlas 模式会在输出目录中生成协调一致的 ColorAlpha、Normal、ORM 与 Emission 贴图。

环境要求

  • 拖放入口与自动便携 Blender 安装支持 Windows 10/11 x64。
  • Blender 4.2 LTS 或更新版本。工具会先查找 --blenderBLENDER_BIN、旁置便携版、PATH 和标准安装目录,全部找不到时才下载。
  • 直接运行 Python 脚本需要 Python 3.10 或更新版本。Windows 启动器在独立 Python 也不存在时,可以先安装 Blender,再使用 Blender 自带 Python。
  • 完整 Atlas 模式需要足够空间保存临时 Blend、渲染、FBX 与 4096 分辨率贴图页。

不需要安装第三方 Python 包;bpy 与 FBX 导入导出器由 Blender 提供。

自动安装便携 Blender

Windows x64 找不到任何 Blender 时,会从 https://download.blender.org 自动下载固定的 Blender 4.2.23 LTS 便携 ZIP。压缩包大小为 383,193,007 字节,安装至少需要 2 GB 可用空间,最终放在工具旁的 runtime/blender-4.2.23-windows-x64/;整个 runtime/ 不会进入 Git。

下载器只接受 blender-runtime.json 中固定的 HTTPS 主机、文件名、字节数与 SHA-256,并限制 ZIP 文件数量和解压总体积,拒绝路径穿越与符号链接,要求存在预期可执行文件,在临时目录完成检查后才安装。中断或失败的下载不会被下次误认为可用 Blender。

使用 --no-blender-download 或设置 AVATAR_OPT_DISABLE_BLENDER_DOWNLOAD=1 可以禁止联网;AVATAR_OPT_RUNTIME_DIR 可以更改便携版位置。其他操作系统仍需自行提供 Blender。

一键使用

  1. 下载或克隆仓库。
  2. 将一个或多个 .fbx / .blend 文件拖到两个模式入口中的一个。
  3. 第一次运行且没有 Blender 时,等待官方下载与解压完成。
  4. 等待处理与独立验证完成。
  5. 只有当 validation-report.json 中的 acceptedtrue 时才接受结果。

完整 Atlas 模式需要执行 UV 搜索、贴图烘焙、渲染、FBX 导出、FBX 回读与视觉比较,复杂模型可能耗时较长。

命令行

# 只分析,不修改源文件
.\avatar-opt.cmd analyze avatar.fbx

# 保留原 UV/材质,不做 Atlas
.\avatar-opt.cmd process avatar.fbx --no-atlas

# 进行 4096 Atlas 重烘焙
.\avatar-opt.cmd process avatar.fbx --resolution 4096

# 使用交付目录中冻结的配置重新验证
.\avatar-opt.cmd validate avatar.fbx --delivery avatar_AvatarOptV2_Atlas

# 必须使用已有 Blender,禁止联网下载
.\avatar-opt.cmd analyze avatar.fbx --no-blender-download

旧参数 --rig-only 继续作为 --no-atlas 的兼容别名。需要覆盖默认配置时使用 --config;最终生效的合并配置会写入每个输出目录。

一键失败后由 Agent 接管

完整 skill 位于 skill/optimize-vrchat-avatar-v2,其中包含主机 CLI、Blender worker、几何/骨架/UV/烘焙/验证代码、策略参考与 Agent 元数据。

安装或更新 Codex 使用的本地副本:

powershell -ExecutionPolicy Bypass -File .\scripts\install-agent-skill.ps1
# 更新时会先把旧副本改名为带时间戳的备份:
powershell -ExecutionPolicy Bypass -File .\scripts\install-agent-skill.ps1 -Update

然后新建一个 Codex 任务,调用 $optimize-vrchat-avatar-v2,并提供源模型路径与失败输出目录。Agent 必须保持原来的 Atlas/No-Atlas 模式,不能通过降低验证标准来制造“成功”。详细流程见 失败接管说明

验证原则

  • 根据素体躯干与双侧四肢的实际蒙皮证据选择主骨架,而不是仅凭标准命名或衣物权重数量。
  • 保留独有的衣物、饰品、头发、裙子、袖子、挂点和物理骨骼。
  • 在删除重复骨骼或辅助节点前完成权重、修改器、父子关系、约束和动作路径的迁移。
  • 只焊接经过完整等价证明的顶点,并拒绝任何恶化拓扑的结果。
  • No-Atlas 模式不进入 UV/Atlas 流程;Atlas 模式只修复有直接证据的无效区域,并执行重叠、退化、碎片化与纹素密度门槛。
  • 对保存后的 Blend 和重新导入的 FBX 比较拓扑、权重、层级、静止变换、姿态、保留 Empty 语义与外观。
  • 每次运行记录源文件 SHA-256、生效配置、分析、处理、验证和日志。

精确行为契约见 SKILL.md骨架策略UV 策略

兼容性边界

v2.8.0 在私有兼容性语料中发现并接受了全部 16 个 FBX/Blend 用例,覆盖几何清理、骨架合并、完整 Atlas 构建、Blend 保存与独立 Atlas 验证。该轮使用 atlas-only 阶段,因此没有把全部 16 个用例宣称为已经完成贴图烘焙、视觉比较、FBX 导出与 FBX 回读。具体范围和测试方式见 兼容性与测试

发布前检查

python scripts/check_release.py
python tests/test_config_validation.py
python tests/test_public_entrypoints.py
python tests/test_blender_runtime_bootstrap.py
pwsh -NoProfile -File tests/test_blender_bootstrap.ps1
python -m compileall -q skill tests scripts

发布检查读取 Git 的候选文件集合,所以本地被忽略的模型和历史输出可以继续留在目录中。首次提交前仍应执行 git status --short 并确认没有任何受版权保护的模型、网格、贴图、交付目录或包含私人绝对路径的报告。

许可证

MIT,见 LICENSE

About

Post-process VRChat avatar FBX/Blend files into a validated single-armature delivery, with optional semantic UV atlas rebaking.

Topics

Resources

Contributing

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages