【Unity】动态生成圆环体Mesh
代码由ChatGPT生成,后经人工调整。
/// <summary>
/// 创建一个3维圆环体Mesh。
/// </summary>
/// <param name="outerRadius">外半径。</param>
/// <param name="innerRadius">内半径。</param>
/// <param name="numSegments">圆环体段数。值越大,圆环体越圆润。</param>
/// <param name="numSides">圆环体截面边数。值越大,圆环体截面越圆润。</param>
/// <returns></returns>
public static Mesh CreateTorus3DMesh(float outerRadius, float innerRadius, int numSegments = 32, int numSides = 16)
{Mesh mesh = new Mesh();mesh.name = "Torus";Vector3[] vertices = new Vector3[(numSegments + 1) * (numSides + 1)];Vector3[] normals = new Vector3[(numSegments + 1) * (numSides + 1)];Vector2[] uv = new Vector2[(numSegments + 1) * (numSides + 1)];int[] triangles = new int[numSegments * numSides * 6];float angleStep = 2 * Mathf.PI / numSegments;float sideAngleStep = 2 * Mathf.PI / numSides;float avgRadius = (outerRadius + innerRadius) / 2; // 平均半径float secRadius = (outerRadius - innerRadius) / 2; // 截面半径int vertexIndex = 0;for (int i = 0; i <= numSegments; i++){float segAngle = i * angleStep; // 圆环体分段角for (int j = 0; j <= numSides; j++){float sideAngle = j * sideAngleStep; // 圆环体截面角// 从right方向开始生成顶点Vector3 vertex = new Vector3{x = (avgRadius + secRadius * Mathf.Cos(sideAngle)) * Mathf.Cos(segAngle),z = (avgRadius + secRadius * Mathf.Cos(sideAngle)) * Mathf.Sin(segAngle),y = secRadius * Mathf.Sin(sideAngle)};Vector3 secCenter = new Vector3{x = avgRadius * Mathf.Cos(segAngle),z = avgRadius * Mathf.Sin(segAngle),y = 0,};vertices[vertexIndex] = vertex;normals[vertexIndex] = (vertex - secCenter).normalized;uv[vertexIndex] = new Vector2((float)i / numSegments, (float)j / numSides);vertexIndex++;}}int triangleIndex = 0;for (int i = 0; i < numSegments; i++){for (int j = 0; j < numSides; j++){int topLeft = (i + 1) * (numSides + 1) + j;int topRight = topLeft + 1;int bottomLeft = i * (numSides + 1) + j;int bottomRight = bottomLeft + 1;triangles[triangleIndex] = topLeft;triangles[triangleIndex + 1] = bottomLeft;triangles[triangleIndex + 2] = topRight;triangles[triangleIndex + 3] = topRight;triangles[triangleIndex + 4] = bottomLeft;triangles[triangleIndex + 5] = bottomRight;triangleIndex += 6;}}mesh.vertices = vertices;mesh.triangles = triangles;mesh.normals = normals;mesh.uv = uv;return mesh;
}
【Unity】动态生成圆环体Mesh相关推荐
- unity动态生成预制体
public void GameObjectPrefab(GameObject Prefab){PrefabUtility.SaveAsPrefabAsset(Prefab, "Assets ...
- Unity 动态生成球体模型
系列文章目录 Unity 动态生成球体模型 文章目录 系列文章目录 Unity 动态生成球体模型 前言 如何生成一个模型 球体模型的创建方法 计算正二十面体 正二十面体顶点 三角形连接顺序 前言 本篇 ...
- unity 动态生成类_Houdini城市道路模型生成
备注:第一篇文章被系统删了,很气,就更新了一张图,然后就被封号了,文章也被系统删了.所以现在只能新开文章,重新写了,先立个标题. 所以本篇算是一种重置版,加了一些最新进度和效果,上一篇文章是8月底写的 ...
- unity动态生成线条,门框,踢脚线,U型、弧形线条,或者根据cad线条打样
自定义线条类型,动态生成 弧线条
- c语言动态生成结构体结构,C语言实现动态结构体数组
C语言实现动态结构体数组 原因是因为以前使用C++来实现的,主要用VERCTOR C++标准库的失代器 而不是纯C:C++是C语言的超集,除了包含C外,还有C++各种新语法,新库! 不过虽然C++用起 ...
- unity动态生成render texture
using UnityEngine; using System.Collections;public class ExampleClass : MonoBehaviour { public Rende ...
- [WebGL入门]二十,绘制立体模型(圆环体)
注:文章译自http://wgld.org/,原作者杉本雅広(doxas),文章中如果有我的额外说明,我会加上[lufy:],另外,鄙人webgl研究还不够深入,一些专业词语,如果翻译有误,欢迎大家指 ...
- Unity 在代码中利用Mesh实时生成圆环/空心圆柱
本篇文章主要介绍了利用Unity中的mesh 实时生成圆环的过程以及思想,我会在开头直接放出源码.如若有任何疑问,可向后继续观看详细解说~~~ (PSPSPS:Mesh生成的顺序,方式等有很多,当前代 ...
- Unity 代码动态生成模型
网格由 3D 空间中排列的三角形组成,旨在产生实体对象的效果.三角形由其拐点或者顶点定义.在 Mesh 类中,顶点全部存储在单个数组中,并且每个三角形使用与顶点数组的索引对应的三个整数指定.这些三角形 ...
最新文章
- Lua编译实践1-词法分析:
- 左耳朵耗子论微服务 Serverless 及 FaaS | GIAC 访谈
- css家用电器,家用电器
- OpenCV 中文wiki
- OPA 22 - sinor fake xml http request
- HBase 在人工智能场景的使用
- hibernate自定义校验器使用(字段在in范围之内)
- [vue] 你了解vue的diff算法吗?
- 基于javaweb(springboot+mybatis)网站建设服务管理系统设计和实现以及文档报告设计
- 关于Memcache使用的工具类
- Razor 视图引擎学习
- php 后期发展,php – 通过后期处理上传进度
- node(map对象/键值对,作用域,函数作用域,全局作用域)
- [Math] 二阶行列式和三阶行列式的几何意义的证明
- linux怎样安装xz工具,linux xz解压工具
- Linux容器的安装链接
- dataworks/odps上传资源,注册函数,下载资源
- 如何安装husky_利用huskylint-staged构建代码检查工作流
- 在cmd中使用python3指令打开.py文件无响应,也没有报错的问题
- 解决支付宝小程序安卓手机字体图标(iconfont)不显示问题
热门文章
- 这几个AI生成绘画软件推荐给大家
- YoloV7训练最强操作教程.
- 如何使用Midjourney辅助建筑设计,常用的提示和使用效果展示(内附Midjourney提示词网站)
- oppor7软件root,oppor7软件商店打不开怎么办
- 利用Power BI行级安全性,限制用户访问权限
- aspose,word转pdf,及破解思路
- Kali之——kali精简版安装后中文乱码
- mac系统搭建JAVA开发环境【按步骤一步一步来,能完美搭建好环境】
- Java三目运算符如何拼接字符串
- 对接京东jingdong.homefw.task.identify(核销)接口的需求和Java代码实现