奇罗的小教程合集 (o゚ω゚o)可以和各位分享的一些小技巧 对Mamehinata表情切换时简单眨眼逻辑的分析学习 本文面向初、中级创作者,假定您已经对动画控制器,动画过渡,参数都有一定了解,理解其基本的运行逻辑 研究了一下狗狗的表情动画层,发现虽然逻辑很简单,但是设计得非常巧妙简洁,思路值得学习,和大家分享。 首先这是表情层: 这是眨眼层: 狗狗先对表情做了分类,分为 闭眼表情 和 睁眼表情 两类,当闭眼表情过渡到睁眼表情时,眼睛直接睁开,不需要触发眨眼,闭眼到闭眼同理,只有当睁眼表情切换到睁眼表情时,才会触发眨眼动画。 狗狗主要使用两个参数来制作逻辑判断 Int参数 Blink :用来区分表情类别,睁眼表情播放时,使用Parameter Driver将Blink参数设置为1,闭眼表情播放时则为2) Bool参数 Blinked :根据Blink参数,用来做是否需要眨眼的逻辑判断 当播放一个表情后触发了Blink参数的改变,使动画在眨眼层发生改变,例如现在播放的是一个睁眼动画,即Blink将被设定为1 请观察眨眼层的过渡逻辑图: 最开始Blinked默认为False,当Blink=1时,动画进行一次循环,到终点后不会播放眨眼动画,但是会将Blinked设定为True,同时因为Blink在这个过程中已经被设定为0,所以动画会停留在终点,直到Blink再次被设定。 这时,如果再播放一次睁眼表情,也就是Blink=1之后,因为在先前Blinked已经在上一次动画循环中被设定为True,所以这一次将会触发眨眼动画,下一次如果仍然是睁眼表情则同理 这时,如果播放的是闭眼表情,也就是Blink=2之后,那么上一次循环中设定的Blinked=True将被清回到False,此时什么都不会发生 所以我们可以画出一个运行逻辑图,只有当Blink连续为1时,才会触发眨眼,而只要当Blink=2时,那就会使参数状态回到默认。 如此过渡逻辑,就可以看到只有当睁眼表情过渡到睁眼表情(即连续Blink=1)时,才会触发眨眼动画,而其他情况,闭眼→睁眼,睁眼→闭眼,闭眼→闭眼,都因为有闭眼表情的参与,导致参数状态回归默认,无法触发闭眼表情。 虽然尽量清楚地去分析了这个逻辑,但是如果大家手头上有狗狗化身工程文件的话,还是建议自己去实地观察一下具体的情况,甚至尝试着仿做,毕竟理论一万遍也不如实践一遍,而且狗狗的动画中值得研究和学习有很多,各位也可以自行研究一下~ 使用约束处理穿高跟鞋时与地面穿模的问题 本文面向初、中级创作者,假定您已经对变换,约束组件,动画都有一定了解,理解其基本的运行逻辑 自VRChat SDK 3.7.0 更新后,所有约束组件在上传时会自动更改为官方提供的VRC Constraint组件,您也可以使用VRC Parent Constraint组件来替换文中的Parent Constraint,不论使用哪种组件,都不会对文中所提的方法产生不必要的影响 当为模型穿上高跟鞋时,因为高跟鞋的高度原因,导致鞋子和地面穿模,所以和各位分享一个小技巧~ 如图所示,首先我们有一双默认状态下穿模的高跟鞋 如果你的模型只有一套衣服,或者全都是高跟鞋,那么只需要直接将模型的根对象Transform变换的y轴高度拉高到合适的数值即可,也就是直接拉高模型。 如果你的模型同时有高跟鞋和平底鞋,需要在切换衣服时,自动调整模型的高度以适应不同的鞋底高度,那可以按照以下方法处理 1. 添加骨骼约束 在你的模型根骨骼Armature上添加一个父约束组件,然后再在根对象内添加新建一个游戏对象,这个对象是父约束的对象,将作为模型的高度锚点 这样做的目的是为了绕过当模型开始运行起来后,模型的骨骼变换就无法被直接修改了的限制,只能通过父约束组件来间接地调整,这时,我们对模型锚点的位置改变,都将直接影响到模型本身 2. 测量数据 修改衣服的根骨骼y轴坐标(请注意是衣服的根骨骼,因为如果使用MA绑定的衣服,直接拖动模型根骨骼可能衣服不会跟上),直接高跟鞋底刚好与地面平行(如果你的场景中没有地面可以临时添加一个,添加一个平面对象在地面放平即可),然后将这个数值记录下来,在我这里这个数值为0.0112 3. 制作动画 切换到该高跟鞋的动画片段中,为它录制新的节点,进入录制模式,直接修改模型锚点的y轴坐标,然后将其中y轴的数值修改为刚刚测量得到的数值 到这里就完成了,如果还有其他的衣服有需求,那么也对其他的衣服录制一样的动画即可 有什么建议或者不懂的话,可以来社区找我~