[笔记]庄懂的技术美术入门(十九)
1.顶点位移

实现原理
将顶点y分量进行sin曲线的偏移

a.#define TWO_PI 声明常量
b.void方法没有return,会直接修改inout的值
c.因为避免时间无限大frac了曲线的长度所以要乘TWO_PI来完整sin曲线
2.顶点缩放

同理

3.顶点旋转

实现原理
计算物体旋转角度之后,再将角度转化为弧度,再将弧度度转化为对应的模型空间的坐标

角度转化为弧度公式为
radY=radians(angleY);
旋转θ角后由三角函数得出两个向量坐标为(x·cosθ,x·sinθ)和(-z·sinθ,z·cosθ),然后两个向量相加得出最终点的坐标

4.AnimGhost

我们把动作拆解为如下几个部分:
a. 缩放天使圈
b. 幽灵摆动
c. 幽灵摇头
d. 幽灵起伏
e. 天使圈颜色变亮
通过顶点色来实现分别控制每个部分

缩放天使圈
x控制缩放强度,y控制缩放速度,z控制下移的距离。如果不下移,那么天使圈将会按照模型的原点进行缩放,即会在y轴上有明显的位移



幽灵摆动
因为有x和z方向上的偏移,所以需要两个变量来控制位移属性

在sin函数中,vertex.y*_SwingXParams这部分的作用是确保坐标不同的y值有不同的偏移,否者整个模型都是单调的左左右右


幽灵摇头
Z分量是为了控制天使圈和头旋转有一定的滞后,像是模拟惯性的效果

这里- color.g * _ShakeYParams.z 就是计算天使圈的滞后性


幽灵起伏


天使圈颜色变亮


代码实现


