Unity用Mesh画多边形、圆形
首先贴上效果图
上面两个图就是使用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画多边形、圆形相关推荐
- Unity Mesh(一) 初步使用Mesh画平面图形
最近发现Mesh很牛的样子,虽然以前也见过人家大牛用这个写过工具,当时没大在意,现在开始接触,觉得挺好玩的,首先先上我画的几个图: 据说还可以画各种形状,原理就是所有图形都是由三角形组成的. 下面我们 ...
- 学习笔记:unity通过Mesh网格绘制图形:三角形正方体圆柱
一,介绍 Mesh类:通过脚本创建或是获取网格的类,网格包含多个顶点和三角形数组.顶点信息包含坐标和所在面的法线. unity中3D的世界的所有图形全部都是由三角形构成的. 比如unity已经装配好的 ...
- Python+OpenCV 图像处理系列(3)—— 画线、矩形、画圆、画椭圆、画多边形
OpenCV 中的绘图函数 使用 OpenCV 绘制不同几何图形,其中包括的函数有 cv2.line() cv2.circle() cv2.rectangle() cv2.ellipse() cv2. ...
- 用MATLAB画多边形并写入DXF文件
最近想画个螺旋电感,希望通过控制参数批量生成.于是研究了一下编程实现,流程是这样的:在MATLAB中生成图形,得到每个点的坐标,而后写入DXF文件,最后在版图编辑器里再导入DXF文件生成版图. 1.生 ...
- [Unity]利用Mesh在Unity中绘制扇形图片
背景 最近碰到个功能, 要画一个扇形图案, 如下图: 美术原图: 需求是这个图形跟随角色, 在角色背后, 并且每个角色的扇形角度可能不同. So, NGUI和UGUI很好用的FilledType是用不 ...
- powerdesigner箭头如何画_用Scratch编程画几何图形:如何画多边形
用Scratch编程软件来画几何图形是件非常有趣的事情,大家可以用学过的几何知识结合编程技巧画出各种各样的几何图形.从简单的单一图形到复杂的组合图形,你想怎么画就怎么画,就看你的创意了. 上一期给大家 ...
- android画一个圆形图片组件
imageview 显示圆形图片如下图. 圆形头像原理. 1.根据图片创建一个大小相同的画布. 2.在画布上画一个圆形. 3.画一个绘制交集,显示上层. // 将圆形图片,返回Bitmappublic ...
- tablueau地图标记圆形_高德地图实现自定义小蓝点 自定义点标记 绘制多边形/圆形区域 根据地图的移动显示或者隐藏自定义点标记的相关实现...
最近项目中有需要应用到高德地图的模块,在参考别的app地图相关模块实现过程中,自己产生了一些想法.首先说明要实现的功能需求.类似支付宝app内的跑腿功能,在全市的所有商铺,电梯广告等任意地点发布任务, ...
- 问题三十二:怎么用ray tracing画多边形(polygon, triangle)
画多边形主要分为两步: 1,光线和多边形所在的平面相交,求得交点: 2,判断交点是否在多边形内: 32.1 光线和多边形所在的平面相交 分别定义光线.多边形和多边形所在平面.光线和平面的方程如下:(注 ...
最新文章
- 苹果6可以分屏吗_榨苹果汁可以加蜂蜜水吗?蜂蜜苹果汁的作用
- C#-面向对象的多态思想 ---ShinePans
- 使用Spring Security 3.1保护RESTful Web服务,第3部分
- 工作失职的处理决定_员工工作失误处罚处理决定书范本(3篇)
- 数据分析工具有哪些类型
- android拆轮子系列之一步一步教你写微信抢红包插件
- 第六届蓝桥杯--奇妙的数字和移动距离
- qwidget设置背景透明_手机上设置“小小科技半透明”主题背景,效果美翻天!...
- 项目开发计划(GB856T——88)
- 卡尔曼滤波算法及其应用
- python 绘制点线
- 非计算机类专业毕业生五年程序员职业生涯的回顾和思考
- SQLServer中的Cross Apply、Outer Apply
- 关于我unity创建2d横版游戏的这件事1
- 阿博茨科技:不仅是工具,基于用户体验的CRM再选择
- nginx按日期统计访问人数uv和访问量pv
- 在html中清除浮动的代码,css 两种清除浮动经典实例代码
- vs2015下openGL freeglut+glew+gltools64位傻瓜式环境配置
- C语言程序设计孙家啸第一版,广东4月自考各专业程使用教材.doc
- Windows 下最实用的 Gvim 配置
热门文章
- 【Windows】“很抱歉,此功能看似已中断,并需要修复。请使用Windows控制面板中的“程序和功能”选项修复Microsoft Office。”的解决方法
- 前端项目更换鼠标样式
- 什么是Java语言?java语言简介
- 腾讯服务器系统崩溃 请稍后再试,麻烦版主进来一下!腾讯手游助手隔几分钟就崩溃,重装系统也不好使不知道什么原因。求解决!!...
- SLAM实操入门(六):连接Velodyne的16线激光雷达并可视化
- 非全日制毕业的研究生现在怎么样了?
- Android修改系统中默认字体大小
- 为啥只有IPv4和IPv6,没有IPv5呢?
- 食品工程原理之伯努利方程的应用
- 微信小程序利用canvas画出根据文字自适应的边框