当前位置: 首页 > news >正文

Unity中Mesh多种网格绘制模式使用方法参考

        Unity中MeshFilter中的Mesh默认情况下使用MeshTopology.Trigangles类型绘制网格,就是通常的绘制三角形网格,实际上Mesh有五种绘制模式,对应MeshTopology的枚举,分别是

Triangles网格由三角形构成。
Quads网格由四边形构成。
Lines网格由线条构成。
LineStrip网格是线条带。
Points网格由点构成。

        这里以Lines和Quads为例说明Trigangles方式之外的绘制方式。

        效果如下:

        参考代码如下:

using System.Collections.Generic;
using UnityEngine;public class LineMeshTest : MonoBehaviour
{[SerializeField]Material material;void Start(){GameObject circle = new GameObject("Circle");circle.transform.SetParent(transform);circle.transform.localPosition = new Vector3(-5, 0, 0);MeshFilter filterCircle = circle.AddComponent<MeshFilter>();Mesh meshCircle = GetCircleMesh(2);filterCircle.mesh = meshCircle;MeshRenderer renderCircle = circle.AddComponent<MeshRenderer>();renderCircle.material = material;GameObject quad = new GameObject("Quad");quad.transform.SetParent(transform);quad.transform.localPosition = new Vector3(5, 0, 0);MeshFilter filterQuad = quad.AddComponent<MeshFilter>();Mesh meshQuad = GetQuadMesh(5);filterQuad.mesh = meshQuad;MeshRenderer rendeQuad = quad.AddComponent<MeshRenderer>();rendeQuad.material = material;}Mesh GetCircleMesh(float radius){List<Vector3> vertexList = new();List<int> indexList = new List<int>();float radDelta = Mathf.PI / 36;for (float i = 0; i < 72f; i++){float rad = radDelta * i;Vector3 vert = new(radius * Mathf.Cos(rad), radius * Mathf.Sin(rad), 0);vertexList.Add(vert);}indexList.Add(0);for (int i = 1; i < 72; i++){indexList.Add(i);indexList.Add(i);}indexList.Add(0);Mesh mesh = new();mesh.SetVertices(vertexList);mesh.SetIndices(indexList.ToArray(), MeshTopology.Lines, 0);return mesh;}Mesh GetQuadMesh(float size){float s = size * 0.5f;Vector3[] vertices = new[] { new Vector3(s, s, 0), new Vector3(s, -s, 0), new Vector3(-s, -s, 0), new Vector3(-s, s, 0) };int[] indices = new[] { 0, 1, 2, 3 };Mesh mesh = new Mesh();mesh.SetVertices(vertices);mesh.SetIndices(indices, MeshTopology.Quads, 0);return mesh;}
}

         这个例子里面使用Mesh绘制了一个圆形线条,注意这两行语句:

mesh.SetIndices(indexList.ToArray(), MeshTopology.Lines, 0);
mesh.SetIndices(indices, MeshTopology.Quads, 0);

http://www.lryc.cn/news/452914.html

相关文章:

  • 【Spring Security】基于SpringBoot3.3.4版本②如何配置免鉴权Path
  • 信息学奥赛复赛复习11-CSP-J2020-04方格取数-动态规划、斐波那契数列、最优子结构、重叠子问题、无后效性
  • Hive数仓操作(十二)
  • 计算机毕业设计 基于SpringBoot和Vue的课程教学平台的设计与实现 Java实战项目 附源码+文档+视频讲解
  • 有状态(Session) VS 无状态(Token)
  • 天坑!Spark+Hive+Paimon+Dolphinscheduler
  • JAVA——IO框架
  • 项目管理系统如何实现项目申报流程自动化?
  • ndb9300public-ndb2excel简介
  • C++:const成员
  • 基于ROS的激光雷达点云物体检测
  • 大模型训练环境搭建
  • 使用Java调用GeoTools实现全球国家矢量数据入库实战
  • 计算机毕业设计 基于Python的广东旅游数据分析系统的设计与实现 Python+Django+Vue Python爬虫 附源码 讲解 文档
  • Springboo通过http请求下载文件到服务器
  • 使用CSS实现酷炫加载
  • 【STM32-HAL库】AHT10温湿度传感器使用(STM32F407ZGT6配置i2c)(附带工程下载连接)
  • 深入理解网络通信: 长连接、短连接与WebSocket
  • Linux·环境变量与进程地址空间
  • MYSQL 乐观锁
  • SpringCloud入门(十二)全局过滤器和跨域
  • 51单片机系列-按键检测原理
  • 基于元神操作系统实现NTFS文件操作(五)
  • AutoCAD学习
  • go的一些知识点
  • 前端 vue3 对接科大讯飞的语音在线合成API
  • 缺省参数
  • Stable Diffusion绘画 | 来训练属于自己的模型:炼丹启动
  • 08_OpenCV文字图片绘制
  • 【笔记】选择题笔记+数据结构笔记