我正在使用OpenGL ES 2.0开发一个图像变形iOS应用程序。
我对设置,管道等有很好的把握,现在我正在进行数学运算。
由于我对图像变形的经验是零,我正在寻求一些算法建议。
目前,我正在以网格类型的方式设置点的初始顶点,将图像均等地划分为正方形。然后,我在每个正方形的中间放置一个额外的顶点。当我绘制索引时,每个方块包含四个形状为X的三角形。请参见下图:
在玩了一点photoshop之后,我注意到adobe使用了一个稍微复杂的算法用于他们的木偶扭曲,但是更简化的算法用于他们的标准扭曲。你认为我最适合在这里申请/个人偏好?
其次,当我移动一个顶点时,我想对所有其他顶点应用加权变换以平滑边缘(而不是我在下面的位置,只有所选顶点被转换)。我应该在这里应用什么样的算法?
答案 0 :(得分:4)
由于每个顶点都是由顶点着色器独立处理的,因此顶点影响彼此的位置并不容易。但是,因为没有那么多的顶点,所以在CPU上进行工作并动态更新每帧的顶点属性应该没问题。
由于你所寻找的是你的表面就像橡皮布一样被拉动,所以如何继续实施橡胶板的动态模拟?关于全3D的布料模拟有很多好文章,例如Jeff Lander's。您的应用程序可能是这些技术的简化。我以前是implemented a simulation like this 3D。我需要一个力将我生成的顶点吸引到原始网格位置。在模拟开始之前,您可以使用类似的力将顶点吸引到生成它们的像素。这将使它们在单独放置时恢复到默认状态,并逐渐减少拖动对更远距离顶点的影响。