Unity3D Mesh学习笔记1-创建一个最简单的四边形

using UnityEngine;
using System.Collections;

public class Quad : MonoBehaviour 
{
	// Use this for initialization
	void Start () {
		CreateQuad ();
	}
	
	private float m_width = 1;
	private float m_length = 1;

	public void CreateQuad()
	{
		/* 1. 顶点,三角形,法线,uv坐标, 绝对必要的部分只有顶点和三角形。 
		   	  如果模型中不需要场景中的光照,那么就不需要法线。如果模型不需要贴材质,那么就不需要UV */
		Vector3[] vertices = new Vector3[4];
		Vector3[] normals = new Vector3[4];
		Vector2[] uv = new Vector2[4];

		vertices [0] = new Vector3 (0, 0, 0);
		uv [0] = new Vector2 (0, 0);
		normals [0] = Vector3.up;

		vertices [1] = new Vector3 (0, 0, m_length);
		uv [1] = new Vector2 (0, 1);
		normals [1] = Vector3.up;


		vertices [2] = new Vector3 (m_width, 0, m_length);
		uv [2] = new Vector2 (1, 1);
		normals [2] = Vector3.up;

		vertices [3] = new Vector3 (m_width, 0, 0);
		uv [3] = new Vector2 (1, 0);
		normals [3] = Vector3.up;

		/*2. 三角形,顶点索引: 
		 三角形是由3个整数确定的,各个整数就是角的顶点的index。 各个三角形的顶点的顺序通常由下往上数, 可以是顺时针也可以是逆时针,这通常取决于我们从哪个方向看三角形。 通常,当mesh渲染时,"逆时针" 的面会被挡掉。 我们希望保证顺时针的面与法线的主向一致 */
		int[] indices = new int[6];
		indices [0] = 0;
		indices [1] = 1;
		indices [2] = 2;

		indices [3] = 0;
		indices [4] = 2;
		indices [5] = 3;

		Mesh mesh = new Mesh ();
		mesh.vertices = vertices;
		mesh.normals = normals;
		mesh.uv = uv;
		mesh.triangles = indices;
		mesh.RecalculateBounds ();

		MeshFilter filter = this.gameObject.AddComponent<MeshFilter> ();
		if(filter != null)
		{
			filter.sharedMesh = mesh;
		}

		MeshRenderer meshRender = this.gameObject.AddComponent<MeshRenderer> ();
		Shader shader = Shader.Find ("Diffuse");
		meshRender.sharedMaterial = new Material (shader);
	}
}

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值