本文简述了Unity中绘制正五边形网格的基本方法:计算顶点信息、设置三角形覆盖信息、创建配置mesh

绘制方法

  • 基本思路:计算出五边形顶点坐标信息作为数组,设置三角形包围方式,再创建新的mesh配置vertices、triangle参数,最终赋值到当前mesh上
  • 项目实现:
    • 创建DrawPentagon.cs,挂在于带有mesh的物体上(本例为Quad
    • 编写代码如下:
    • 查看所创建的mesh信息
public class DrawPentagon : MonoBehaviour
{
private Vector3[] newVertices; //五边形顶点数组
private int[] newTriangles; //五边形网格内的三角形网格信息 void Start()
{
//1. 创建五边形顶点坐标数组:顶点编号0~4
newVertices = new Vector3[5] {
Vector3.zero,
new Vector3(Mathf.Cos(Mathf.Deg2Rad * 36), 0, Mathf.Sin(Mathf.Deg2Rad * 36)),
new Vector3(2 * Mathf.Cos(Mathf.Deg2Rad * 36), 0, 0),
new Vector3(Mathf.Cos(Mathf.Deg2Rad * 72) + 1, 0, -Mathf.Sin(Mathf.Deg2Rad * 72)),
new Vector3(Mathf.Cos(Mathf.Deg2Rad * 72), 0, -Mathf.Sin(Mathf.Deg2Rad * 72))
/*
newVertices[0] = (0.0, 0.0, 0.0)
newVertices[1] = (0.8, 0.0, 0.6)
newVertices[2] = (1.6, 0.0, 0.0)
newVertices[3] = (1.3, 0.0, -1.0)
newVertices[4] = (0.3, 0.0, -1.0)
*/
}; //2. 设根据已有的顶点编号设置三角形包围顺序,例如0,1,2顶点围成一个三角形;0,2,3顶点围成另一三角形
newTriangles = new int[9] { 0, 1, 2, 0, 2, 3, 0, 3, 4 }; //错误情况:三角形数量不足
//newTriangles = new int[6] { 0, 1, 2, 0, 2, 3 }; //错误情况:三角形覆盖面不全
//newTriangles = new int[9] { 0, 1, 2, 1, 2, 3, 0, 3, 4 }; //3. 创建mesh信息:顶点数据、三角形
Mesh mesh = new Mesh
{
name = "Pentagon",
vertices = newVertices,
triangles = newTriangles
};
GetComponent<MeshFilter>().mesh = mesh;
}
}

示意图及错误示例:

参考

Unity - 绘制正五边形网格的更多相关文章

  1. unity 3d 之合并网格和贴图(combine mesh and texture)

    https://www.cnblogs.com/eangulee/p/3877824.html unity 3d 之合并网格和贴图(combine mesh and texture)   本人是个小白 ...

  2. #使用Python的turtle绘制正六边形、叠边形

    1.#Python的turtle绘制正六边形 代码: len=100 #表示边长像素 import turtle as t #正六边形内角都是120度,外角60度 for i in range(6): ...

  3. Unity 绘制多边形

    最近工程需要用到一个多边形用来查看角色属性,于是就研究了下Mesh用网格做了一个.遗憾的的 UGUI 渲染不了 3D 物体,然后又用了一段时间研究了下UGUI的网格绘制. 不过终于还是完成了,虽然有些 ...

  4. unity 绘制三角形

    哎 该学的还是要学 参考:http://www.narkii.com/club/thread-369573-1.html unity 顶点绘制三角形 脚本绘制; 其实filter和render就是进行 ...

  5. CSS绘制正五角星原理(数学模型)

    尽管网上有很多CSS绘制五角星的代码案例,但是对于初学者来说可以拿来移植使用,但是在不明白其原理的情况下,进行修改移植就比较困难了.譬如想要将五角星尺寸进行缩小或者放大等设计,就需要对原代码相关数据进 ...

  6. unity绘制线和绘制面

    绘制线条代码,其实就是指定至少两个点,然后赋予贴图即可,不废话,上代码: using UnityEngine; using System.Collections; public class LineT ...

  7. unity中动态生成网格

    以下是绘制正方形面片的一个例子,方便之后查阅: 效果如图所示: 红轴为x方向,蓝轴为z方向. 代码如下: using System.Collections; using System.Collecti ...

  8. 使用ICEM绘制非结构网格时,如何提高网格质量?【转载】

    作者:杨淑娟 链接:https://www.zhihu.com/question/20851390/answer/26152732 来源:知乎 著作权归作者所有.商业转载请联系作者获得授权,非商业转载 ...

  9. Unity绘制GUI连连看(尚未完善效果和重置)

    OneImage.cs public class OneImage : MonoBehaviour { public int row, col; public Rect rect; public Te ...

随机推荐

  1. Eureka 的高级使用

    基础架构Eureka架构中的三个核心角色: 服务注册中心 Eureka的服务端应用,提供服务注册和发现功能,就是刚刚我们建立的eureka-demo 服务提供者 提供服务的应用,可以是SpringBo ...

  2. Ubuntu 19.04 国内更新源

    2019年4月18日, Ubuntu 19.04 正式发布. Ubuntu 19.04 的 Codename 是"disco(迪斯科舞厅)": zkf@ubuntu:~$ lsb_ ...

  3. Python-DDT框架

    Install pip install ddt 实例 import unittest from ddt import ddt, data, unpack @ddt class MyTestCase(u ...

  4. 集合类 Map接口 HashTable

    集合类的另外一种重要实现为Map接口,Map接口提供的方法如下: Map接口一个不常见实现为HashTable,HashTable对所有有并发访问问题的方法通过 synchronized 关键字进行并 ...

  5. java和vue2.0

    1 java中的el表达式${对象.属性}和vue中的双向数据绑定{{mode.xx}}感觉有点类似 2 java中  request.setAttribute("hots", l ...

  6. Postman 插件安装和使用

    1.google商店 搜索“谷歌访问助手” 2.在商店搜索Postman 3.安装Postman 4.访问chrome://apps/  5.点击postman

  7. Beef搭建并通过Nginx绑定域名

    Beef和Nginx安装过程这里就不再说明了相关链接:Beef官方安装教程 1. 修改Beef的config.yaml配置文件 xss连接地址改成要绑定的域名 sudo vim /beef/confi ...

  8. 工具系列 | PHPSTROM 连接Docker容器 && 配置XDEBUG调试

    Docker 客户端配置 PHPSTROM 配置 选择连接 容器日志 配置Xdebug 开启Debug模式 打断点 浏览器访问该项目地址:http://wiot.frp.tinywan.top/

  9. Redis 键的过期删除策略及缓存淘汰策略

    前言 Redis缓存淘汰策略与Redis键的过期删除策略并不完全相同,前者是在Redis内存使用超过一定值的时候(一般这个值可以配置)使用的淘汰策略:而后者是通过定期删除+惰性删除两者结合的方式进行内 ...

  10. linux下如何使用adb连接在qemu中运行的安卓系统?

    1. 运行安卓系统, 如下: $sudo qemu-system-x86_64 -m 4096 -boot d -enable-kvm -smp 3 -net nic -net user,hostfw ...