首先贴上效果图


上面两个图就是使用Unity的Mesh画出的正五边形和正八变形。

无论是研究过Mesh还是只是有所听说,应该都听过网格,上面两个图形就是利用来网格的特性来实现的。

首先讲一下Mesh原理
无论渲染什么图形,就需要用到mesh将图形的形状展示出来,Unity中所有图形都是三角面组成,例如一个正方形

一个正方形是由定点组成的两个三角片组成(三角形a和b),012组成三角形a,023组成三角形b,由此组成了一个正方形。注意,三角形的三个顶点排列必须是顺时针,如果是逆时针,在反面才会看到。

多边形也是类似原理,如图
代码

 public Button DrawPolygonButton;public InputField countInput;[HideInInspector]public GameObject drawGo;[HideInInspector]public MeshFilter meshFilter;[HideInInspector]public MeshRenderer meshRenderer;int count;void Awake(){DrawPolygonButton.transform.GetChild (0).GetComponent<Text> ().text = "DrawPolygon";DrawPolygonButton.onClick.AddListener (DrawPolygon);countInput.onValueChanged.AddListener ((string a) => {if (!string.IsNullOrEmpty(a)){count = System.Convert.ToInt32(a);}});}Mesh PrepareMesh(){drawGo = new GameObject ("DrawWithMesh");drawGo.transform.SetParent (transform);drawGo.transform.localPosition = Vector3.zero;drawGo.transform.localScale = Vector3.one;meshRenderer = drawGo.AddComponent<MeshRenderer> ();meshRenderer.material = mat;meshFilter = drawGo.AddComponent<MeshFilter> ();Mesh mesh = meshFilter.mesh;mesh.Clear();return mesh;}void DrawPolygon(){int circle_count = count;Mesh mesh = PrepareMesh ();Vector3[] vertices = new Vector3[circle_count + 1];vertices[0] = Vector3.zero;float pre_rad = Mathf.Deg2Rad * 360 / circle_count;for (int i = 0; i < circle_count; i++) {float deg = -i * pre_rad;float x = Mathf.Cos (deg);float y = Mathf.Sin (deg);vertices [i + 1] = new Vector3 (x, y, 0) * 3;}mesh.vertices = vertices; int[] triangles = new int[circle_count * 3];for (int i = 0; i < triangles.Length; i+=3) {int first = 0;int second = i / 3 + 1;int third = second + 1;if (third > circle_count) {third = 1;}triangles [i] = first;triangles [i + 1] = second;triangles [i + 2] = third;}mesh.triangles = triangles;}

如果要画圆形,则适量增加count数量就行

其他

更多Blog请见:https://yiyuan1130.github.io/
Github地址:https://github.com/yiyuan1130

