我一直在研究openGL,我想创建一个具有翻页效果的书,但页面应该“弯曲”自己。所以现在我想知道如何弯曲表面并在openGL中制作动画。听起来像是每顶点多次着色器,取决于顶点的位置,不是吗?
或许是一个有多个分支的着色器
答案 0 :(得分:4)
将弯曲实施为曲线方程,并根据距离绑定的距离将该曲线应用于顶点位置(您可以使用额外的顶点属性)。
如果看一个锥形,你可以看到,它由一条圆形曲线(绕其轴线)组成,该曲线逐渐变细到尖端。这是您为锥形方法页面卷曲效果创建的曲线。锥形表面的尖端位于原点,其轴为Z,由分析表面描述
S(u,v) = (x*cos(u*2*pi) + y*sin(u*2*pi))*v + z*v*a
其中x,y,z是笛卡尔单位向量,a = 2 * tan(开角)
答案 1 :(得分:4)
答案 2 :(得分:0)
Hewlett-Packard有一个非常好的GLSL实现(具有抗锯齿和分析阴影)的页面卷曲效果,它是WebVfx的一部分。这是源代码:
http://rectalogic.github.io/webvfx/examples_2transition-shader-pagecurl_8html-example.html
该项目使用BSD风格的License许可。