如何将不同的法线贴图纹理应用于Unity中类似立方体地形块的minecraft的不同面



我正在Unity中制作一个程序生成的类似minecraft的体素地形。网格生成和反照率通道纹理是完美无瑕的;然而,我需要为不同的立方体面应用不同的法线贴图纹理,无论它们是否与另一个立方体相邻。材质只接受单个法线贴图文件,并且不为法线贴图提供精灵表编辑器之类的功能。所以我不知道如何使用法线贴图文件外的选定切片,就好像它们是反照率纹理一样。我找不到关于这个问题的任何相关资源。任何帮助都将不胜感激。谢谢

首先,我不是这方面的专家,尽管我将根据我对Unity部分的有限和不完整的理解来帮助您。

如果存在有限数量的"0";法线面映射";我建议像你所说的那样("sprite sheet"(,创建一个包含所有这些法线贴图的单个纹理(有时也称为纹理图谱(。

下一步,我不确定标准材质着色器是否会针对您的情况进行处理,即为法线贴图生成UV/纹理坐标,并将这些坐标与顶点xyz位置一起传递给着色器。UV坐标需要用于每个面的每个顶点;它们被指定为法线贴图图谱中的二维(U,V(偏移,并且是范围为[0.0,1.0]的浮点值,映射到实际法线纹理的完整X和Y坐标。例如,如果您有一个具有4行4列纹理网格的图集,则应该使用左上角纹理的面将具有[(0,0(,(0.25,0(,[(0.25,0.25(,(0,0.25(]的UV坐标。

这里的困难可能取决于你是否使用UV坐标进行其他纹理贴图(例如在艾伯多或其他任何地方(。如果是这种情况,我认为Unity Standard Shader允许两组纹理坐标,如果需要更多,您可能需要滚动自己的着色器或在其他地方找到允许更多UV集的着色器资源。这就是我对UV0的理解变得不稳定的地方,因为我不确定着色器是如何使用这两个UV坐标集的,也不确定这些UV坐标的使用方式是否有一些现有的约定,因为标准着色器支持次要/细节贴图,这可能意味着你必须与所有非细节贴图共享UV0集,例如反照率、法线、高度、遮挡等。

相关内容

  • 没有找到相关文章

最新更新