openGL - 创建弯曲表面

时间:2012-07-10 08:35:31

标签: opengl graphics 3d shader

我一直在研究openGL,我想创建一个具有翻页效果的书,但页面应该“弯曲”自己。所以现在我想知道如何弯曲表面并在openGL中制作动画。听起来像是每顶点多次着色器,取决于顶点的位置,不是吗?

或许是一个有多个分支的着色器

3 个答案:

答案 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)

翻页实现为锥形,在“卷曲”的各个阶段改变其半径和顶角。 Here是iOS的教程,可以完成数学计算。 Xerox PARC的原始论文是here

希望这有帮助!

答案 2 :(得分:0)

Hewlett-Packard有一个非常好的GLSL实现(具有抗锯齿和分析阴影)的页面卷曲效果,它是WebVfx的一部分。这是源代码:

http://rectalogic.github.io/webvfx/examples_2transition-shader-pagecurl_8html-example.html

该项目使用BSD风格的License许可。