Unity用Mesh画多边形、圆形相关推荐

  1. Unity Mesh(一) 初步使用Mesh画平面图形

    最近发现Mesh很牛的样子,虽然以前也见过人家大牛用这个写过工具,当时没大在意,现在开始接触,觉得挺好玩的,首先先上我画的几个图: 据说还可以画各种形状,原理就是所有图形都是由三角形组成的. 下面我们 ...

  2. 学习笔记:unity通过Mesh网格绘制图形:三角形正方体圆柱

    一,介绍 Mesh类:通过脚本创建或是获取网格的类,网格包含多个顶点和三角形数组.顶点信息包含坐标和所在面的法线. unity中3D的世界的所有图形全部都是由三角形构成的. 比如unity已经装配好的 ...

  3. Python+OpenCV 图像处理系列(3)—— 画线、矩形、画圆、画椭圆、画多边形

    OpenCV 中的绘图函数 使用 OpenCV 绘制不同几何图形,其中包括的函数有 cv2.line() cv2.circle() cv2.rectangle() cv2.ellipse() cv2. ...

  4. 用MATLAB画多边形并写入DXF文件

    最近想画个螺旋电感,希望通过控制参数批量生成.于是研究了一下编程实现,流程是这样的:在MATLAB中生成图形,得到每个点的坐标,而后写入DXF文件,最后在版图编辑器里再导入DXF文件生成版图. 1.生 ...

  5. [Unity]利用Mesh在Unity中绘制扇形图片

    背景 最近碰到个功能, 要画一个扇形图案, 如下图: 美术原图: 需求是这个图形跟随角色, 在角色背后, 并且每个角色的扇形角度可能不同. So, NGUI和UGUI很好用的FilledType是用不 ...

  6. powerdesigner箭头如何画_用Scratch编程画几何图形:如何画多边形

    用Scratch编程软件来画几何图形是件非常有趣的事情,大家可以用学过的几何知识结合编程技巧画出各种各样的几何图形.从简单的单一图形到复杂的组合图形,你想怎么画就怎么画,就看你的创意了. 上一期给大家 ...

  7. android画一个圆形图片组件

    imageview 显示圆形图片如下图. 圆形头像原理. 1.根据图片创建一个大小相同的画布. 2.在画布上画一个圆形. 3.画一个绘制交集,显示上层. // 将圆形图片,返回Bitmappublic ...

  8. tablueau地图标记圆形_高德地图实现自定义小蓝点 自定义点标记 绘制多边形/圆形区域 根据地图的移动显示或者隐藏自定义点标记的相关实现...

    最近项目中有需要应用到高德地图的模块,在参考别的app地图相关模块实现过程中,自己产生了一些想法.首先说明要实现的功能需求.类似支付宝app内的跑腿功能,在全市的所有商铺,电梯广告等任意地点发布任务, ...

  9. 问题三十二:怎么用ray tracing画多边形(polygon, triangle)

    画多边形主要分为两步: 1,光线和多边形所在的平面相交,求得交点: 2,判断交点是否在多边形内: 32.1 光线和多边形所在的平面相交 分别定义光线.多边形和多边形所在平面.光线和平面的方程如下:(注 ...

最新文章

  1. 苹果6可以分屏吗_榨苹果汁可以加蜂蜜水吗?蜂蜜苹果汁的作用
  2. C#-面向对象的多态思想 ---ShinePans
  3. 使用Spring Security 3.1保护RESTful Web服务,第3部分
  4. 工作失职的处理决定_员工工作失误处罚处理决定书范本(3篇)
  5. 数据分析工具有哪些类型
  6. android拆轮子系列之一步一步教你写微信抢红包插件
  7. 第六届蓝桥杯--奇妙的数字和移动距离
  8. qwidget设置背景透明_手机上设置“小小科技半透明”主题背景,效果美翻天!...
  9. 项目开发计划(GB856T——88)
  10. 卡尔曼滤波算法及其应用
  11. python 绘制点线
  12. 非计算机类专业毕业生五年程序员职业生涯的回顾和思考
  13. SQLServer中的Cross Apply、Outer Apply
  14. 关于我unity创建2d横版游戏的这件事1
  15. 阿博茨科技:不仅是工具,基于用户体验的CRM再选择
  16. nginx按日期统计访问人数uv和访问量pv
  17. 在html中清除浮动的代码,css 两种清除浮动经典实例代码
  18. vs2015下openGL freeglut+glew+gltools64位傻瓜式环境配置
  19. C语言程序设计孙家啸第一版,广东4月自考各专业程使用教材.doc
  20. Windows 下最实用的 Gvim 配置

热门文章

  1. 【Windows】“很抱歉,此功能看似已中断,并需要修复。请使用Windows控制面板中的“程序和功能”选项修复Microsoft Office。”的解决方法
  2. 前端项目更换鼠标样式
  3. 什么是Java语言?java语言简介
  4. 腾讯服务器系统崩溃 请稍后再试,麻烦版主进来一下!腾讯手游助手隔几分钟就崩溃,重装系统也不好使不知道什么原因。求解决!!...
  5. SLAM实操入门(六):连接Velodyne的16线激光雷达并可视化
  6. 非全日制毕业的研究生现在怎么样了?
  7. Android修改系统中默认字体大小
  8. 为啥只有IPv4和IPv6,没有IPv5呢?
  9. 食品工程原理之伯努利方程的应用
  10. 微信小程序利用canvas画出根据文字自适应的边框