导入图像

支持的图像格式

Godot 可以导入以下图像格式:

  • BMP(.bmp)——不支持每像素 16 位的图像。只支持每像素 1 位、4 位、8 位、24 位和 32 位的图像。

  • DirectDraw Surface(.dds)——如果纹理中存在 mipmap,则直接加载。可以使用自定义 mipmap 制作特效。

  • OpenEXR(.exr)——支持 HDR(强烈推荐使用在全景天空上)。

  • Radiance HDR(.hdr)——支持 HDR(强烈推荐使用在全景天空上)。

  • JPEG(.jpg.jpeg)——由于该格式的限制,不支持透明度。

  • PNG(.png)——导入时精度限制为每个通道 8 位(无 HDR 图像)。

  • Truevision Targa(.tga

  • SVG(.svg.svgz)——SVG 在导入时使用 NanoSVG 进行栅格化。支持并不完善;复杂的矢量图可能无法正确渲染。对于复杂的矢量图,使用 Inkscape 将其渲染成 PNG 往往是更好的解决方案。这个操作可以通过 Inkscape 的命令行界面来自动完成。

  • WebP(.webp)——WebP 文件支持透明,也支持有损和无损压缩。精度限制是每通道 8 位。

备注

如果你从源代码编译 Godot 编辑器时禁用了特定的模块,某些格式可能无法使用。

导入纹理

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

导入选项非常多:

../../_images/image_import1.png

Detect 3D(检测 3D)

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

压缩

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

压缩模式

  • VRAM压缩: 这是3D素材最常见的压缩方式. 可以减小磁盘文件的大小, 同时大大减少显存使用量(通常是4到6倍). 但 2D 素材应该避免使用此模式, 因为它会出现明显的失真.

  • 无损压缩: 这是 2D 素材最常用的压缩方式. 显示的素材不会失真, 并且磁盘压缩率也不错. 但是, 它占用的显存比VRAM压缩多得多. 这是像素画的推荐设置.

  • 有损压缩: 对于比较大的 2D 素材是一个好的选择. 只是会有一些失真, 但比 VRAM 压缩少, 文件大小比无损或未压缩低好几倍. 此模式不会降低视频内存使用量, 它与无损压缩或未压缩相同.

  • 未压缩: 仅适用于无法压缩的格式(例如 raw float 图片).

这张表将四个选项中每一个的优缺点列在了一起(good = 最好、bad = 最差):

未压缩

无损压缩

有损压缩

VRAM压缩

描述

存储为原始像素

存储为无损WebP / PNG

存储为有损的WebP

根据平台不同, 存储为S3TC/BC或PVRTC/ETC

磁盘占用

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 确保完全兼容各种纹理,请启用“Force RGBE”选项。

法线贴图

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

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

备注

Godot 需要法线贴图使用 X+、Y+、Z+ 坐标,即 OpenGL 风格。如果你导入了用于其他引擎的材质,它可能使用的是 DirectX 风格,那么就需要对法线贴图的进行转换,翻转 Y 轴。

可以在 这里 找到关于法线贴图(包括常见引擎的坐标顺序表)的更多信息.

标志

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

重复

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

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

过滤器

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

Mipmaps

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

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

  • 必须启用 Repeat

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

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

各向异性

当纹理几乎与视图平行时(如地板),该选项可以减少模糊保留更多细节。

sRGB

Godot 在渲染 3D 时使用线性色彩空间。映射了反照率或细节的通道纹理,需要打开此选项才能使颜色正确表现。当设置为Detect模式时,纹理将在反照率通道中使用时,标记为 sRGB。

警告

因为启用 sRGB 时纹理的内容会被修改,所以如果在 2D 和 3D 中使用同一纹理,2D 和 3D 之中必有其一会显示错误的颜色。

如需变通,可以将该纹理在文件系统中复制一份,仅在该副本上启用 sRGB。在 3D 中使用启用了 sRGB 的版本,在 2D 中使用禁用了 sRGB 的版本。

过程

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

修复 Alpha 边界

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

../../_images/fixedborder.png

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

预乘Alpha

另一种修复深色边界的方法是使用预乘 alpha。启用该选项后,纹理将被转换为此格式。请注意,在画布项(canvas items)上使用预乘 ALPHA 混合模式需要先创建材质,并开启“PREMULT ALPHA”混合模式。

HDR 转为 sRGB

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

反转颜色

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

Svg

Scale(大小)

该选项仅适用于 SVG 文件。它控制 SVG 图像的缩放。默认缩放为 (1.0) ,使导入的 SVG 保持原始设计的大小。