以下是绘制正方形面片的一个例子,方便之后查阅:

效果如图所示:

红轴为x方向,蓝轴为z方向。

代码如下:

 1 using System.Collections;
 2 using System.Collections.Generic;
 3 using UnityEngine;
 4 public class SingleMesh:MonoBehaviour
 5 {
 6     public int size = 1;//边长
 7     public int segment = 5;//分段数
 8     public Material mat;//mesh材质
 9     private Vector3[] vertices;//顶点
10     private Vector2[] uv;//纹理坐标
11     private int[] triangles;//索引
12
13
14     [ContextMenu("Create Mesh")]
15     /// <summary>
16     /// 创建mesh
17     /// </summary>
18     private void CreateMesh()
19     {
20         GameObject obj_cell = new GameObject();
21         obj_cell.name = "cell";
22         Mesh mesh = new Mesh();
23         mesh.Clear();
24         SetVertivesUV();//生成顶点和uv信息
25         SetTriangles();//生成索引
26         mesh.vertices = vertices;
27         mesh.uv = uv;
28         mesh.triangles = triangles;
29
30         mesh.RecalculateNormals();//重置法线
31
32         mesh.RecalculateBounds();   //重置范围
33         obj_cell.AddComponent<MeshFilter>().mesh = mesh;
34         obj_cell.AddComponent<MeshRenderer>();
35         obj_cell.GetComponent<MeshRenderer>().material = mat;
36     }
37
38     /// <summary>
39     /// 设置顶点信息
40     /// </summary>
41     private void SetVertivesUV()
42     {
43         vertices = new Vector3[(segment + 1) * (segment + 1)];
44         uv = new Vector2[vertices.Length];
45         int num = 0;
46         float m = (float)size / (float)segment;
47         for (int i = 0; i < segment + 1; i++)
48             for (int j = 0; j < segment + 1; j++)
49             {
50                 vertices[num] = new Vector3(j * m,0, i * m);
51                 uv[num] = new Vector2((float)j / segment, (float)i / segment);
52                 num++;
53             }
54
55     }
56     /// <summary>
57     /// 设置索引
58     /// </summary>
59     private void SetTriangles()
60     {
61         triangles = new int[segment * segment * 6];
62         int index = 0;//用来给三角形索引计数
63         for (int i = 0; i < segment; i++)
64             for (int j = 0; j < segment; j++)
65             {
66                 int line = segment + 1;
67                 int self = j + (i * line);
68
69                 triangles[index] = self;
70                 triangles[index + 1] = self + line + 1;
71                 triangles[index + 2] = self + 1;
72                 triangles[index + 3] = self;
73                 triangles[index + 4] = self + line;
74                 triangles[index + 5] = self + line + 1;
75
76                 index += 6;
77             }
78     }
79 }

其中triangles索引为链接各定点的顺序,一个小格的链接顺序如下:

准则:三角形有两面,正面可见,背面不可见。三角形的渲染顺序与三角形的正面法线呈左手螺旋定则。大部分按顺时针:012,213

转载于:https://www.cnblogs.com/luxishi/p/6518366.html

