我正在生成一个能够缩放的平面,而纹理的边缘不会受到像素方面的影响。飞机需要能够保持其边界比例,但能够伸展到几乎任何尺寸。网格有 8 个顶点和 10 个三角形来构成边界。无论如何,这就是我得到的。忽略网格几何体上的数字。
是否可以编辑 UV 以获得所需的结果?这是代码:
Mesh mesh = new Mesh();
var renderer = mesh.AddRenderer();
//create verticies
mesh.vertices = new Vector3[] {
//vertices in order for convienience
Manager.GUI.ScreenToWorldPoint(new Vector3(0f,0f,0f)), //0
Manager.GUI.ScreenToWorldPoint(new Vector3(padding,padding,0)), //1
Manager.GUI.ScreenToWorldPoint(new Vector3(width - padding, padding,0f)), //2
Manager.GUI.ScreenToWorldPoint(new Vector3(width,0f,0f)), //3
Manager.GUI.ScreenToWorldPoint(new Vector3(width - padding, height - padding,0f)),//4
Manager.GUI.ScreenToWorldPoint(new Vector3(width,height,0f)), //5
Manager.GUI.ScreenToWorldPoint(new Vector3(padding, height - padding, 0f)), //6
Manager.GUI.ScreenToWorldPoint(new Vector3(0f,height,0f)), //7
};
//create triangles
mesh.triangles = new int[] {
7,5,6,
6,5,4,
4,5,3,
2,4,3,
0,2,3,
0,1,2,
0,7,6,
0,6,1,
1,6,4,
1,4,2
};
//create UV's uvs are in order of creation for convienience
mesh.uv = new Vector2[] {
new Vector2(0f,0f),
new Vector2(padding/width, padding/height),
new Vector2((width-padding)/width, padding/height),
new Vector2(1f,0f),
new Vector2((width - padding)/width,(height-padding)/height),
new Vector2(1f,1f),
new Vector2(padding/width,(height-padding)/height),
new Vector2(0f,1f)
};
mesh.calculateNormals();
mesh.calculateBounds();
renderer.Texture = mytex;
return plane;
}
填充是忽略缩放的纹理周围定义的像素,而高度和宽度是形状的尺寸。