可以在不改变模型的情况下,采用了曲面材质效果来使跑酷赛道更加多变有趣
1.实现一个与我们的观察点相关的模型变形,既然只是变形,并不涉及到颜色的变化和处理,那么需要处理的就只有顶点着色器部分,并不涉及片段着色器。
2.在 Shader 中,通过顶点着色器即可完成对模型顶点位置的操作。
明确了是对顶点位置进行操作后,我们将摄像机所在的点定为原点。
由于我们的摄像机是固定在人物背后,且赛道始终保持向 Z 轴负方向延伸,所以可以将模型与摄像机的 Z 轴方向的距离看作函数的输入值,想要得到曲面的效果,模型的点的变化规律如下:
距离原点越远的点产生的偏置值越大(函数在区间内为增函数)
距离原点越远的点偏置的变化速度越快(函数的导数为一次函数)
由上述两条规律不难得出,二次函数的变化规律与我们想要实现的曲面效果的规律契合,所以我们的顶点着色器的运算为一个关于顶点位置 Z 值的二次函数运算。
我们刚刚得出的规律是建立在一个特定空间下的,即以摄像机为原点的空间,这个空间正是空间变换中的观察空间阶段,所以我们之后对顶点的操作正是在这个空间中进行才能够得到正确的结果。
学习链接: https://forum.cocos.org/t/cocos-creator-3d/87689