纸娃娃骨骼链换装系统 - 技术文档(详细版,包括代码)

04/11129 浏览开发心得
目录
系统概述
架构全景
骨骼定义与部件体系
骨骼链变换原理
图层排序与方向系统
换装系统(Loadout)
动画系统
梯形变形(Trapezoid Deformation)
horizontal linehorizontal line
1. 系统概述是什么纸娃娃骨骼链系统是一套 2D 骨骼动画 + 换装 的完整方案,类似 Live2D 或 Spine 的简化版本。角色由多个独立部件(头、身体、四肢、头发、衣物等)组成,每个部件有独立的图层、旋转中心(pivot)和父子关系(骨骼链),通过关键帧动画驱动产生流畅的角色动作。
核心能力
TapTap
两套运行环境
TapTap
horizontal linehorizontal line
2. 架构全景
TapTap
horizontal linehorizontal line
3. 骨骼定义与部件体系
3.1 部件定义结构
每个部件包含以下属性:
TapTap
3.2 骨骼树(正面视图)
TapTap
3.3 方向特定定义
系统维护两套独立的部件定义:
TapTap
侧面特有部件:
coat_side_back — 外套侧面后片
coat_side_front — 外套侧面前片
coat_side_deco — 外套侧面装饰
backhair_top — 后发顶部(侧面可见的上层后发)
fronthair_bottom — 前发底面(侧面可见,渲染在头部之下)
左方向处理:复用 PART_DEFS_RIGHT,合成时整体水平翻转(flipH = True)。
horizontal linehorizontal line
4.2 骨骼链累积
子部件的最终变换 = 所有祖先的变换依次累积:M_final = M_root × M_parent × ... × M_self
代码实现:
TapTap
4.3 NanoVG 渲染端的等价实现
Lua 运行时通过 NanoVG 的变换栈实现相同效果:
TapTap
这与矩阵乘法 T(p+t) × R × S × T(-p) 数学上完全等价。
TapTap
TapTap
TapTap
TapTap
TapTap
8. 梯形变形(Trapezoid Deformation)
8.1 概述梯形变形是一种柔体模拟效果,用于让头发、裙摆、外套下摆等在行走时产生自然的飘动感。与骨骼旋转不同,它作用于部件内部像素,改变形状而非整体位置。
8.2 全梯形变形(trapezoidScale)
原理:对 bbox 区域内的每一行做不同的水平缩放。顶部保持不变,底部缩放最大。
TapTap
猜你想搜
taptap 制造换装系统架构
12
9
5