Skip to content

换装管线闭环设计

设计虚拟人物换装资源管线的完整闭环:从资源制作 → 打包配置 → 运行时加载 → 换装切换。

背景

B 站虚拟形象支持用户自由搭配衣服、裙子、翅膀、头发等部件。和传统游戏的"预设套装"不同,这里的换装是任意组合——每个部件独立建模、独立加载、运行时拼接。

整体架构

资源制作端(美术)→ 资源管线(工程化)→ 配置系统 → 运行时加载 → 换装引擎

各环节设计

1. 资源制作规范

骨骼标准

  • 所有部件使用同一套骨架(统一命名、统一层级)
  • 禁止美术在部件模型中添加独立骨骼

蒙皮标准

  • 每根骨骼最多影响 4 个顶点(移动端限制)
  • 蒙皮权重总和 = 1.0

2. 打包配置

部件配置 JSON:
{
  "id": "w_skirt_001",
  "type": "skirt",
  "slot": "bottom",
  "model": "w_skirt_001.glb",
  "textures": ["tex_default.ktx2"],
  "bones": ["Hips", "Spine"],
  "collision": "none"
}
  • 槽位系统:身体(body) / 上衣(top) / 下装(bottom) / 头发(hair) / 翅膀(wing)
  • 互斥规则:裙子(skirt) 和 裤子(pants) 互斥(同属 bottom 槽位)
  • 依赖检查:翅膀依赖身体模型的背骨节点

3. 换装管线

用户选择部件 → 检查槽位互斥 → 请求下载模型 → Draco 解压 → KTX2 上传 GPU
  → 合并骨骼 → 更新 SkinnedMesh → 换装完成

骨骼合并

核心难点:不同部件的骨骼是独立的,需要合并到同一个 Skeleton

身体骨骼 (60 bones) + 裙子骨骼 (5 bones,引用身体的 Hips, Spine) 
  → 合并为 65 bones 的统一 Skeleton
  → 裙子 Mesh 重新绑定到合并后的 Skeleton

运行时性能

  • 首次换装:下载 + 解压 + 骨骼合并 ≈ 1-2s
  • 再次换同一部件:缓存命中,< 100ms
  • 连续换装:无内存泄漏(修复后)

可视化管线

