1

我正在学习如何创建镜头光晕应用程序。我已经弄清楚了大部分基本组件,现在我正在转向更复杂的组件,例如微光/闪烁/尖球,如下所示:http ://wiki.nuaj.net/images/e/e1 /OpticalFlaresLensObjects.png

或者这些:http ://ak3.picdn.net/shutterstock/videos/1996229/preview/stock-footage-blue-flare-rotate.jpg

有些人建议创建从中心向外散发的粒子,同时淡出并增大或减小大小,但我已经尝试过,嵌套循环太多,这使得性能很糟糕。

其他人建议绘制从中心白色到半径黑色的圆形渐变,并使用一些算法使区域变亮和变暗,从而产生光线。

有没有人有任何想法?我真的坚持这个。

我正在使用类似于 C 的有限编译器,但我无法访问抗锯齿、预定义形状等。一切都必须手动编码。

任何帮助将不胜感激!

4

2 回答 2

0

我找到了一些关于如何“通过代码”进行镜头光晕的示例。理想情况下,您希望这样做post-process- 意思是在完成常规渲染后,您可以进一步处理图像。

片段着色器适合这一步。我找到的最简单的版本是这个。基本思想是

  1. 识别图像中真正的亮点并可能对其进行下采样。
  2. 从片段向图像中心发射光线,并沿途对一些像素进行采样。
  3. 积累样本并对其进行进一步处理 - 色度失真等。

而且您可以使用多种选择。

另一个更常见的选择似乎是

  1. 拥有一组基本图像(圆形、六边形)并将它们渲染为一堆明亮的物体,沿着从相机到灯光的路径。
  2. 将此图像合成到场景的常规渲染之上。

问题在于确定何时打开镜头光晕,因为它取决于光线是否从相机可见/被遮挡。GPU Gems来救援,提供更好的选择。

本文列出了一个更严肃的、基于物理的实现。这是制作镜头光晕的实时版本,但您需要一个可以同时支持顶点和几何着色器的硬件。

于 2013-08-30T13:30:59.377 回答
0

我会创建大圆圈选择,然后使用径向渐变。渐变的每一侧都是白色的,但一侧具有 100% 的 alpha,而另一侧具有 0%。一旦你使用渐变工具在圆圈内绘制渐变。取消选择它并使用变换工具倾斜或在某种意义上粉碎它。然后复制它几次并转动每一个创建一个螺旋或圆形按住 Ctrl 以在需要时进行约束。然后,一旦这几层处于您想要的旋转或设计中。将它们分组到一个文件夹中,然后您可以通过另一个变换或倾斜来进一步影响它们。当您使用这些真正的 smal 时,它们就像小星星。但是你可以在创建每一个时做很多不同的事情来让它们变得不同。就像让每一个的不透明度都比上一个低等等......

于 2013-08-26T00:02:06.337 回答