导入图像

为什么导入它们?

在 Godot 3+ 中,图像文件不再是本地资源,它们必须被导入。这背后的原因是可以导入图像文件的大量配置参数。

这个小教程将解释这些参数是什么以及如何最好地利用它们。

导入纹理

Godot 中的默认操作是将图像导入为纹理。纹理存储在显存中,不能直接访问。这就是使得绘制它们变得高效的原因。

导入选项非常多:

../../../_images/image_import1.png

检测3D

这个选项让 Godot 知道在 3D 中何时使用纹理(默认情况下导入为 2D)。如果开启这个选项,设置会发生改变,所以纹理标记对 3D 更友好(贴图(mipmap)过滤器(filter)重复(repeat) 变为启用,压缩(compression) 变为 显存(VRAM))。纹理也自动重新导入。

Supported image formats

Godot can import the following image formats:

  • BMP (.bmp) - No support for 16-bit per pixel images. Only 1-bit, 4-bit, 8-bit, 24-bit, and 32-bit per pixel images are supported.
  • DirectDraw Surface (.dds) - If mipmaps are present in the texture, they will be loaded directly. This can be used to achieve effects using custom mipmaps.
  • OpenEXR (.exr) - 支持HDR (强烈推荐使用在全景天空上)。
  • 光辉HDR(.hdr) - 支持HDR (强烈推荐使用在全景天空上)。
  • JPEG (.jpg, .jpeg) - 不支持每个格式的限制透明度。
  • PNG (.png) - Precision is limited to 8 bits per channel upon importing (no HDR images).
  • Truevision Targa (.tga)
  • SVG (.svg, .svgz) - SVGs are rasterized using NanoSVG when importing them. Support is limited; complex vectors may not render correctly. For complex vectors, rendering them to PNGs using Inkscape is often a better solution. This can be automated thanks to its command-line interface.
  • WebP (.webp)

注解

If you've compiled the Godot editor from source with specific modules disabled, some formats may not be available.

压缩

图像是游戏中最大的素材之一。为了有效地处理它们,它们被需要压缩。Godot根据使用情况提供了几种压缩方法。

压缩模式

  • VRAM Compression: This is the most common compression mode for 3D assets. Size on disk is reduced and video memory usage is also decreased considerably (usually by a factor between 4 and 6). This mode should be avoided for 2D as it exhibits noticeable artifacts.
  • Lossless Compression: This is the most common compression mode for 2D assets. It shows assets without any kind of artifacting, and disk compression is decent. It will use considerably more amount of video memory than VRAM Compression, though. This is also the recommended setting for pixel art.
  • Lossy Compression: This is a good choice for large 2D assets. It has some artifacts, but less than VRAM and the file size is several times lower compared to Lossless or Uncompressed. Video memory usage isn't decreased by this mode; it's the same as with Lossless Compression or Uncompressed.
  • Uncompressed: Only useful for formats that can't be compressed (such as raw float images).

在这张表中,四个选项中的每一个都描述了它们的优缺点( good = 最好的, bad = 最差的):

  未压缩 无损压缩(PNG) 有损压缩(WebP) VRAM压缩
描述 存储为原始像素 存储为 PNG 存储为 WebP Stored as S3TC/BC or PVRTC/ETC depending on platform
磁盘占用 bad 巨大 regular good 非常小 regular
内存占用 bad 巨大 bad 巨大 bad 巨大 good
性能 regular 普通 regular 普通 regular 普通 good
质量损失 good good regular 轻微 bad 中等
加载时间 regular 普通 bad bad good

HDR 模式

Godot支持高动态范围纹理(如 .HDR.EXR)。这些在高动态范围等矩形全景天空中很有用(如果您要搜索,则互联网上有很多),它代替了Godot 2.x中的立方体贴图。现代个人电脑支持 BC6H VRAM 格式,但仍有很多电脑不支持。

如果您希望 Godot 确保完全兼容各种纹理,请启用 强制 RGBE 选项。

法线贴图

将纹理用作法线贴图时,仅需要红色和绿色通道。鉴于常规纹理压缩算法产生的失真在法线贴图中看起来不太好,RGTC 压缩格式最适合这种数据。将此选项强制为 已启用 将使Godot导入 RGTC 压缩的图像。默认情况下,它被设置为 Detect,这意味着如果纹理一旦被用作法线贴图,则会将其更改为 Enabled 并自动重新导入。

请注意,RGTC压缩会影响生成的法线贴图图像。您必须在调整使用法线贴图的自定义着色器时,考虑到这一点。

注解

Godot requires the normal map to use the X+, Y- and Z+ coordinates. In other words, if you've imported a material made to be used with another engine, you may have to convert the normal map so its Y axis is flipped. Otherwise, the normal map direction may appear to be inverted on the Y axis.

More information about normal maps (including a coordinate order table for popular engines) can be found here.

标志

根据使用情况,很多设置在将图像作为纹理导入时,可以被切换。

重复

此设置最常用于3D,因此通常在2D中被禁用。它将超出 0,0 -1,1 范围的UV坐标设置为 循环

可以选择将重复设置为镜像模式。

过滤器

当像素大于屏幕像素时,此选项可为它们启用线性插值。结果是更平滑的(更少块状)纹理。此设置通常可用于2D和3D,但在制作像素完美游戏时通常会禁用此设置。

Mipmaps

当像素变得比屏幕小时,mipmap 会启用。这有助于减少纹理收缩时的颗粒感效应。请记住,在较旧的硬件(GLES2,主要是移动设备)中,使用 mipmap 需要满足一些要求:

  • 纹理宽度和高度必须是2的幂
  • 必须启用 Repeat

在制作手机游戏和应用程序时,希望完全兼容并使用 mipmap,请牢记以上内容。

在 3D 模式下,应该打开 mipmap,因为这也会提高性能(更小大小的纹理用于更远的对象)。

各向异性

当纹理几乎与视图平行时(如地板),该选项通过减少模糊程度使它们具有更多细节。

SRGB

渲染 3D 图像时,Godot使用线性色彩空间。映射到 albedo (反照率)或细节通道的纹理需要打开此选项,才能使颜色看起来正确。当设置为 Detect 模式时,纹理当在反照率通道中使用时,将被标记为 SRGB 。

过程

当作为纹理导入时,某些特殊过程可以应用于图像。

修复 Alpha 边界

这样会使周围颜色相同的像素从透明过渡到非透明。从Photoshop等导出图像时,它有助于减轻轮廓效果。

../../../_images/fixedborder.png

除非需要特定的值,否则最好在保持默认值。

预乘Alpha

修复深色边界的替代方法是使用预乘alpha。通过启用此选项,纹理将被转换为此格式。请记住,在画布物体上使用预乘 ALPHA 混合模式需要创建一个材质。请记住,在画布上的使用PREMULT ALPHA混合模式的项目,需要创建一个材质,而该材质需要它。

HDR 转为 SRGB

一些HDR文件已损坏,并包含sRGB颜色数据。建议不要使用它们,但是在最坏的情况下,启用此选项会使它们看起来正确。

反转颜色

反转图像的颜色。例如,将外部程序生成的高度图转换为深度图以用于 空间材质,将非常有用。