概述
之前是使用OpenGL练习图形学项目的,现在要转向在Unity 3d中练习图像学项目。由此,才有了这一系列的项目。本篇将从比较简单的顶点动画说起,开启图形学的篇章。
原理
主要的原理,就是在顶点着色器中,对顶点进行各种偏移。这种偏移,可以根据自己的需要,在模型空间、世界空间、裁剪空间等空间中进行。
1、压扁效果
开放两个属性,TopY和BottomY,代表物体的上部和底部(世界空间中的数值)。再开放一个滑动属性用来控制顶点运动的幅度。
以TopY为基准,先计算出每个顶点的世界坐标,然后对顶点的Y坐标进行归一化处理。
float GetNormalizeDist(float worldY)
{
float range = _TopY - _BottomY;
float distance = _TopY - worldY;
return saturate(distance / range);
}
然后使用Control滑动属性控制相应的顶点进行位移。(在模型空间移动,之后再转到裁剪空间。)
float3 positionWS = TransformObjectToWorld(input.positionOS.xyz);
float normalizeDist = GetNormalizeDist(positionWS.y);
float3 localNegativeY =