我一直在使用 Blender 和 Krita 为要放入 VRChat 中的头像制作纹理。在 Blender 中纹理看起来完全正常,但当我将 PNG 导入到 Unity 时,就会出现问题。主体纹理在头像上显示得很好,但我用于发射导入的 PNG 带有原始 PNG 上没有的点和斑点。 dwdUnity 似乎正在记住某种不再存在于 PNG 中的数据。
我从Krita文件中重新导出PNG几次,但无济于事。我确保该文件已从 Unity 以及我保存该文件的文件夹中完全删除。我什至重新启动了计算机,看看是否可以解决问题,但没有。为了测试我的 Unity 记忆数据理论,我在纹理中添加了一个蓝点,并将其导出为 PNG。然后我删除了 Krita 中的蓝点并将其重新导出为第二个 PNG。我将第二个 PNG 导出到 Unity 中。检查器中的纹理预览显示了我添加的蓝色斑点,并且不久前被删除的斑点和斑点仍然存在。
这通常不是 Unity 中的问题,而是用于编辑 png 文件的程序的问题。根据“擦除”的含义,大多数编辑程序只是将 Alpha 通道设置为 0,但保持颜色通道不变。不同的程序表现不同,并且有不同的工具来处理这个问题。
我们不知道如何在 Unity 中应用这些纹理。如果它是某种贴花、乘法或加法着色器,它可能会忽略 Alpha 通道。仅凭图像很难判断。
在 Unity 内部,纹理预览的顶部有这些按钮:
使用这些通道,您可以查看各个通道,以便了解实际颜色通道(R、G、B)包含的内容。您的图像编辑软件可能有一个选项,可以用某种颜色填充 alpha 值为 0 的像素(您可能需要黑色)。
清除 alpha==0 区域通常是一个很好的想法,因为保留这些区域会使图像比需要的更大。