unity使用mesh 画图(1)

embedded/2025/3/13 8:28:57/

plane 圆 空心椭圆 椭圆

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;public class DrawMeshManager
{static DrawMeshManager instance;public static DrawMeshManager Instance {get {if (instance != null){return instance;}else{instance = new DrawMeshManager();return instance;}}}
//面片public void DrawMesh(){Mesh mesh = new Mesh();Vector3[] vertices = new Vector3[]{new Vector3(0, 0, 0),new Vector3(0, 0, 10),new Vector3(10, 0, 10),new Vector3(10, 0, 0),};mesh.vertices = vertices;int[] triangles = new int[]{0, 1, 2,0, 2, 3};mesh.triangles = triangles;Vector3[] normals = new Vector3[]{Vector3.up,Vector3.up,Vector3.up, Vector3.up};mesh.normals = normals;Vector2[] uvs = new Vector2[]{new Vector2(0, 0),new Vector2(1, 0),new Vector2(1, 1),new Vector2(0, 1)};mesh.uv = uvs;GameObject obj = new GameObject("MeshObject");MeshFilter meshFilter = obj.AddComponent<MeshFilter>();meshFilter.mesh = mesh;MeshRenderer renderer = obj.AddComponent<MeshRenderer>();Material material = new Material(Shader.Find("Standard"));material.shader = Shader.Find("Sprites/Default");material.SetColor("_Color", Color.red);renderer.material = material;}
//五角星public void Drawfivestar(){Mesh mesh = new Mesh();const int num = 5;float rad = 0;const float r1 = 5, r2 = 2;rad = 2 * Mathf.PI / num;Vector3[] vertices = new Vector3[num * 2 + 1];vertices[0] = Vector3.zero;for (int i = 1; i <= num; i++){float angle = i * rad;float x = Mathf.Cos(angle) * r1;float y = Mathf.Sin(angle) * r1;Vector3 v1 = new Vector3(x, y, 0);vertices[i * 2 - 1] = v1;float x1 = Mathf.Cos(angle + (rad / 2)) * r2;float y1 = Mathf.Sin(angle + (rad / 2)) * r2;Vector3 v2 = new Vector3(x1, y1, 0);vertices[i * 2] = v2;}mesh.vertices = vertices;int[] triangles = new int[num * 6];for (int i = 0; i < 10; i++){if (i != 9){triangles[i * 3] = 0;triangles[i * 3 + 1] = i + 1;triangles[i * 3 + 2] = i + 2;}else{triangles[i * 3] = 0;triangles[i * 3 + 1] = 10;triangles[i * 3 + 2] = 1;}}mesh.triangles = triangles;mesh.RecalculateNormals();GameObject obj = new GameObject("MeshObject");MeshFilter meshFilter = obj.AddComponent<MeshFilter>();meshFilter.mesh = mesh;MeshRenderer renderer = obj.AddComponent<MeshRenderer>();Material material = new Material(Shader.Find("Standard"));material.shader = Shader.Find("Sprites/Default");material.SetColor("_Color", Color.red);renderer.material = material;}public void DrawBox(){Mesh mesh = new Mesh();const float boxHegih = 5, width = 3;Vector3 center = Vector3.zero;const float halfSize = 5;Vector3[] vertices = new Vector3[]{new Vector3(center.x - halfSize, center.y - halfSize, center.z - halfSize), // P0new Vector3(center.x + halfSize, center.y - halfSize, center.z - halfSize), // P1new Vector3(center.x + halfSize, center.y + halfSize, center.z - halfSize), // P2new Vector3(center.x - halfSize, center.y + halfSize, center.z - halfSize), // P3new Vector3(center.x - halfSize, center.y - halfSize, center.z + halfSize), // P4new Vector3(center.x + halfSize, center.y - halfSize, center.z + halfSize), // P5new Vector3(center.x + halfSize, center.y + halfSize, center.z + halfSize), // P6new Vector3(center.x - halfSize, center.y + halfSize, center.z + halfSize) // P7};mesh.vertices = vertices;int[] triangles = new int[]{0, 2, 1,0, 3, 2,1, 2, 6,1, 6, 5,3, 7, 2,7, 6, 2,0, 1, 5,0, 5, 4,3, 0, 4,4, 7, 3,5, 6, 7,7, 4, 5,};mesh.triangles = triangles;mesh.RecalculateNormals();GameObject obj = new GameObject("Cube");MeshFilter meshFilter = obj.AddComponent<MeshFilter>();meshFilter.mesh = mesh;MeshRenderer renderer = obj.AddComponent<MeshRenderer>();Material material = new Material(Shader.Find("Standard"));renderer.material = material;}
//圆public void DrawCircle(){Mesh mesh = new Mesh();const int num = 50;float singleAngle = 0;const float radius = 3;singleAngle = 2 * Mathf.PI / num;Vector3 center = Vector3.zero;Vector3[] vertices = new Vector3[num + 1];vertices[0] = center;for (int i = 1; i <= num; i++){float currentAngle = i * singleAngle;float x = radius * Mathf.Cos(currentAngle);float y = radius * Mathf.Sin(currentAngle);Vector3 point = new Vector3(x, y, 0);vertices[i] = point;}mesh.vertices = vertices;int[] triangles = new int[num * 3];for (int i = 0; i < num; i++){if (i != num - 1){triangles[i * 3] = 0;triangles[i * 3 + 1] = i + 1;triangles[i * 3 + 2] = i + 2;}else{triangles[i * 3] = 0;triangles[i * 3 + 1] = num;triangles[i * 3 + 2] = 1;}}mesh.triangles = triangles;GameObject obj = new GameObject("MeshObject");MeshFilter meshFilter = obj.AddComponent<MeshFilter>();meshFilter.mesh = mesh;MeshRenderer renderer = obj.AddComponent<MeshRenderer>();Material material = new Material(Shader.Find("Standard"));material.shader = Shader.Find("Sprites/Default");material.SetColor("_Color", Color.red);renderer.material = material;}
//椭圆public void DrawEllipse(){const float r1 = 3, r2 = 7;const int num = 100;float singleAngle = 2 * Mathf.PI / num;Mesh mesh = new Mesh();Vector3[] vertices = new Vector3[num + 1];vertices[0] = Vector3.zero;for (int i = 0; i <= num; i++){float x = Mathf.Sin(i * singleAngle) * r1;float y = Mathf.Cos(i * singleAngle) * r2;Vector3 point = new Vector3(x, y, 0);vertices[i] = point;}mesh.vertices = vertices;int[] triangles = new int[num * 3];for (int i = 0; i < num; i++){if (i != num - 1){triangles[i * 3] = 0;triangles[i * 3 + 1] = i + 1;triangles[i * 3 + 2] = i + 2;}else{triangles[i * 3] = 0;triangles[i * 3 + 1] = num;triangles[i * 3 + 2] = 1;}}mesh.triangles = triangles;mesh.triangles = triangles;GameObject obj = new GameObject("MeshObject");MeshFilter meshFilter = obj.AddComponent<MeshFilter>();meshFilter.mesh = mesh;MeshRenderer renderer = obj.AddComponent<MeshRenderer>();Material material = new Material(Shader.Find("Standard"));material.shader = Shader.Find("Sprites/Default");material.SetColor("_Color", Color.red);renderer.material = material;}//空心椭圆   使用内圈圆 的定点坐标 和外圈圆的定点坐标 画出空心椭圆 0,1,2,   1,3,2,  2,3,4 ,3,5,4public void HollowEllipse(){Mesh mesh = new Mesh();int num = 60;Vector3[] vertices = new Vector3[num * 2];float single = 2 * Mathf.PI / num;const float innerR1 = 2, innerR2 = 1;const float outR1 = 3, outR2 = 2;for (int i = 0; i < num; i++){float angle = i * single;float innerX = Mathf.Sin(angle) * innerR1;float innerY = Mathf.Cos(angle) * innerR2;vertices[i * 2] = new Vector3(innerX, innerY, 0);float outX = Mathf.Sin(angle) * outR1;float outY = Mathf.Cos(angle) * outR2;vertices[i * 2 + 1] = new Vector3(outX, outY, 0);}mesh.vertices = vertices;int[] triangles = new int[num * 2 * 3];for (int i = 0; i < num; i++){bool isTrue = i < num - 1;int v5 = isTrue ? 2 * i + 3 : 1;int v6 = isTrue ? 2 * i + 2 : 0;int index = i * 6;triangles[index] = i * 2;triangles[index + 1] = 2 * i + 1;triangles[index + 2] = v6;triangles[index + 3] = 2 * i + 1;triangles[index + 4] = v5;triangles[index + 5] = v6;}mesh.triangles = triangles;mesh.RecalculateNormals();GameObject obj = new GameObject("MeshObject");MeshFilter meshFilter = obj.AddComponent<MeshFilter>();meshFilter.mesh = mesh;MeshRenderer renderer = obj.AddComponent<MeshRenderer>();Material material = new Material(Shader.Find("Standard"));material.shader = Shader.Find("Sprites/Default");material.SetColor("_Color", Color.red);renderer.material = material;}}

http://www.ppmy.cn/embedded/172190.html

相关文章

制作windows完整复制模板

目录 一、安装windows 10 二、启用超管 三、安装HDA 四、封装系统 五、转模板 六、FA配置模板 配置思路步骤如下&#xff1a; 安装win10&#xff08;专业版&#xff09;&#xff0c;启用本地超管administrator&#xff0c;并用本地超管操作安装tools&#xff0c;关闭防火…

Docker基础篇——Ubuntu下Docker安装

大家好我是木木&#xff0c;在当今快速发展的云计算与云原生时代&#xff0c;容器化技术蓬勃兴起&#xff0c;Docker 作为实现容器化的主流工具之一&#xff0c;为开发者和运维人员带来了极大的便捷 。下面我们一起进行Docker安装。 Docker的官方Ubuntu安装文档&#xff0c;如…

Java 大视界 -- Java 大数据在智能安防视频摘要与检索技术中的应用(128)

&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎来到 青云交的博客&#xff01;能与诸位在此相逢&#xff0c;我倍感荣幸。在这飞速更迭的时代&#xff0c;我们都渴望一方心灵净土&#xff0c;而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识&#xff0c;也…

使用Open WebUI下载的模型文件(Model)默认存放在哪里?

&#x1f3e1;作者主页&#xff1a;点击&#xff01; &#x1f916;Ollama部署LLM专栏&#xff1a;点击&#xff01; ⏰️创作时间&#xff1a;2025年2月21日21点21分 &#x1f004;️文章质量&#xff1a;95分 文章目录 使用CMD安装存放位置 默认存放路径 Open WebUI下…

LabVIEW变频器谐波分析系统

随着工业自动化的发展&#xff0c;变频器在电力、机械等领域的应用日益广泛&#xff0c;但谐波问题直接影响系统效率与稳定性。传统谐波检测设备&#xff08;如Norma5000&#xff09;精度虽高&#xff0c;但价格昂贵且操作复杂&#xff0c;难以适应现场快速检测需求。本项目基于…

【NLP 36、CRF条件随机场 —— 源码解读】

目录 一、CRF —— 条件随机场&#xff1a; 1.CRF - 转移矩阵 2.发射矩阵 3.结合发射矩阵和转移矩阵 4.CRF —— Loss定义 二、CRF —— 源码解读 1.初始化CRF模块 2.随机初始化CRF参数 3.前向计算 4.维特比算法解码 5.验证输入张量 6.计算分数 7.计算归一化因子 8.解码标签序…

linux---天气爬虫

代码概述 这段代码实现了一个天气查询系统&#xff0c;支持实时天气、未来天气和历史天气查询。用户可以通过终端菜单选择查询类型&#xff0c;并输入城市名称来获取相应的天气信息。程序通过 TCP 连接发送 HTTP 请求&#xff0c;并解析返回的 JSON 数据来展示天气信息。 #in…

Kubernetes 中 YAML 文件详解

Kubernetes 中 YAML 文件详解 在 Kubernetes&#xff08;简称 K8s&#xff09;的世界里&#xff0c;YAML&#xff08;Yet Another Markup Language&#xff09;文件是核心配置工具。K8s 作为一个强大的容器编排系统&#xff0c;允许用户通过 YAML 文件来定义和管理各种资源&am…