3

我想在使用 OpenGL(带着色器)的屏幕转换中做类似的事情。我一直在寻找一些教程或类似的东西,但没有任何效果。我怎样才能达到这种效果? 在此处输入图像描述

4

3 回答 3

3

只是一些关于如何开始的想法。

  1. 如果您确实从 3D 场景开始,请使用渲染目标将其渲染为纹理。
  2. 在相同大小的画布上绘制随机多边形形状*
  3. 确定每个多边形的平移/旋转的随机偏移
  4. 重绘图像,找出原始形状在哪个原始多边形中,如果是,则使用与新的随机变换多边形相同的变换来变换像素
  5. 以每个多边形周围的黑色像素边框结束*唯一的事情是,如何获得初始多边形,您可以从随机 pos 开始绘制一条具有随机方向和随机长度的线,然后从该线开始绘制另一条线,直到您点击边缘,然后从现有线的顶点开始并重复...

谷歌随机多边形代码,或对矩形 Perlin 噪声进行三角剖分,Voronoi 图(如上所述)等

于 2012-02-27T20:21:28.553 回答
1

这种破碎效果最流行的算法之一是 Voronoi 图。研究该主题将为您提供有关高度可控的算法的详细信息,并为您提供类似的效果。

但是,它会生成凸多边形作为单元格。您的图像有一些凹面,但 VD 将是一个很好的开始。例如,您可以通过合并来自 Voronoi 图的一些生成的多边形来实现类似的效果。

于 2012-02-27T20:14:02.563 回答
0

这是一种避免摆弄多边形并允许更多不同效果的方法:

只需使用面膜。我先解释一下:只画一个随机方向的主要纹理四边形,但使用第二个纹理来获取它的 alpha。第二个纹理(蒙版)只是一个黑色图像,上面画着一个白色的块。请注意,它允许具有任何形状,而不仅仅是多边形。现在,已经可以通过使用不同的蒙版多次绘制主四边形来实现您想要的效果,但这需要很多纹理。

因此,要对所有部分仅使用一个遮罩纹理,您可以使用着色器,而不是直接使用遮罩的值作为 alpha,而是使用值 N(或 N 附近的范围)来表示仅对 N 块不透明。您现在只需要在渲染每一块之前增加 N 。要创建蒙版,请使用黑色锯齿形绘制位图(使用图像编辑器),然后用调色板中的每种灰色阴影填充创建的多边形。如果您需要很多片段,您可以使用多个通道。

顺便说一句,使用位图函数生成该蒙版应该很容易:只需创建一个位图,绘制一些随机线,扫描它并在每个空像素上使用泛光填充,每次都会增加颜色。至少这似乎比处理多边形切割更简单。

现在,我喜欢的是你可以免费拥有不规则的边缘,因为你有第二个纹理,你也可以用它来在主要的纹理上添加效果,比如你的黑色边框,甚至是具有各种透明度级别的玻璃边缘。

于 2012-02-27T23:20:37.670 回答