Unity3D动态生成多边形

首先在Unity中创建一个物体,并为它添加我们渲染网格需要的组件.

这里写图片描述


MeshFilter组件用于获取网格信息,我们生成的网格就需要添加到MeshFilter.MeshRenderer用于渲染网格,在这里使用默认的材质来演示.

要生成一个多边形,我们应该要有多边形的顶点数组.现在开始定义我们的变量
	//顶点数组
	public Vector3[] Vertexes;
	//网格过滤器
    private MeshFilter _meshFilter;
    //网格
    private Mesh _mesh;

接下来我们根据顶点动态生成一个网格.网格都是由三角形组成的,所以我们应该根据顶点数量求出三角形数量,
然后需要确定每个三角形的顶点在我们的顶点数组中的索引.下面上代码
	public void Refresh()
    {
         //得到三角形的数量
        int trianglesCount = Vertexes.Length - 2;

        //三角形顶点ID数组
        int[] triangles = new int[trianglesCount * 3];

        //绘制三角形
        _mesh.vertices = Vertexes;

        //三角形顶点索引,确保按照顺时针方向设置三角形顶点
        for (int i = 0; i < trianglesCount; i++)
        {
            for (int j = 0; j < 3; ++j)
            {
                triangles[i * 3 + j] = j == 0 ? 0 : i + j;
            }
        }
        _mesh.triangles = triangles;
        _meshFilter.mesh = _mesh;
    }

虽然只有短短几行代码,**但是值得注意的是我们生成三角形的顶点顺序必须为顺时针方向**.所以在传入顶点的时候我们应该按照顺时针方向传入顶点.
Vertexes = new Vector3[] { Vector3.zero, new Vector3(-1, 1, 0), new Vector3(1, 2, 0), new Vector3(2, -1, 0) };

现在生成的四边形如下:

这里写图片描述

生成的绿色三角形使我们的第一个三角形,顶点顺序为0, 1, 2(顺时针方向), 黄色三角形顶点顺序为0,2,3(顺时针方向),每个三角形的顶点顺序都是为顺时针方向,这样我们看到的面才是正方向的.如果我们的顶点为逆时针顺序,那么我们看到的面为反方向的.如下:

这里写图片描述


我们就需要把视角调整到背面才能看到四边形,在正面是看不见的.注意观察坐标轴.


  • 0
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值