4

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

或者可能是具有多个分支的单个着色器

4

3 回答 3

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(张角)

于 2012-07-10T10:14:40.323 回答
4

翻页被实现为一个圆锥体,它在“卷曲”的各个阶段改变其半径和顶角。是一个介绍数学的 iOS 教程。Xerox PARC 的原始论文在这里

希望这可以帮助!

于 2012-07-10T13:51:29.637 回答
0

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

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

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

于 2014-04-07T16:21:29.127 回答