如何像《 Ocarina of Time》的标题屏幕那样创建“火焰状”效果?


102

我想重现N64游戏《塞尔达传说:时之笛》标题画面上徽标中的那种火焰效果,如下所示:

在此处输入图片说明

快速浏览ROM中使用的纹理可提供看起来与效果相似的单个32x32纹理,但是我不知道该图像(假定是正确的)如何转换为徽标上看到的效果。

如何实现类似的功能?


2
我略微调整了您的问题,以询问如何达到类似的效果,因为我们不考虑让其他游戏如何实现特定结果的问题。
乔什

您是否还要求一种程序技术或简单的预制效果就足够了?
巴林特

我没有时间和知识来写一个完整的答案,但是也许可以通过颜色循环来完成。
Alexandre Vaillancourt

@JoshPetrie谢谢,这就是我真正
想要的

1
根据我对这项技术的记忆,最难的部分是使用适当的调色板而不是颜色本身来创建带有像素的图像。循环是通过代码在部分颜色上完成的。
Alexandre Vaillancourt

Answers:


248

首先,为徽标/文本制作一个白色对黑色的蒙版,并对其进行模糊处理。

标志的模糊形状

然后创建一个重复的(平铺的)固体噪声纹理(此处使用的是GIMP)

噪音纹理

使用Map-> Tile ...过滤器为下一步创建3x3平铺模式(在本示例中为128x128 x 3 = 384x384),以确保我们的纹理仍然可重复-我们将仅保留中心部分。

以前的图像由3平铺3

使用“模糊”->“运动模糊...”使纹理向上模糊,并仅使中心保持1/3(返回128x128)

噪音加运动模糊

两个纹理在GPU上相乘,并将其用于不透明度。

面罩结合噪音

然后通过将图案纹理向上移动到蒙版纹理上方来对其进行动画处理:

面罩结合移动噪音

完成动画部分。

然后您可以应用渐变贴图(黑色->红色->黄色->白色)为其赋予火彩:

徽标形状与火的颜色

可以使用其他颜色来产生可怕的蓝色火焰,浅黄色的光环场,更烟熏的效果等。

现在,如果将其作为徽标和3D渲染上的添加剂结合使用,则会获得所需的效果:

背景+ 商标+ 火=在背景的火焰状徽标

通过将蒙版和/或图案亮度,和/或顶点颜色和/或渐变颜色映射调整到设计水平,可以使效果变暗。

您甚至可以以不同的速度和方向同时使用两个纹理图案(遮罩*火模式*火模式)来创建更复杂的火效果。


从技术上讲,由于N64在纹理方面的硬件限制,他们可能使用三角形网格和顶点颜色而不是蒙版纹理创建了近似的蒙版,但最终结果是相同的((顶点颜色*图案纹理)vs(蒙版纹理*图案纹理))。

顶点颜色模型

我们仍然可以使用顶点颜色,但是20年后,我们可以使生活更轻松,只需使用2种或更多纹理,即使今天的移动GPU都可以毫无问题地处理额外的256x128灰色纹理。


3
我认为我们有一个赢家-感谢@StephaneHockenhull,这正是我一直在寻找的技术
nathanburns 17-10-25

7
圣牛,这是一个很好的答案!
约翰·戈登

1
“可怕”还是“幽灵”?
CJ丹尼斯

1
它还具有“令人讨厌的外观”的含义。“别系那条领带,那太可怕了”。我将您的句子解释为“其他颜色可能会产生非常不好的效果或冒烟的效果”。即使没有如您所愿,“幽灵般”也毫不含糊。
CJ丹尼斯

1
我希望我能再次恳请您认真画画。
识别器

2

您可以通过几种方法来做到这一点,但要高枕无忧,

1)将火焰+徽标全部融合到一张图片中,并从本质上将子板动画化。

2)在UI层中渲染徽标,并在其周围放置一些UI层粒子效果。

从该图像的外观来看,好像有3层盾牌,剑,火焰和文字(从后到前排序)。

有很多方法可以达到类似的效果,而您选择的方法取决于您正在开发的引擎以及能够实现的引擎。


0

如果ROM包含小的火焰纹理,那么我想这是通过某种粒子效果完成的。

首先在屏幕上放置标题和徽标的精灵即可。然后,在标题精灵后面放置一些会产生火焰效果的粒子发射器。也就是说,它们的Z /屏幕深度使它们在标题后面呈现。

这是一个使用GameMaker粒子效果创建火焰的示例,可能使您对这种方法的潜力有所了解...

http://martincrownover.com/gamemaker-examples-tutorials/particles-fire/


感谢您的建议-假设纹理与您所链接的教程中的纹理不同,而是将32x32空间填充为不透明,是否有明显的方法可以对粒子进行处理?
nathanburns

如果原始粒子不具有透明度,则只为粒子创建自己的火焰纹理。我在这里的假设是,除非原始标题是使用完整的动画精灵(包括火焰效果)完成的,否则它可能是粒子效果。
蒂姆·霍尔特

@TimHolt您可能高估了Nintendo 64的硬件功能。以这种方式生成“实心”外观的火焰效果可能需要比硬件能够渲染的粒子更多的粒子。
duskwuff

1
@duskwuff-是的,但是我不认为用户是在旧硬件上实现的。对于任何体面的(现代)系统,答案仍然是有效的。
蒂姆·霍尔特

@duskwuff的问题是现在如何实施。有关其他游戏如何做某事的问题(和答案)不在这里。N64的硬件功能在这里无关紧要。(请参见Josh Petries对问题的评论)
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.