本文简述了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. GoCN每日新闻(2019-11-01)

    GoCN每日新闻(2019-11-01) GoCN每日新闻(2019-11-01) 1. Rob Pike 认为 Go 成功的 5 个因素 https://changelog.com/posts/5- ...

  2. Android Studio 屏幕方向以及UI界面状态的保存

    package com.example.orientation; import android.os.Bundle; import android.util.Log; import android.v ...

  3. webpack配置css浏览器前缀

    webpack打包时,css自动添加浏览器前缀.我们需要用到一个Loader:postcss-loader,和一个插件:autoprefixer 安装 npm i postcss-loader aut ...

  4. IntelliJ IDEA 运行你的第一个Java应用程序 idea运行main方法

    IntelliJ IDEA 运行你的第一个Java应用程序创建项目让我们创建一个简单的Java Hello World项目. 单击创建新的项目. 打开新建项目向导.你应该注意的主要是项目的SDK.SD ...

  5. tensorflow 笔记 15:如何使用 Supervisor

    如何使用Supervisor在不使用Supervisor的时候,我们的代码经常是这么组织的 variables ... ops ... summary_op ... merge_all_summari ...

  6. (转)react 项目构建

    原文:https://segmentfault.com/a/1190000016342792 写在前面 每次构建react项目的时候都会配置一大堆东西,时间久了就会忘记怎么配置.为了方便自己记忆也为了 ...

  7. 列表初始化 分析initializer_list<T>的实现

    列表初始化(1)_统一初始化 1. 统一初始化(Uniform Initialization) (1)在C++11之前,很多程序员特别是初学者对如何初始化一个变量或对象的问题很容易出现困惑.因为可以用 ...

  8. WebGL学习笔记(十二):加载模型文件

    目前为止,我们用到的模型顶点uv信息等,都是直接定义在代码中的,实际使用中,这些数据应该是由3D编辑器编辑好后按照一定的格式存储在文件中的,我们需要从文件中提取出对应的数据之后,组合成我们可以使用的信 ...

  9. 百度网盘快速下载工具下载:Pandownload下载

    众所周知的百度网盘下载限速很厉害,所以就有了快速下载工具出现了.一般情况下,按照家里网速有多快,使用工具下载就有多快. 可以直接复制如下图进行下载: 另外,PanDownload[百度网盘下载工具]无 ...

  10. Spring Boot整合UEditor不修改源码

    1.创建Springboot项目,目录结构如下(在resources中static/ueditor/jsp/config.json) 2.pom文件引入 <dependency> < ...