【问题标题】:Metallic sparkle effect in OpenGL ES?OpenGL ES 中的金属闪光效果?
【发布时间】:2011-02-10 04:23:21
【问题描述】:

我正在开发一个 Android 和 iPhone 应用程序。我正在为粒子系统在屏幕上渲染许多小的(约 32 像素)广告牌,并希望为每个广告牌提供类似闪光的闪光,例如当粒子下落时,随机的粒子会在捕捉到光线时短暂地亮起并闪闪发光。有没有一种简单的方法可以达到这种效果?作为限制,我不能使用像素/顶点着色器。

我的想法是为每个广告牌提供类似金属的照明效果(虽然我不确定如何做这部分),同时为每个广告牌提供一个随机且不断旋转的法线,并带有平坦的阴影,这样每个广告牌广告牌会随机亮起。我很难让它看起来不错。

【问题讨论】:

  • 这有点像“教我 OpenGL”的问题。没有人可以为您提供一些简单的解决方案,而无需实际为您编写代码。
  • 我认为这不公平;我没有要求任何人教我 OpenGL,也没有要求提供代码。鉴于没有像素/顶点着色器的限制(我找到的每个教程都涉及),我要求提供一些高级提示,说明我可以使用哪些技术来模拟这种效果。像“使用这样的纹理......像这样设置闪电”这样的高级操作就可以了。我不期待一个确切的解决方案,只是一些我可以尝试的指针。

标签: iphone android graphics opengl-es


【解决方案1】:

免责声明:我不了解 OpenGL,实际上我并没有尝试我在下面写的任何东西。

您可以使用另一种“明亮的”纹理并在法线接近“发光”位置时替换它。

取一块金属并旋转它。一旦法线接近“全亮”位置,金属会发出更亮的光,并有柔和的反射穿过它,中间有一道明亮的闪光,然后又暗淡了。

如果可以,请应用第二个明亮纹理的窄“反射”带,并将其移动穿过处于接近发光位置的广告牌表面,并相应地将它们移动到正常角度。当法线位于发光位置 (± epsilon) 时,应用“全发光”纹理。

此外,除非您的盘子在真空中飞行,否则由于大气会产生光晕。在其后面添加一个比板大 50% 的矩形,并为其应用半透明光晕纹理,使其靠近边缘变得完全透明。您只需要在充满光芒的时刻使用它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-31
    • 1970-01-01
    • 1970-01-01
    • 2012-12-20
    • 1970-01-01
    • 2012-04-23
    相关资源
    最近更新 更多