下载 App
纸娃娃骨骼换装系统
修改于04/11115 次播放开发交流
系统简介
本系统是一套 2D 骨骼动画 + 自由换装方案,类似 Live2D / Spine 的轻量版。角色由 30 多个独立部件(头、身体、四肢、头发、衣物等)组成,通过父子关系形成骨骼树。子部件自动继承父部件的旋转、位移和缩放,产生自然的连锁运动。
系统分为 Python 离线合成和 Lua 实时渲染两端,共享相同的数学模型,保证输出一致。
骨骼树与部件
每个部件有五个属性:名称、图层(决定前后遮挡顺序)、父部件、旋转中心(pivot)和边界框(bbox)。根部件是"身体",头部、臀部、手臂挂在身体上,大腿挂在臀部下,小腿挂在大腿下,衣物鞋袜再挂到对应肢体上。整棵树最深 4 层,结构简洁但足以表达自然动作。
所有素材统一在 512x512 画布空间中定位。部件只绘制 bbox 区域,其余透明。
骨骼链变换
核心算法:每个部件先移到 pivot 原点做缩放和旋转,再移回原位加偏移。有父部件时,从根到自身依次累乘所有祖先的变换矩阵。例如鞋子的最终位置 = 身体 x 臀部 x 大腿 x 小腿 x 鞋子自身的变换。身体下沉时所有子部件自动跟随。
四方向与图层
系统支持正面、背面、右侧、左侧四个方向,正面和背面共用一套部件定义(31 个),右侧和左侧共用另一套(35 个)。左方向复用右侧数据,最终整体水平翻转。
不同方向下,部分部件需要调整图层顺序或隐藏。例如背面时后发提到最顶层、眼睛隐藏;侧面时后发提到头部之上、外套主体换成侧面片。
换装系统
换装通过 Loadout 字典控制,共 10 个槽位:眼睛、腮红、后发、前发、外套、裤子、鞋子、衬衫、裙子、袜子。每个槽位可选不同变体或留空。
组装时先加载 14 个裸体基础部件,再按 Loadout 逐个覆盖对应方向的装备素材。一个槽位可能映射多个部件(如外套同时提供主体和袖子共 5 张图)。
动画系统
有正面和侧面各两套动画(待机 2 秒、行走 0.8 秒),通过关键帧定义每个部件的旋转、位移和缩放,帧间用 smoothstep 平滑插值。侧面视角下远侧肢体缩小到 0.96 模拟透视深度。
梯形变形
行走时对头发和裙摆做逐行水平缩放,模拟柔体飘动。全梯形让底边变宽或变窄(用于后发、前发),半梯形加入左右渐变让一侧鼓出(用于裙摆)。变形量随动画进度做正弦/余弦周期变化,不同发型有不同飘动幅度。
素材规范
所有素材为 512x512 透明 PNG,按类型分 13 个子目录存放。基础部件以序号命名,变体以序号加角色名命名。
(旧帖子已经删了,不知道为啥被移到灌水区了)










