Unity 网格画图形
鹅肉网格画图形就是画三角形
画一个正方形
建一个空物体加一些组件Mesh Filter,Mesh Renderer.
找到对应顶点(AddVert添加顶点),就可以绘制了(顶点是可以变得),我就绘制了正面。(顺指针绘制可以看到正面,逆时针看到后面,想要正反都看到,就正反都绘制)
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;public class Creatsquare : MonoBehaviour
{// Start is called before the first frame updatevoid Start(){Mesh mesh = new Mesh();VertexHelper vh = new VertexHelper();vh.AddVert(new Vector3(0, 0, 0), Color.white, new Vector2(0, 0));vh.AddVert(new Vector3(0, 1, 0), Color.white, new Vector2(0, 1));vh.AddVert(new Vector3(1, 0, 0), Color.white, new Vector2(1, 0));vh.AddVert(new Vector3(1, 1, 0), Color.white, new Vector2(1, 1));vh.AddTriangle(0, 1, 3);vh.AddTriangle(0, 3, 2);vh.FillMesh(mesh);GetComponent<MeshFilter>().mesh = mesh;}// Update is called once per framevoid Update(){}
}
运行后
然后画正方体
想要看到下面就要逆着画
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;public class Creatcube : MonoBehaviour
{// Start is called before the first frame updatevoid Start(){Mesh mesh = new Mesh();VertexHelper vh = new VertexHelper();//正面vh.AddVert(new Vector3(0, 0, 0), Color.white, new Vector2(0, 0));vh.AddVert(new Vector3(0, 1, 0), Color.white, new Vector2(1, 0));vh.AddVert(new Vector3(1, 1, 0), Color.white, new Vector2(1, 1));vh.AddVert(new Vector3(1, 0, 0), Color.white, new Vector2(0, 1));//右面vh.AddVert(new Vector3(1, 0, 0), Color.white, new Vector2(0, 0));vh.AddVert(new Vector3(1, 1, 0), Color.white, new Vector2(1, 0));vh.AddVert(new Vector3(1, 1, 1), Color.white, new Vector2(1, 1));vh.AddVert(new Vector3(1, 0, 1), Color.white, new Vector2(0, 1));//后面vh.AddVert(new Vector3(1, 0, 1), Color.white, new Vector2(0, 0));vh.AddVert(new Vector3(1, 1, 1), Color.white, new Vector2(1, 0));vh.AddVert(new Vector3(0, 1, 1), Color.white, new Vector2(1, 1));vh.AddVert(new Vector3(0, 0, 1), Color.white, new Vector2(0, 1));//左面vh.AddVert(new Vector3(0, 0, 1), Color.white, new Vector2(0, 0));vh.AddVert(new Vector3(0, 1, 1), Color.white, new Vector2(1, 0));vh.AddVert(new Vector3(0, 1, 0), Color.white, new Vector2(1, 1));vh.AddVert(new Vector3(0, 0, 0), Color.white, new Vector2(0, 1));//上面vh.AddVert(new Vector3(0, 1, 0), Color.white, new Vector2(0, 0));vh.AddVert(new Vector3(0, 1, 1), Color.white, new Vector2(1, 0));vh.AddVert(new Vector3(1, 1, 1), Color.white, new Vector2(1, 1));vh.AddVert(new Vector3(1, 1, 0), Color.white, new Vector2(0, 1));//下面vh.AddVert(new Vector3(0, 0, 0), Color.white, new Vector2(0, 0));vh.AddVert(new Vector3(0, 0, 1), Color.white, new Vector2(1, 0));vh.AddVert(new Vector3(1, 0, 1), Color.white, new Vector2(1, 1));vh.AddVert(new Vector3(1, 0, 0), Color.white, new Vector2(0, 1));//正面vh.AddTriangle(0, 1, 2);vh.AddTriangle(0, 2, 3);//右面vh.AddTriangle(4, 5, 6);vh.AddTriangle(4, 6, 7);//后面vh.AddTriangle(8,9,10);vh.AddTriangle(8,10,11);//左面vh.AddTriangle(12,13,14);vh.AddTriangle(12,14,15);//上面vh.AddTriangle(16, 17, 18);vh.AddTriangle(16, 18, 19);//下面vh.AddTriangle(20, 23, 22);vh.AddTriangle(20, 22, 21);vh.FillMesh(mesh);GetComponent<MeshFilter>().mesh = mesh;}// Update is called once per framevoid Update(){}
}
最后画个圆
找到对应三角形顶点
找到渲染图片位置
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;public class Creatcircle : MonoBehaviour
{int num = 100;//三角形个数int r = 1;//半径// Start is called before the first frame updatevoid Start(){Mesh mesh = new Mesh();VertexHelper vh = new VertexHelper();//圆float ang = (2 * Mathf.PI) / num;//弧度vh.AddVert(new Vector3(0, 0, 0), Color.red, new Vector2(0.5f, 0.5f));//原点for (int i = 0; i < num; i++){float x = Mathf.Sin(ang * i) * r;float y = Mathf.Cos(ang * i) * r;float uvx = (x + r) / (2 * r);float uvy = (y + r) / (2 * r);vh.AddVert(new Vector3(x, y, 0), Color.red, new Vector2(uvx, uvy));if (i == 0){vh.AddTriangle(0, num, 1);}else{vh.AddTriangle(0, i, i + 1);}}vh.FillMesh(mesh);GetComponent<MeshFilter>().mesh = mesh;}// Update is called once per framevoid Update(){}
}
Unity 网格画图形相关推荐
- Unity网格篇Mesh(一)
程序代码实现网格 这里根据CSDNSpring5211的一篇文章,进行网格学习为网格材质合并作为一个基础 本文的目标 创建网格坐标 使用携程计算他们位置 利用三角形确定一个面 自动生成法线 添加纹理坐 ...
- python简单图画程序_用Python的Turtple画图形
不知道各位是否还记得在小学或者初中的时候,我们接触过一种语言叫做logo语言,这个语言可以画正方形,画三角形,画圆.而用Python画图形也有点类似logo语言的意思. 在画图之前,我们需要启动一个模 ...
- 用python可以画的可爱的图形_用Python的Turtple画图形
不知道各位是否还记得在小学或者初中的时候,我们接触过一种语言叫做logo语言,这个语言可以画正方形,画三角形,画圆.而用Python画图形也有点类似logo语言的意思. 在画图之前,我们需要启动一个模 ...
- 【QT 5 学习笔记-学习绘图相关+画图形图片等+绘图设备+基础学习(2)】
[QT 5 学习笔记-学习绘图相关+画图形图片等+绘图设备+基础学习(2)] 1.说明 2.实验环境 3.参照连接 4.自己的学习与理解 5.学习与实践代码 (1)移动图片测试实验 (1)继续之前的工 ...
- win10画图程序拖动鼠标画图形功能用python实现的思路
win10画图程序本质上是一个位图处理程序.其最主要的功能是画各种图形,包括线.矩形.椭圆(圆)和各种多边形等,并将各种图形保存到位图中.线.矩形.椭圆(圆)和各种多边形都可以用一个矩形定位,这点在前 ...
- openlayers学习——8、openlayers画图形
openlayers画图形 前言:基于Vue,学习openlayers,根据官网demo,记录常用功能写法.本人不是专业GIS开发,只是记录,方便后续查找. 参考资料: openlayers官网:ht ...
- QT绘图(添加背景,画图形)
绘图设备: QPixmap:针对屏幕进行优化了,和平台相关 QImage:和平台无关,可以对图片进行修改,在线程中绘图 QPicture:保存绘图的状态,保存为二进制文件 画背景图 创建一个widge ...
- unity 网格面片生成抛物线,折线
unity 网格面片生成抛物线,折线 实现效果 工程文件下载地址 一. 网格面片的建立方法 编写一个通用的网格面片线生成方法 线宽的处理 网格面片线建立相对于,管道线建立<unity 线绳管道纯 ...
- 学习笔记:unity通过Mesh网格绘制图形:三角形正方体圆柱
一,介绍 Mesh类:通过脚本创建或是获取网格的类,网格包含多个顶点和三角形数组.顶点信息包含坐标和所在面的法线. unity中3D的世界的所有图形全部都是由三角形构成的. 比如unity已经装配好的 ...
最新文章
- linux apache配置多线程,linux apache 日志配置
- ASP.NET 2.0中如何连接到Mysql(转)
- 使用Data::Dumper
- ecs 对比 本地服务器_ECS训练营Day03_SLB负载均衡实践 - 魔笔钨丝浣
- Oracle 11g R2手动配置EM(转)
- NOIP2017TG D1T2 时间复杂度
- Mac python Tesseract 验证码识别
- python连接sqlite数据库的代码_Python3实现连接SQLite数据库的方法
- C++中全局变量的使用
- 漫画:什么是神秘的“凯利公式”?
- .NET Core 管道
- mysql日期函数转换_Mysql日期函数大全 转
- Linux下网络抓包工具(ngrep)
- C#-实现的鼠标钩子
- 《Adobe Photoshop CS6中文版经典教程(彩色版)》目录—导读
- 记录struts2 和struts1的页面验证码生成
- React 360 全景VR交互项目实战
- python opencv灰度转rgb
- websphereJDBC提供驱动程序配置问题,导致报错:Illegal attempt to enlist multiple 1PC XAResources
- win 7系统出现计算机内存不足,win7系统计算机内存不足的解决方法
热门文章
- 【使用python获取pdf所需数据】
- [PHP问题]Cannot redeclare xxxxxx() (previously declared in C:\WWW\xxx.xxx:xxx)
- 网站排名下降怎么恢复(网站降权的原因如何知道)
- 手把手教你用jQuery Mobile做相册
- 如何让win7在桌面显示ie图标
- pbl和sbl_探讨:PBL教学法
- 山海演武传·黄道·第一卷 雏龙惊蛰 第十三章 穷奇长梦(上) 十四 穷奇长梦(下)
- Android 面部识别之二(调用开源面部识别算法seetaface检测)
- 中国31省 5G网速 排名!
- 蛮力法 第5关:白帽子红帽子问题