加精 【赤石科技】一个关于用魔兽的等权矩阵,还原现代蒙皮权重的小巧思
如你所见,这是一个【赤石科技】,它对你可能有用,但是有用不太可能。(如果你完全看不懂我在说什么,那就说明这个技术足够赤石。)
用魔兽的等权矩阵,还原现代蒙皮权重
大家好,今天简单介绍一下,我们是怎样把现代模型的蒙皮权重转换成魔兽能够读取的形式。
现代蒙皮可以直接分配比例。比如一个顶点受到两根骨骼影响,可以设置为 A 骨骼 75%,B 骨骼 25%。
但魔兽经典 MDX 不直接保存这种百分比。它使用的是等权矩阵组:一个顶点先通过 GNDX 指向某个矩阵组,MTGC 记录这个组有几个槽位,MATS 再记录这些槽位对应的骨骼编号。魔兽会把组内所有槽位平均计算,每个槽位的权重都相同。
即:2骨骼=50%、3骨骼=33%、4骨骼=25%。以此类推

01-开场-为什么需要转换
我们的解决办法,就是把现代权重转换成等权份数。
例如 A 骨骼 75%、B 骨骼 25%,我们会在 MATS 中写成:A、A、A、B
这里一共有四个槽位,每个槽位都是 25%。A 重复三次,所以最终占 75%;B 出现一次,所以占 25%。

02-对比-现代蒙皮与魔兽等权
魔兽能够这样计算,是因为 MATS 保存的是骨骼编号列表,而不是百分比表。同一个骨骼编号可以重复占用多个槽位。我们正是利用这一点,用“重复次数”表达原来的权重比例。

03-方法-百分比转重复槽位
我们的正式方案规定,每个矩阵组最多使用 8 个槽位。能够用 8 份以内表示的比例,可以准确还原;不能完全整除的比例,就选择误差最小的近似结果。

04-原理-MDX矩阵写入结构
另外,每个 Geoset 最多使用 256 个矩阵组,因为每个顶点的 GNDX 只有一个字节,只能记录 0~255。如果不同权重组合太多,我们会在这个上限内选择最接近原始权重的矩阵组。
整个过程只改写 GEOS 中的 GNDX、MTGC、MATS 矩阵绑定,不修改骨骼动画、动作序列和模型结构。

05-限制-八槽位与256组
简单来说,我们做的不是重新制作蒙皮,而是把现代模型的“百分比权重”,翻译成魔兽能够理解的“等权矩阵槽位”,在旧格式限制内尽量保留原来的变形效果。

06-总结-权重翻译
分割线
以上就是全部内容。我还会带来更多的赤石科技!
(AI做的演示流程图,感觉还是官腔很重,大家凑合看。)