纳金网

标题: Unity Mesh ---Triangle(unity mesh 画三角形) [打印本页]

作者: 狂风大尉    时间: 2015-5-31 20:04
标题: Unity Mesh ---Triangle(unity mesh 画三角形)

实现之前先介绍2个基本概念:VertexBuffer和IndexBuffer1)VertexBuffer 叫顶点缓存区,用来保存顶点信息哒;
2)IndexBuffer 叫索引缓存区,用来保存顶点对应的索引值哒;

思路:如何绘制三角形呢?
1)一个三角形有3个顶点吧,建立3个顶点数据缓存vector3类型数组里;
2)缓存这个三角形顶点的索引信息在int型数组;
3)new 一个空的mesh 或者 通过组建拿到MeshFilter对象里的mesh,把之前准备绘制三角形的基本数据顶点信息,索引信息等数据指向mesh里面相应属性。

PS:可以设置颜色,设置3个顶点的颜色,在update通过Graphics的DrawMesh方法显示颜色等信息。

创建MeshDrawTriangle.cs
  1. Mesh m_Mesh;
  2.         Material m_Material;
  3.         //MeshFilter m_Filter;

  4.         void Awake(){
  5.                 //m_Filter = gameObject.AddComponent<MeshFilter> ();
  6.                 //m_Mesh = m_Filter.mesh;
  7.                 m_Material = new Material(Shader.Find ("GUI/Text Shader"));
  8.         }

  9.         void Start () {
  10.         
  11.                 Vector3[] m_Vertexs = new Vector3[]{
  12.                         new Vector3(0,0,0),
  13.                         new Vector3(1,1,0),
  14.                         new Vector3(-1,1,0)
  15.                 };
  16.                 int[] m_Tris = new int[]{0,1,2};

  17.                 Color[] m_Colors = new Color[]{Color.green,Color.green,Color.green};
  18.                 m_Mesh = new Mesh ();
  19.                 m_Mesh.vertices = m_Vertexs;
  20.                 m_Mesh.triangles = m_Tris;
  21.                 m_Mesh.colors = m_Colors;      
  22.                 //m_Filter.mesh = m_Mesh;
  23.         }
  24.         
  25.         // Update is called once per frame
  26.         void Update () {
  27.                 Graphics.DrawMesh (m_Mesh,Vector3.zero,Quaternion.identity,m_Material,0);
  28.         }
复制代码
最后把cs文件挂相机或空GameObject运行即可。





欢迎光临 纳金网 (http://go.narkii.com/club/) Powered by Discuz! X2.5