OpenGL ES 2.0顶点变换算法

时间:2012-03-19 20:24:58

标签: ios image-processing opengl-es-2.0 graph-algorithm texture-mapping

我正在使用OpenGL ES 2.0开发一个图像变形iOS应用程序。

我对设置,管道等有很好的把握,现在我正在进行数学运算。

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

目前,我正在以网格类型的方式设置点的初始顶点,将图像均等地划分为正方形。然后,我在每个正方形的中间放置一个额外的顶点。当我绘制索引时,每个方块包含四个形状为X的三角形。请参见下图:

opengl es image vertex map

在玩了一点photoshop之后,我注意到adobe使用了一个稍微复杂的算法用于他们的木偶扭曲,但是更简化的算法用于他们的标准扭曲。你认为我最适合在这里申请/个人偏好?

其次,当我移动一个顶点时,我想对所有其他顶点应用加权变换以平滑边缘(而不是我在下面的位置,只有所选顶点被转换)。我应该在这里应用什么样的算法?

opengl es image warping

1 个答案:

答案 0 :(得分:4)

由于每个顶点都是由顶点着色器独立处理的,因此顶点影响彼此的位置并不容易。但是,因为没有那么多的顶点,所以在CPU上进行工作并动态更新每帧的顶点属性应该没问题。

由于你所寻找的是你的表面就像橡皮布一样被拉动,所以如何继续实施橡胶板的动态模拟?关于全3D的布料模拟有很多好文章,例如Jeff Lander's。您的应用程序可能是这些技术的简化。我以前是implemented a simulation like this 3D。我需要一个力将我生成的顶点吸引到原始网格位置。在模拟开始之前,您可以使用类似的力将顶点吸引到生成它们的像素。这将使它们在单独放置时恢复到默认状态,并逐渐减少拖动对更远距离顶点的影响。