查看: 4798|回复: 0

[其他] Unity Mesh ---Triangle(unity mesh 画三角形)

[复制链接]

2722

主题

42

听众

3万

积分

资深设计师

Rank: 7Rank: 7Rank: 7

纳金币
38266
精华
111

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

发表于 2015-5-31 20:04:34 |显示全部楼层

实现之前先介绍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运行即可。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

关闭

站长推荐上一条 /1 下一条

手机版|纳金网 ( 闽ICP备08008928号

GMT+8, 2024-4-16 13:14 , Processed in 0.084806 second(s), 30 queries .

Powered by Discuz!-创意设计 X2.5

© 2008-2019 Narkii Inc.

回顶部