跳到主要内容

纹理

纹理是一张可以赋给材质,再应用到图形图元上的图像。

导入纹理​

可以通过三种方式向 PlayCanvas 导入纹理资源:

  1. 将图片拖放到资源面板。
  2. 在资源面板右键菜单中选择 Upload,再通过文件浏览器选择图片。
  3. 导入内嵌纹理的 FBX 文件。

支持以下图像格式:

  • JPG
  • PNG
  • AVIF
  • WEBP
  • GIF
  • TGA
  • BMP
  • TIF
  • HDR
  • EXR

导入的 JPG、PNG、AVIF、WebP 和 GIF 文件保留原格式。

GIF、TGA、BMP 和 TIF 类型在导入时会转换为 JPG 或 PNG:如果图像包含透明度,则转换为 PNG,否则转换为 JPG。

HDR 和 EXR 是高动态范围格式。导入时会转换为 PNG,并标记为使用 RGBM 存储。RGBM 将 RGB 值的倍率保存在 PNG 的 Alpha 通道中,从而用低动态范围格式编码 HDR 数据。

默认情况下,导入图像会调整为最接近的二次幂尺寸。例如,323x414 的图片会调整为 256x512。这样做是因为图形引擎无法为非二次幂纹理使用 mipmap。不过,可以在导入非二次幂纹理前,在 Asset Import 面板中禁用 Textures POT 来取消此行为。

纹理属性​

在资源面板中选中纹理缩略图,即可在检查器中查看。也可以多选纹理,在检查器中同时编辑所有选中项。

纹理具有 ID、名称、标签等通用资源属性,也包含一些专用属性。

纹理属性

纹理滤波​

纹理滤波决定映射了纹理的像素如何计算颜色。Point 不进行滤波,Linear 则对纹素及其相邻纹素的颜色进行插值。后者通常有更好的视觉效果,尤其在纹理缩小时,即纹理在屏幕上占用的像素少于其纹素数时。

各向异性​

以倾斜角度观察纹理表面时,画质可能下降并出现模糊。可以通过设置各向异性值改善。不同值对纹理显示的影响如下:

各向异性

注意,各向异性值越高,GPU 纹理采样开销也越高。

纹理寻址​

纹理寻址属性控制纹理坐标超出 0 到 1 范围时如何采样。下图展示不同模式对精灵的影响:

纹理寻址

最大纹理尺寸​

不同设备支持的纹理尺寸不同。可以在目标设备和浏览器上使用 WebGL report 查看最大支持尺寸。

例如,下图来自 2020 款 16 英寸 MacBook Pro 的 Chrome,支持最高 16384x16384。

MacBook Pro 的 WebGL 报告

而 Samsung S7 手机仅支持 4096x4096。

Samsung S7 的 WebGL 报告

如果纹理尺寸超过 WebGL 报告的上限,引擎会在运行时将其缩小到最大支持尺寸。此行为仅适用于从 PNG、JPG、AVIF、WebP、GIF 等图像加载的纹理。压缩纹理无法在运行时调整尺寸,超过设备上限时将无法渲染。

如果希望避免运行时缩小,按原文撰写时(2020 年 10 月 23 日)的设备情况,4096x4096 已获得广泛支持;部分开发者甚至选择兼容性更稳妥的 2048x2048。