(架构图和流程图的原始素材在 docs/素材/哔哩哔哩/换装捏人/换装/

  • 换装管线闭环设计.png
  • 换装资源管线操作说明.png
  • 合并骨骼.png
  • 蒙皮与骨骼.png

专利

  • Standard BiliBili CA 虚拟人物换装标准
  • BliBli 2D 和 3D 虚拟人物换装资源管线
  • 移动端基于 Unity 虚拟换装多人同屏高并发优化

闭环管线架构图说明

这张图描述从换装配置到 Unity 调试预览的完整闭环:

左侧:配置生产链路 产品需求 → 制作数据 → 维护数据、种类配置、部件配置 → 导入 Excel 并制作配置 → 数据可视化(角色构建表、种类构建表、模型部件构建表)→ 自动化生成换装配置工具 → 生成运行时数据(部件模型 fbx→prefab、角色 prefab、各类 ScriptableObject 配置)。

右侧:调试预览链路 拖入角色 → 勾选开启调试 → 播放后预览。以"裙子"为例:修改种类里的默认裙子 → 点击更新部件数据 → Game 视图刷新角色服装。

闭环点:配置生成 → Unity 预览 → 修改默认部件或配置粒度 → 再更新预览。

公开版深化

案例定位

换装管线闭环设计不是孤立笔记,而是渲染与图形能力下的一个可复用案例。它服务于“性能治理与稳定性优化”这条主线,公开版重点保留问题抽象、工程取舍和可复用方法,不暴露内部系统细节。

关键问题

设计虚拟人物换装资源管线的完整闭环:从资源制作 → 打包配置 → 运行时加载 → 换装切换。

这篇文章已经覆盖 背景、整体架构、各环节设计、可视化管线、专利、闭环管线架构图说明。后续阅读时应重点看三件事:问题如何被定义,方案如何在约束下落地,以及哪些经验可以迁移到下一次类似项目。

企业级产出

产出公开表达
问题定义用用户体验、性能、稳定性或交付效率描述影响
技术方案保留架构、流程、算法和工具链层面的抽象
指标证据只使用页面已有数字或经过脱敏审查的量级
复用方法沉淀为 SOP、检查清单、图谱关系或后续案例链接

指标与证据

  • 每根骨骼最多影响 4 个顶点(移动端限制)
  • 首次换装:下载 + 解压 + 骨骼合并 ≈ 1-2s
  • 再次换同一部件:缓存命中,< 100ms

复盘结论

这个案例的核心价值,是把一次具体工程处理沉淀成可检索、可复盘、可继续扩展的技术资产。没有公开证据支撑的细节继续留在私有材料池,不进入线上页面。

公开版深化

案例定位

换装管线闭环设计不是孤立笔记,而是渲染与图形能力下的一个可复用案例。它服务于“性能治理与稳定性优化”这条主线,公开版重点保留问题抽象、工程取舍和可复用方法,不暴露内部系统细节。

关键问题

设计虚拟人物换装资源管线的完整闭环:从资源制作 → 打包配置 → 运行时加载 → 换装切换。

这篇文章已经覆盖 背景、整体架构、各环节设计、可视化管线、专利、闭环管线架构图说明。后续阅读时应重点看三件事:问题如何被定义,方案如何在约束下落地,以及哪些经验可以迁移到下一次类似项目。

企业级产出

产出公开表达
问题定义用用户体验、性能、稳定性或交付效率描述影响
技术方案保留架构、流程、算法和工具链层面的抽象
指标证据只使用页面已有数字或经过脱敏审查的量级
复用方法沉淀为 SOP、检查清单、图谱关系或后续案例链接

指标与证据

  • 每根骨骼最多影响 4 个顶点(移动端限制)
  • 首次换装:下载 + 解压 + 骨骼合并 ≈ 1-2s
  • 再次换同一部件:缓存命中,< 100ms

复盘结论

这个案例的核心价值,是把一次具体工程处理沉淀成可检索、可复盘、可继续扩展的技术资产。没有公开证据支撑的细节继续留在私有材料池,不进入线上页面。

公开版深化

案例定位

换装管线闭环设计不是孤立笔记,而是渲染与图形能力下的一个可复用案例。它服务于“性能治理与稳定性优化”这条主线,公开版重点保留问题抽象、工程取舍和可复用方法,不暴露内部系统细节。

关键问题

设计虚拟人物换装资源管线的完整闭环:从资源制作 → 打包配置 → 运行时加载 → 换装切换。

这篇文章已经覆盖 背景、整体架构、各环节设计、可视化管线、专利、闭环管线架构图说明。后续阅读时应重点看三件事:问题如何被定义,方案如何在约束下落地,以及哪些经验可以迁移到下一次类似项目。

企业级产出

产出公开表达
问题定义用用户体验、性能、稳定性或交付效率描述影响
技术方案保留架构、流程、算法和工具链层面的抽象
指标证据只使用页面已有数字或经过脱敏审查的量级
复用方法沉淀为 SOP、检查清单、图谱关系或后续案例链接

指标与证据

  • 每根骨骼最多影响 4 个顶点(移动端限制)
  • 首次换装:下载 + 解压 + 骨骼合并 ≈ 1-2s
  • 再次换同一部件:缓存命中,< 100ms

复盘结论

这个案例的核心价值,是把一次具体工程处理沉淀成可检索、可复盘、可继续扩展的技术资产。没有公开证据支撑的细节继续留在私有材料池,不进入线上页面。

企业级技术案例库 · 内容先审计再发布