我在Unity中遇到问题,其中网格显示为完全黑色。这是设置纹理的C#代码:
public void GenerateMap()
{
float[,] noiseMap = GenerateMapData();
Texture2D colorMap = TextureGenerator.GenerateColorMap(noiseMap, mapWidth, mapHeight);
Mesh mesh = new Mesh();
mesh = MeshGenerator.GenerateMesh(noiseMap, mapHeight, mapWidth);
meshFilter.sharedMesh = mesh;
meshRenderer.sharedMaterial.mainTexture = colorMap;
meshRenderer.transform.localScale = new Vector3(colorMap.width, 1, colorMap.height);
}
生成网格很好,但是没有出现纹理。应用于网格的材料是称为“网格”的标准材料,其平滑度设置为零。总体项目是Perlin噪声地形生成器。 colorMap是正确的,因为我可以使用以下方法将其应用于平面:
textureRender.sharedMaterial.mainTexture = colorMap;
textureRender.transform.localScale = new Vector3(colorMap.width, 1, colorMap.height);
任何帮助将不胜感激。
不,我没有忘记uvs:
uvs[currentVertex] = new Vector2(x / width, z / height);
Mesh mesh = new Mesh
{
vertices = vertices,
triangles = triangles,
uv = uvs
};
mesh.RecalculateNormals();