OpenGL - 创建一个弯曲的表面

4

我已经学习了一段时间的openGL,我想创建一个带有翻页效果的书籍,但页面应该是自己“弯曲”的。所以现在我想知道如何在openGL中弯曲表面并对其进行动画处理。这听起来像是根据顶点位置而定的多个顶点着色器,不是吗?

或者也许是一个带有多个分支的单个着色器。


如果你使用的是iOS系统,你可以在这里查看,不过这段代码可能仍然很有趣。 - Stefan Hanke
3个回答

4
页面翻页是通过一个圆锥体来实现的,在“卷曲” 的不同阶段,它的半径和顶角都会发生变化。这里提供了一份iOS教程,详细介绍了相关的数学知识。原始的Xerox PARC论文可以在这里找到。

希望这可以帮助你!


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(开口角度)


什么样的曲线? 如何考虑用户触摸输入的位置? 很抱歉,但对我来说,这个答案非常含糊,因为即使简单的谷歌搜索也会得出“锥体”范例以及该效果的样本。 - Ani
如果你看一个圆锥体,你会发现它由一个绕着轴的圆形曲线组成,锥顶逐渐变细。这就是你为圆锥方法页面翻页效果所创建的曲线。以原点为锥顶,Z轴为轴的圆锥体表面由解析曲面 S(u,v) = (x*cos(u*2*pi) + y*sin(u*2*pi))*v + z*v*a 描述,其中 x、y、z 是笛卡尔单位向量,a = 2*tan(开口角) - datenwolf
我并不否认这是一条曲线,只是觉得答案有点模糊。上面的评论会对你的回答进行很好的编辑。 - Ani

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接