代码由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相关推荐

  1. unity动态生成预制体

    public void GameObjectPrefab(GameObject Prefab){PrefabUtility.SaveAsPrefabAsset(Prefab, "Assets ...

  2. Unity 动态生成球体模型

    系列文章目录 Unity 动态生成球体模型 文章目录 系列文章目录 Unity 动态生成球体模型 前言 如何生成一个模型 球体模型的创建方法 计算正二十面体 正二十面体顶点 三角形连接顺序 前言 本篇 ...

  3. unity 动态生成类_Houdini城市道路模型生成

    备注:第一篇文章被系统删了,很气,就更新了一张图,然后就被封号了,文章也被系统删了.所以现在只能新开文章,重新写了,先立个标题. 所以本篇算是一种重置版,加了一些最新进度和效果,上一篇文章是8月底写的 ...

  4. unity动态生成线条,门框,踢脚线,U型、弧形线条,或者根据cad线条打样

    自定义线条类型,动态生成 弧线条

  5. c语言动态生成结构体结构,C语言实现动态结构体数组

    C语言实现动态结构体数组 原因是因为以前使用C++来实现的,主要用VERCTOR C++标准库的失代器 而不是纯C:C++是C语言的超集,除了包含C外,还有C++各种新语法,新库! 不过虽然C++用起 ...

  6. unity动态生成render texture

    using UnityEngine; using System.Collections;public class ExampleClass : MonoBehaviour { public Rende ...

  7. [WebGL入门]二十,绘制立体模型(圆环体)

    注:文章译自http://wgld.org/,原作者杉本雅広(doxas),文章中如果有我的额外说明,我会加上[lufy:],另外,鄙人webgl研究还不够深入,一些专业词语,如果翻译有误,欢迎大家指 ...

  8. Unity 在代码中利用Mesh实时生成圆环/空心圆柱

    本篇文章主要介绍了利用Unity中的mesh 实时生成圆环的过程以及思想,我会在开头直接放出源码.如若有任何疑问,可向后继续观看详细解说~~~ (PSPSPS:Mesh生成的顺序,方式等有很多,当前代 ...

  9. Unity 代码动态生成模型

    网格由 3D 空间中排列的三角形组成,旨在产生实体对象的效果.三角形由其拐点或者顶点定义.在 Mesh 类中,顶点全部存储在单个数组中,并且每个三角形使用与顶点数组的索引对应的三个整数指定.这些三角形 ...

最新文章

  1. Lua编译实践1-词法分析:
  2. 左耳朵耗子论微服务 Serverless 及 FaaS | GIAC 访谈
  3. css家用电器,家用电器
  4. OpenCV 中文wiki
  5. OPA 22 - sinor fake xml http request
  6. HBase 在人工智能场景的使用
  7. hibernate自定义校验器使用(字段在in范围之内)
  8. [vue] 你了解vue的diff算法吗?
  9. 基于javaweb(springboot+mybatis)网站建设服务管理系统设计和实现以及文档报告设计
  10. 关于Memcache使用的工具类
  11. Razor 视图引擎学习
  12. php 后期发展,php – 通过后期处理上传进度
  13. node(map对象/键值对,作用域,函数作用域,全局作用域)
  14. [Math] 二阶行列式和三阶行列式的几何意义的证明
  15. linux怎样安装xz工具,linux xz解压工具
  16. Linux容器的安装链接
  17. dataworks/odps上传资源,注册函数,下载资源
  18. 如何安装husky_利用huskylint-staged构建代码检查工作流
  19. 在cmd中使用python3指令打开.py文件无响应,也没有报错的问题
  20. 解决支付宝小程序安卓手机字体图标(iconfont)不显示问题

热门文章

  1. 这几个AI生成绘画软件推荐给大家
  2. YoloV7训练最强操作教程.
  3. 如何使用Midjourney辅助建筑设计,常用的提示和使用效果展示(内附Midjourney提示词网站)
  4. oppor7软件root,oppor7软件商店打不开怎么办
  5. 利用Power BI行级安全性,限制用户访问权限
  6. aspose,word转pdf,及破解思路
  7. Kali之——kali精简版安装后中文乱码
  8. mac系统搭建JAVA开发环境【按步骤一步一步来,能完美搭建好环境】
  9. Java三目运算符如何拼接字符串
  10. 对接京东jingdong.homefw.task.identify(核销)接口的需求和Java代码实现