1

我一直在尝试减少在我的体素/平面地形生成器中使用的代码,并编写了这个函数以便在每次我需要添加一组新的 UV 时调用 - 代表纹理贴图中的四个顶点:

List<Vector2> _UVs(List<Vector2> UV, int x = 0, int y = 0)
{
    List<Vector2> UVReturn = new List<Vector2>();
    UVReturn = UV;

    UVReturn.Add(new Vector2 (0f, 0f) * x);
    UVReturn.Add(new Vector2 (0.125f, 0) * y);
    UVReturn.Add(new Vector2 (0.125f, 1)* y);
    UVReturn.Add(new Vector2 (0f, 1f) * x); 

    return UVReturn;
}

但是,我似乎无法确定要在修饰符中写入的确切位置,它们似乎每次都会扔掉东西。我目前在 1024 文件中有一行 128x 纹理。目前的 UV 布局似乎是准确的,除了乘法。删除它,它完美地显示了第一个纹理。有哪些方法可以改进?我的目标是让它可以用于任何四个顶点平面。

4

1 回答 1

1

你不能像那样乘它,那是完全不同的东西。

UVReturn.Add(new Vector2 (x * 0.125f, 0f));
UVReturn.Add(new Vector2 ((x + 1) * 0.125f, 0));
UVReturn.Add(new Vector2 ((x + 1) * 0.125f, 1));
UVReturn.Add(new Vector2 (x * 0.125f, 1f));

您需要偏移UV 坐标 - 这意味着您必须添加x * widthOfOne到 x 坐标和y * heightOfOney 坐标。我的示例仅显示 x 偏移量,但您可以轻松扩展它以允许 y 偏移量。

于 2015-04-01T11:56:57.173 回答