纸张折叠
Page Fold
纸张折叠效果也是很常见了,做系统的应该大概率都会遇到,简单的从思路和原理记录一下。
思路
- 肯定是两个 Pass,设置一个角度的参数,然后一个 Pass 渲染正面,一个 Pass 渲染背面。然后在 Pass 里面根据角度决定渲染顶点的位置和是否被显示。
- 根据上面的效果图,先求第一个 Pass 里面的横纵坐标
1 | x = r * cos(angle); |
- 此时这个横纵坐标要先赋给拿到的模型坐标,然后再转为世界坐标。
- 第二个 Pass 肯定要渲染背面了,所以要
1 | Cull Front |
- 代码逻辑还是一样的,不过用背面的图片。
边界限定
在我一开始没考虑角度边界的时候得到了这样的效果:
其实这是个很傻缺的问题,不要把折叠的角度设置为0,设置 Range 范围为 (1,180) 就好了,这样第二个 Pass 就会显示在上面。
翻页的长度
仔细看的话会发现如果不给半径增加一个可调节值,他默认是在模型的中心点翻页的,所以增加一个可调节值,就可以实现整张纸的翻页了。
All articles on this blog are licensed under CC BY-NC-SA 4.0 unless otherwise stated.