unity中动态生成网格相关推荐

  1. Unity Tilemap动态生成2d地图

    Unity Tilemap动态生成2d地图 (参考链接) rule tile 动态生成地图:https://blog.csdn.net/mkr67n/article/details/108340749 ...

  2. Unity使用c#开发遇上的问题(六)(3dmax围绕指定中心旋转,unity中动态调用预制体并根据模型旋转指定角度)

    文章目录 前言 一.3dmax创建子弹.炮塔及武器库 1.相关模型 2.炮塔模型引入unity,无法绕旋转球旋转,重新调整 1.3dmax中默认炮管的中心点 2.选择层次界面 3.选择编辑工作轴 4. ...

  3. word文档中动态生成excel表格(基金公告系列讲解)

    1.本博文仅为了将之前工作中动态生成XBRL文件需求中word文档动态生成excel部分进行了实现(虽然隔着时间比较久),闲暇之余的考虑,应对大批量文件生成时可采用定时任务+多线程技术+redis队列 ...

  4. android 动态显示表格,在Android Studio中动态生成并显示表格

    我在Android上创建我的第一个应用程序,因此我有低开发android应用程序的经验,而且我也是第一次使用java.在Android Studio中动态生成并显示表格 我想要什么? 我想从Array ...

  5. R语言使用keras包实现卷积自动编码器模型(Convolutional Autoencoder)、加载keras自带的mnist数据集、训练中动态生成每个epoch后模型训练的loss曲线

    R语言使用keras包实现卷积自动编码器模型(Convolutional Autoencoder).加载keras自带的mnist数据集.训练中动态生成每个epoch后模型训练的loss曲线 目录

  6. Unity中动态修改Terrain地形

    以下类实现了在Unity中动态的修改Terrain的功能,可以在运行时升高.降低以及平滑地形高度.在Unity的Play Mode修改地形后退出Play Mode仍然会保留修改:当游戏打包成独立的可执 ...

  7. 使用POI在Excel中动态生成图表工具类(支持柱状、组合、环状图、折线图、等常用图)

    使用POI在Excel中动态生成图表工具类 使用POI在Excel中动态生成图表工具类 由于公司是一个生成报表的机构,之前一直使用pageOffice,但是公司领导就是不买,你说公司那样有钱磨磨唧唧干 ...

  8. Unity 代码动态生成模型

    网格由 3D 空间中排列的三角形组成,旨在产生实体对象的效果.三角形由其拐点或者顶点定义.在 Mesh 类中,顶点全部存储在单个数组中,并且每个三角形使用与顶点数组的索引对应的三个整数指定.这些三角形 ...

  9. [专栏精选]Unity中动态构建NavMesh

    本文节选自洪流学堂公众号专栏<郑洪智的Unity2018课>,未经允许不可转载. 洪流学堂公众号回复专栏,查看更多专栏文章. 小新:"Unity内置的Navigation系统是不 ...

  10. 在JSP中动态生成随机验证码,登录时后台校验验证码,以及如何避免同一个验证码被重复提交爆破密码...

    只需几步就可以生成动态随机的验证码,最终效果如下图: 一 前台显示页面login.jsp 其中验证码显示的是一张图片,链接指向的是生成验证码的servlet,同时点击图片后触发changeImg()这 ...

最新文章

  1. JGG:遗传发育所白洋组和曹晓风组-水稻组蛋白甲基化调控根系核心菌群
  2. PHP将excel文件中的数据批量导入到数据库中
  3. 极索(Gsuo)推出新版地图采用Gmap设计思路
  4. 080703 雨&星巴克的菜单
  5. [转]软件测试的完整分类
  6. 前端开发工程师---技术路线图
  7. linux环境下安装OpenGL
  8. Shell脚本学习-阶段九-数据库被攻击恢复
  9. J2EE的十三个技术规范
  10. 计算机网络未来的发展和趋势论文,计算机网络发展论文范文
  11. VBA实战代码大全-下载
  12. MAPGIS做图指导
  13. rapidxml的简单使用
  14. 一次完整的HTTP请求过程(深入分析)
  15. Python学习笔记(11)-Python进阶11-函数
  16. Kotlin 苦海无涯(一)
  17. 化妆品电商供应链系统解决方案:美妆化妆品品牌供应链质量管理、产品定位
  18. 成就系统和任务系统的设计
  19. 局域网内共享vmware虚拟机
  20. 股票入门基础知识16:财务比率的局限性

热门文章

  1. 探索ASP.NET MVC5系列之~~~4.模型篇---包含模型常用特性和过度提交防御
  2. 关于软件测试学习的心得
  3. centos6使用bacula备份系统
  4. 山寨笔记本电脑风暴要来了
  5. 谜题35:一分钟又一分钟
  6. spring boot: 一般注入说明(五) @Component, application event事件为Bean与Bean之间通信提供了支持...
  7. 在Centos6.8上为安装Django1.11.1升级Python2.6到Python3.5
  8. c#利用泛型集合,为自己偷偷懒。
  9. powershell excel 导入 sqlserver
  10. Xcode 6 免证书真机调试