UnityShader实现翻书效果-创新互联

今天实现一个简单的翻书的效果,话不多说,先上一张效果图:

创新互联-专业网站定制、快速模板网站建设、高性价比大东网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式大东网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖大东地区。费用合理售后完善,10多年实体公司更值得信赖。

这里就随便用的一张纹理了,我们还是称为“翻木板”吧,哈哈。

Unity Shader实现翻书效果

实现过程:

其实这个效果实现起来还是挺简单的,大概思路其实就是 让所有顶点都绕Z轴旋转,并且通过正余弦使之带有一点弧度

下面开始让我们一步一步的实现该效果。

首先打开Unity新建一个工程,场景,并且创建一个名为openBookEffect的Shader文件,删掉原本多余的代码。

第一步,我们先让它绕z轴旋转起来

这里就要用到一个旋转矩阵了,让顶点左乘该矩阵,就能得到旋转之后的位置了。(ps:这里就不详细的解释旋转矩阵怎么推导来的了,有兴趣的可以去百度了解一下。)

旋转矩阵有3种:

1.绕x轴旋转:

Unity Shader实现翻书效果

2.绕y轴旋转

Unity Shader实现翻书效果

3.绕z轴旋转

Unity Shader实现翻书效果

很明显,我们这里需要用到的是第三个 绕z轴旋转的矩阵。下面我们通过代码来构建一个旋转矩阵并使之旋转一定的角度:

Properties
 {
 _MainTex ("Texture", 2D) = "white" {}
 //旋转角度
 _Angle("Angle",Range(0,180))=0
 }
 ....
 sampler2D _MainTex;
 //角度
 float _Angle;
 //顶点着色器
 v2f vert (appdata v)
 {
 v2f o;
 float s;
 float c;
 //通过该方法可以计算出该角度的正余弦值
 sincos(radians(_Angle),s,c);
 //旋转矩阵
 float4x4 rotateMatrix={ 
  c ,s,0,0,
  -s,c,0,0,
  0 ,0,1,0,
  0 ,0,0,1
 };
 //顶点左乘以旋转矩阵
 v.vertex = mul(rotateMatrix,v.vertex);
 //模型空间转换到裁剪空间
 o.vertex = UnityObjectToClipPos(v.vertex);
 o.uv = v.uv;
 return o;
 }
 ....

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


分享文章:UnityShader实现翻书效果-创新互联
文章位置:http://azwzsj.com/article/coeiic.html