捏脸有两种做法,一种是利用骨骼变换,一种是利用Blend Shape。
这样直接改Bone的Transform数值就能看到变化了。
相比脸型,眼睛需要的节点数更多,因为需要针对眼球等多个物体处理,眼角长度和上挑都要可控,是捏脸骨骼最复杂的部分。
让捏脸变得人性化
虽然提供全部可变骨骼就能做出任何一种脸型,但那样只会让玩家轻易捏出怪物来。
至于这些调整数值背后的逻辑——
我选择让一个调整项同时影响多个骨骼数据,每个骨骼数据只影响某条骨骼的某个值,并且可以指定动画曲线,以应对弧面上的位移。
两者的差异和骨骼的变化强度有关,也和BlendShape的改变幅度有关,但确实在通常情况下差异不大(第三幅图是前两幅图的叠加,可以看到在脸部表情影响到的部分产生了微量的偏移)
但是即使少也是存在的。
解决方法是先将每一个BlendShape分别应用到Mesh上,再进行骨骼变换,蒙皮生成 格数据,然后再减掉Bake后的Mesh,重新生成一个新的BlendShape。
这其实相当于重做了一次BlendShape的生成过程(两个模型间求差值),数据就是完全准确的了。
下面的代码除了修正BlendShape外,还有蒙皮 格烘焙的代码实现。
[AppleScript] 纯文本查看 复制代码
/span>
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 |
|
只烘培部分骨骼
上面的是将整个头部烘培成Mesh,但有时候我们也会想保留部分骨骼(例如头发)供捏脸之外的部分使用。而如果是体型部分的自定义,就更需要仅对部分骨骼烘培的功能。
虽然看上去骨骼的多层级和多权重难以下手,实际上也没有多困难。
——只要把不需要烘培的骨骼重置回未经蒙皮变换时的状态,也就是将那些骨骼的Transform设置为对应bindposes的逆,它们就不会对需要烘培的骨骼造成影响。
[AppleScript] 纯文本查看 复制代码
/p>
1 |
bindposes本身就是Mesh空间相对于骨骼结点空间的变换矩阵……的逆,Mesh空间的顶点乘bindposes相当于将自己转换到骨骼结点所在空间,所以再做一次“骨骼 -> 世界空间变换”就能完成蒙皮,这也是上面的蒙皮代码实现的原理,实在不懂可自行查阅蒙皮相关资料。
我这里再求一次bindposes的逆,就得到了骨骼结点相对于Mesh空间的矩阵,实际上就是骨骼最开始所在的位置。将骨骼移动回这个位置,就相当于这个骨骼没有参与蒙皮,也就不会影响到其他需要蒙皮的骨骼。
设置Transform,而非直接跳过蒙皮阶段,是为了让需要烘培的结点的父结点位置正确。比起重新计算需要烘培的结点的Matrix4x4,这种方式会简单一点(但是性能确实差一些)
之后走正常的BakeMesh流程就可以了。
完成后还需要单独移除已经进行烘培,实际上已经无效的骨骼的boneWeight。所有boneWeight里涉及到那些骨骼的地方,都需要重置为骨骼的根节点RootBone的序 ,也就是0。
[AppleScript] 纯文本查看 复制代码
/em>
1 2 3 4 5 6 7 8 |
对于SkinMesh来讲,并不存在删除骨骼结点一说,不管怎么样都会至少做一次相对于根结点的骨骼变换。把所有数据都重置为0是不行的,至少要有留下一个{boneIndex0 : 0, weight0 : 1f}。
烘培完后还需要将骨骼的状态再次恢复。
不过如果是游戏运行时,其实并不需要专门重置骨骼,因为骨骼刚加载出来的时候本来就是重置好的。只要先加载捏脸的骨骼数据,烘培,修改BoneWeight,再加载其他和骨骼相关的部分,烘培和非烘培就不会有冲突了。
然而模型从哪里弄/span>
捏脸的技术难度其实就这些(烘培那段估计大部分人也不用),主要的难点还是骨骼和捏脸数据的设计。
我这个模型是从HoneySelect里扒的,它的模型数据全在abdata这个文件夹下以AssetBoundle形式存在,所以很简单就能扒出来。
但UnityStudio这些破解工具导出的文件迄今为止依然会丢失BlendShape,所以需要用UnityAPI直接读取ab文件并另存为。
HoneySelect其实也有捏脸参数的配置文件,有兴趣可以自己扒过来以节约配置参数的时间(这个恐怕才是工作量的大头)
工程地址:https://pan.baidu.com/s/1ggwsY3p#list/path=%2F
http://www.manew.com/thread-113711-1-1.html
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!