unity使用mesh 画图(1)

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.rhkb.cn/news/31896.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

学习 MySQL 需要知道的 28 个小技巧

前言 随着信息技术的不断发展以及互联网行业的高速增长&#xff0c;作为开源数据库的MySQL得到了广泛的应用和发展。目前MySQL已成为关系型数据库领域中非常重要的一员。 无论是运维、开发、测试&#xff0c;还是架构师&#xff0c;数据库技术都是一个 必备加薪神器&#xff…

【Hive】Hive安装

Hive 第一章 Hive的基础知识 第二章 Hive安装 第三章 DDL&#xff08;Data Definition Language&#xff09;数据定义 第四章 DML&#xff08;Data Manipulation Language&#xff09;数据操作 第五章 Hive查询 第六章 Hive的基础知识 第七章 Hive函数 第八章 分区表和分桶表 …

6.聊天室环境安装 - Ubuntu22.04 - elasticsearch(es)的安装和使用

目录 介绍安装安装kibana安装ES客户端使用 介绍 Elasticsearch&#xff0c; 简称 ES&#xff0c;它是个开源分布式搜索引擎&#xff0c;它的特点有&#xff1a;分布式&#xff0c;零配置&#xff0c;自动发现&#xff0c;索引自动分片&#xff0c;索引副本机制&#xff0c;res…

蓝桥每日打卡--合根植物

#蓝桥#JAVA#合根植物 题目描述 w星球的一个种植园&#xff0c;被分成mn个小格子&#xff08;东西方向m行&#xff0c;南北方向n列&#xff09;。每个格子里种了一株合根植物。 这种植物有个特点&#xff0c;它的根可能会沿着南北或东西方向伸展&#xff0c;从而与另一个格子…

线性代数之矩阵特征值与特征向量的数值求解方法

文章目录 前言1. 幂迭代法&#xff08;Power Iteration&#xff09;幂法与反幂法求解矩阵特征值幂法求最大特征值编程实现补充说明 2. 逆幂迭代法&#xff08;Inverse Iteration&#xff09;移位反幂法 3. QR 算法&#xff08;QR Algorithm&#xff09;——稠密矩阵理论推导编程…

【Linux实践系列】:用c语言实现一个shell外壳程序

&#x1f525;本文专栏&#xff1a;Linux Linux实践项目 &#x1f338;博主主页&#xff1a;努力努力再努力wz 那么今天我们就要进入Linux的实践环节&#xff0c;那么我们之前学习了进程控制相关的几个知识点&#xff0c;比如进程的终止以及进程的等待和进程的替换&#xff0c;…

使用STM32CubeMX配置定时器中断实现LED每秒闪烁一次(STM32G070CBT6)

说明&#xff1a; 本案例采用的定时器3&#xff08;TIM3&#xff09;实现&#xff0c;使用其他定时器是一样配置。 如何新建一个工程以及如何配置LED的端口&#xff0c;请查看前面文章&#xff1a;使用STM32CubeMX实现LED灯每秒闪烁一次&#xff08;STM32G070CBT6单片机&…

2025年Draw.io最新版本下载安装教程,附详细图文

2025年Draw.io最新版本下载安装教程&#xff0c;附详细图文 大家好&#xff0c;今天给大家介绍一款非常实用的流程图绘制软件——Draw.io。不管你是平时需要设计流程图、绘制思维导图&#xff0c;还是制作架构图&#xff0c;甚至是简单的草图&#xff0c;它都能帮你轻松搞定。…

GStreamer —— 2.15、Windows下Qt加载GStreamer库后运行 - “播放教程 1:Playbin 使用“(附:完整源码)

运行效果 介绍 我们已经使用了这个元素&#xff0c;它能够构建一个完整的播放管道&#xff0c;而无需做太多工作。 本教程介绍如何进一步自定义&#xff0c;以防其默认值不适合我们的特定需求。将学习&#xff1a; • 如何确定文件包含多少个流&#xff0c;以及如何切换 其中。…

Python----数据可视化(Seaborn一:介绍,应用)

