行业资讯
📅 2026/8/29 19:00:43
Unity Blend Tree 权重计算与混合算法深度解析
开场如果你已经会用 Blend Tree 做"站走跑"和"八方向移动",那大概率也踩过这类坑:角色从 Idle 到 Walk 再到 Run 都挺顺,一旦叠加 Strafe 横移,脚就开始在地面滑动。很多人第一反应是怀疑权重算错了——"Speed 都大于 0 了,Idle 怎么还有残留权重?"先把结论说在前面:1D Blend Tree 的权重算法是分段线性插值,参数离开某个区间后,该区间的动画权重严格为 0,不存在"残留"。脚滑的真正根源几乎总是另外两件事:各动画步频相位没同步,或者Root Motion 与代码位移双写。要定位这类问题,就得搞清楚 Blend Tree 的权重到底是怎么算的、混合管线按什么顺序执行。先交代一个事实边界,免得后面误导你:Unity 官方文档只定义了各混合模式的行为语义,并没有公开权重计算的精确实现公式。下文会明确区分"文档确认的行为"与"业界通用的参考实现"——后者用于解释原理和跨引擎复刻,不代表逐行还原 Unity 内部代码。一、1D Blend Tree:分段线性插值(文档行为)1.1 算法1D Blend Tree 的输入是单个 float 参数(Speed、Direction 等),每个子动画在参数轴上占一个 Threshold。文档确认的行为是:参数落在哪个区间,就只在该区间两端的动画之间做线性插值;范围之外取端点动画。// 1D Blend Tree 权重计