BLOG main image
for our next (37)
Dev (32)
Mac (1)
Windows (2)
FreeTalk (1)
Shell (1)
Private (0)
Visitors up to today!
Today hit, Yesterday hit
daisy rss
tistory 티스토리 가입하기!
2011. 10. 20. 13:34
	public static Mesh CreatePlaneMesh(string name, int widthSegments, int heightSegments, int width, int height, bool vertical)
	{
		int width_segments = Mathf.Clamp(widthSegments, 1, 254);
		int height_segments = Mathf.Clamp(heightSegments, 1, 254);

		Mesh m = new Mesh();
		m.name = name;

		int hCount2 = width_segments + 1;
		int vCount2 = height_segments + 1;
		int numTriangles = width_segments * height_segments * 6;
		int numVertices = hCount2 * vCount2;

		Vector3[] vertices = new Vector3[numVertices];
		Vector2[] uvs = new Vector2[numVertices];
		Color[] colors = new Color[numVertices];
		int[] triangles = new int[numTriangles];

		int index = 0;
		float uvFactorX = 1.0f / width_segments;
		float uvFactorY = 1.0f / height_segments;
		float scaleX = width / width_segments;
		float scaleY = height / height_segments;

		float halfWidth = width / 2.0f;
		float halfHeight = height / 2.0f;

		float realX = -halfWidth;
		float realY = -halfHeight;

		for (float y = 0.0f; y < vCount2; y++)
		{
			for (float x = 0.0f; x < hCount2; x++)
			{
				if (vertical)
				{
					vertices[index] = new Vector3(x * scaleX + realX, y * scaleY + realY, 0.0f);
				}
				else
				{
					vertices[index] = new Vector3(x * scaleX + realX, 0.0f, y * scaleY + realY);					
				}

				uvs[index++] = new Vector2(x * uvFactorX, y * uvFactorY);
			}
		}

		index = 0;
		for (int y = 0; y < height_segments; y++)
		{
			for (int x = 0; x < width_segments; x++)
			{
				triangles[index] = (y * hCount2) + x;
				triangles[index + 1] = ((y + 1) * hCount2) + x;
				triangles[index + 2] = (y * hCount2) + x + 1;

				triangles[index + 3] = ((y + 1) * hCount2) + x;
				triangles[index + 4] = ((y + 1) * hCount2) + x + 1;
				triangles[index + 5] = (y * hCount2) + x + 1;
				index += 6;
			}
		}

		m.vertices = vertices;
		m.uv = uvs;
		m.colors = colors;
		m.triangles = triangles;
		m.RecalculateNormals();

		return m;
	}

'Dev > Unity3D' 카테고리의 다른 글

Unity, Audio, and Memory  (0) 2012.01.25
unity3d data path!  (0) 2011.12.14
Unity3D Inspector object 선택후 일괄 처리  (0) 2011.07.02
Unity3D 에서 XML Serialize Encrypt/Decrypt.  (3) 2011.04.22
FindObjectOfType fail.  (0) 2010.12.14