目标体修正工具——fixTargets

这是很早前写的一个小工具,主要是应对项目中已完成表情绑定的模型修改的情况。我们都知道,当一个头部A加载了目标体,再想对A做修正,一般方法是:复制一个新的头B,修正(比如修改眼皮),最后再通过blendshape叠加回A,并将该目标体的值始终设为1,简单的blendshape局部修正原理。但这存在一个问题,模型师用新头B模型去制作后续的目标体,于是悲剧发生,当我将新的目标体加载给A,调新目标体的变形,A被修正过的位置(比如眼皮)同样发生了变形,每调一个新目标体的值,就会发生一次变形叠加,于是多重叠加。原因是新头B相对A本是一个目标体,用B做出的一系列目标体会一次次的对A的修正位置做叠加。

正确的做法应该是将A复制出来做后续目标体。但这又给管理带来隐患,时间一长,模型师很可能分不清新旧模型,有时可能是修改幅度很小,看不出,加上版本过多,文件混乱,误操作删除等,这样来回反复,都会降低工作效率。

最好的方案,让模型和目标体始终保持最新状态。

原理:头部A,本身已加载了blendshape节点A_bs,修正体B加载进A_bs,将A_bs.B始终设为1,逐个调节A_bs里其它变形值为1,如A_bs.smile = 1,从A复制出这个修正+smile变形后的状态C,那么C就相当目标体smile的修正体,再用C去更新smile,于是得到修正后的smile,以此循环修正所有目标体,最后删除A_bs.B,将A和B重叠摆放,遍历A的顶点逐个吸附到ID号相同的B的顶点,得到修正后的A。

可见如果客户的修改意见无限多,那么工作量无疑是令人崩溃的。

fixTargets正是基于上述原理编写,可迅速将所有目标体更新至最新状态,包括in-between的目标体。并完成整理工作,执行前后除模型和目标体更新,不会残留多余节点,也不会删减场景中任何已存在的东西。

演示效果如下:

Creative Commons License
目标体修正工具——fixTargets by XRacZ, unless otherwise expressly stated, is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 Unported License.

, , , , , , , , , , , , ,