8

我正在用OpenGL ES 2.0开发图像变形iOS应用程序。OpenGL ES 2.0顶点转换算法

我对设置,管道等有很好的把握,现在正在向数学方向发展。

由于我对图像变形的经验是零,我正在接触一些算法建议。

目前,我设置网格类型时尚点的初始顶点,它将图像平分为正方形。然后,我在每个方块的中间放置一个额外的顶点。当我画的索引,每个方格中包括了在X的形状四个三角形见下图:

opengl es image vertex map

用Photoshop打一点后,我发现Adobe使用一个稍微更复杂的算法自己傀儡翘曲,但它们的标准翘曲更简单得多。你认为最适合我在这里申请/个人喜好的是什么?其次,当我移动一个顶点时,我想对所有其他顶点应用加权变换以平滑边缘(而不是我下面只有选定顶点被变换的位置)。我应该在这里应用什么样的算法?

opengl es image warping

+0

即时通信同样的问题。你得到解决方案吗?你是怎么用它的?请帮助我 – 2012-08-30 10:26:32

+1

对不起,但它是一个雇主的工作,所以我不能分发代码。操作touchesmoved方法中的顶点结构。当您操作顶点时,根据它们与您设置为“锚点”的某些点的距离以及屏幕墙壁的距离为其分配权重。锚可以放在任何地方;例如,我固定瞳孔以防止眼睛移动。如果权重为0,那么顶点不受影响。如果权重为1,则应用完整转换。新x =(水平变换*权重),新y =(垂直变换*权重)。等等 – 2012-08-30 13:26:24

+1

谢谢............... – 2012-08-31 04:14:32

回答

4

由于每个顶点由顶点着色器独立地进行处理,这是不容易有顶点相互影响的位置上。然而,因为没有太多的顶点,所以在CPU上完成工作并且动态地更新每帧的顶点属性应该没有问题。

由于您正在寻找的是为了让您的表面像橡胶板一样被拉动,因此如何继续并实施橡胶板的动态模拟?全3D布料模拟有很多优秀的文章,如Jeff Lander's。您的应用程序可能是对这些技术的简化。我以前在3D中使用过implemented a simulation like this。我需要一个吸引我生成的顶点到他们原来的网格位置的力量。在模拟开始之前,您可能会有一个类似的力吸引顶点到它们生成的像素。这将使它们在单独放置时回弹到其默认状态,并逐渐减少在更远的顶点拖动的影响。