一、Seaborn的介绍 Seaborn 是一个基于 matplotlib 的 Python 库&#xff0c;对其进行了高级 API 的封装&#xff0c;使得作图更为方便和吸引人。尽管在大多数情况下&#xff0c;使用 Seaborn 就能够创建出美观的图表&#xff0c;但 matplotlib 提供了更高的灵活性和定制化的能…

小程序SSL证书过期怎么办?

SSL证书就像小程序的“安全锁”&#xff0c;一旦过期&#xff0c;用户访问时会被提示“不安全”&#xff0c;轻则流失客户&#xff0c;重则数据泄露&#xff01;作为企业负责人&#xff0c;如何快速解决证书过期问题&#xff1f;又该如何避免再次踩坑&#xff1f;这篇指南给你答…

Linux上位机开发实战(x86和arm自由切换)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 前面我们说过&#xff0c;qt本身支持windows系统&#xff0c;也支持linux系统。不仅如此&#xff0c;qt除了支持传统的x86 cpu之外&#xff0c;还支…

Mysql的卸载安装配置以及简单使用

MySQL其它问题已经更新在&#xff1a;MySQL完善配置---可视化-CSDN博客 一、卸载 ①控制面板卸载 ②C盘隐藏项目>ProgramData>mysql相关文件夹&#xff0c;还有Program file下的MySQL文件夹 ③开始菜单栏搜索>服务&#xff0c;找到MySQL相关服务删除&#xff0c;如果再…

RabbitMQ之旅(1)

相信自己,终会成功 目录 主流MQ产品 1.kafaka 2.RocketMQ 3.RabbitMQ 在xshell上安装RabbitMQ RabbitMQ七种工作模式 1.简单模式 ​编辑 2.工作队列模式 3.发布/订阅模式 4.路由模式 5.通配符模式 6.RPC模式 AMQP.BasicProperties 设置消息属性的类 7.发布确认模…

基于Matlab的人脸识别的二维PCA

一、基本原理 传统 PCA 在处理图像数据时&#xff0c;需将二维图像矩阵拉伸为一维向量&#xff0c;这使得数据维度剧增&#xff0c;引发高计算成本与存储压力。与之不同&#xff0c;2DPCA 直接基于二维图像矩阵展开运算。 它着眼于图像矩阵的列向量&#xff0c;构建协方差矩阵…

el-pagination的使用说明

<el-paginationv-model:current-page"pageNo" //当前第几页v-model:page-size"pageSize" //每页显示多少条数据:page-sizes"[10, 20, 30]" //控制每页显示的条数:small"true" //控制分页器大小:disabled&quo…

Redis Redis介绍、安装 - Redis客户端

目录 redis是什么&#xff0c;他的应用场景是什么&#xff1f; Redis的一些主要特点和应用场景&#xff1a; redis的官方网站&#xff1a;Redis redis是键值型数据库&#xff1a;&#xff08;也就是key-value模式&#xff09;&#xff08;跟python的字典很像&#xff09; …

LWIP网络模型及接口简介(DAY 01)

目录 1.网络协议分层模型 2. LWIP三种编程接口 1.网络协议分层模型 其中各层级的封装与拆封过程 2. LWIP三种编程接口 LwIP 提供了三种编程接口&#xff0c;分别为 RAW/Callback API、NETCONN API、SOCKET API。它们的易用性从左到右依次提高&#xff0c;而执行效率从左到右依…

【Python 数据结构 14.邻接表】

希望你的眼睛可以一直笑&#xff0c;想要的都得到 —— 25.3.11 一、邻接表的概念 1.邻接表的定义 邻接表是一种表示图的数据结构。邻接表的主要概念是&#xff1a;对于图中的每个顶点&#xff0c;维护一个由与其相邻的顶点组成的列表。这个列表可以用数组、链表或其他数据结构…

01 音视频知识学习(视频)

图像基础概念 ◼像素&#xff1a;像素是一个图片的基本单位&#xff0c;pix是英语单词picture的简写&#xff0c;加上英 语单词“元素element”&#xff0c;就得到了“pixel”&#xff0c;简称px&#xff0c;所以“像素”有“图像元素” 之意。 ◼ 分辨率&#xff1a;是指图像…