返回顶部
首页 > 资讯 > 精选 >Unity中mesh如何生成斜坡
  • 525
分享到

Unity中mesh如何生成斜坡

2023-06-15 06:06:48 525人浏览 安东尼
摘要

这篇文章给大家分享的是有关Unity中mesh如何生成斜坡的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Mesh概念:Mesh是Unity中的一个组件,称为网格组件。通俗的讲,Mesh是指模型的网格,3D模型是由

这篇文章给大家分享的是有关Unity中mesh如何生成斜坡的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

Mesh概念:

Mesh是Unity中的一个组件,称为网格组件。通俗的讲,Mesh是指模型的网格,3D模型是由多边形拼接而成,而多边形实际上是由多个三角形拼接而成的。所以一个3D模型的表面其实是由多个彼此相连的三角面构成。三维空间中,构成这些三角形的点和边的集合就是Mesh。

Mesh组成:

顶点坐标数组vertexes

顶点在uv坐标系中的位置信息数组uvs

三角形顶点顺时针或者逆时针索引数组triangles

MeshFiler组件,用于增加mesh属性

MeshRender组件,增加材质并渲染出来。

可能还需要每个顶点的法线的数组nORMals

using System.Collections;using System.Collections.Generic;using UnityEngine;public class MeshCreater : MonoBehaviour{    public Vector3 eulerAngles;    [Header("斜坡尺寸")]    public float sizeX;    public float sizeY;    public float sizeZ;    [Header("斜坡后面的立方体尺寸")]    public float planeSize;    public float m_angle;    public Material material;    Vector3[] vertices = new Vector3[54];    Vector2[] uvs = new Vector2[54];    List<int> allTris = new List<int>();    Vector3[] allPoint;    GameObject gameObject;    private void Update()    {        if (Input.GeTKEyDown(KeyCode.Space))        {            DrawMesh(m_angle);        }    }    public void DrawMesh(float angle)    {        if (gameObject != null)        {            Destroy(gameObject);        }        sizeX = sizeY * Mathf.Tan(angle * Mathf.PI / 180);        gameObject = new GameObject("Cube");        gameObject.transform.eulerAngles = eulerAngles;        var mf = gameObject.AddComponent<MeshFilter>();        var mr = gameObject.AddComponent<MeshRenderer>();        allPoint = new[]        {            //斜坡             new Vector3(0, 0, 0),             new Vector3(0, 0, sizeZ),             new Vector3(sizeX, 0, sizeZ),             new Vector3(sizeX, 0, 0),             new Vector3(0, sizeY, 0),             new Vector3(0, sizeY, sizeZ),             //斜坡后的立方体             new Vector3(0,-planeSize,0),             new Vector3(sizeX,-planeSize,0),             new Vector3(sizeX,-planeSize,sizeZ),             new Vector3(0,-planeSize,sizeZ),        };        //斜坡        vertices[0] = allPoint[0];  //正面        vertices[1] = allPoint[4];        vertices[2] = allPoint[3];        vertices[3] = allPoint[0]; //底面1        vertices[4] = allPoint[3];        vertices[5] = allPoint[2];        vertices[6] = allPoint[0];//底面1        vertices[7] = allPoint[2];        vertices[8] = allPoint[1];        vertices[9] = allPoint[1];  //背面1        vertices[10] = allPoint[4];        vertices[11] = allPoint[0];        vertices[12] = allPoint[4];//背面2        vertices[13] = allPoint[1];        vertices[14] = allPoint[5];        vertices[15] = allPoint[5]; //反面        vertices[16] = allPoint[1];        vertices[17] = allPoint[2];        vertices[18] = allPoint[2]; //斜坡1        vertices[19] = allPoint[3];        vertices[20] = allPoint[4];        vertices[21] = allPoint[2]; //斜坡1        vertices[22] = allPoint[4];        vertices[23] = allPoint[5];        //斜坡后的立方体        vertices[24] = allPoint[6];        vertices[25] = allPoint[0];        vertices[26] = allPoint[3];        vertices[27] = allPoint[6];        vertices[28] = allPoint[3];        vertices[29] = allPoint[7];        vertices[30] = allPoint[6];        vertices[31] = allPoint[9];        vertices[32] = allPoint[0];        vertices[33] = allPoint[0];        vertices[34] = allPoint[9];        vertices[35] = allPoint[1];        vertices[36] = allPoint[7];        vertices[37] = allPoint[3];        vertices[38] = allPoint[8];        vertices[39] = allPoint[8];        vertices[40] = allPoint[3];        vertices[41] = allPoint[2];        vertices[42] = allPoint[7];        vertices[43] = allPoint[8];        vertices[44] = allPoint[9];        vertices[45] = allPoint[7];        vertices[46] = allPoint[9];        vertices[47] = allPoint[6];        vertices[48] = allPoint[1];        vertices[49] = allPoint[9];        vertices[50] = allPoint[8];        vertices[51] = allPoint[1];        vertices[52] = allPoint[8];        vertices[53] = allPoint[2];        for (int i = 0; i < vertices.Length; i++)        {            allTris.Add(i);        }        uvs[0] = new Vector2(0, 0);        uvs[1] = new Vector2(0, 1);        uvs[2] = new Vector2(1, 0);        uvs[3] = new Vector2(0, 0);        uvs[4] = new Vector2(1, 0);        uvs[5] = new Vector2(1, 1);        uvs[6] = new Vector2(0f, 0f);        uvs[7] = new Vector2(1f, 1f);        uvs[8] = new Vector2(0f, 1f);        uvs[9] = new Vector2(0, 1);        uvs[10] = new Vector2(1, 0);        uvs[11] = new Vector2(0, 0);        uvs[12] = new Vector2(1, 0);        uvs[13] = new Vector2(0, 1);        uvs[14] = new Vector2(1, 1);        uvs[15] = new Vector2(0f, 1f);        uvs[16] = new Vector2(0, 0);        uvs[17] = new Vector2(1, 0);        uvs[18] = new Vector2(1f, 1f);        uvs[19] = new Vector2(1f, 0f);        uvs[20] = new Vector2(0f, 0f);        uvs[21] = new Vector2(1, 1);        uvs[22] = new Vector2(0, 0);        uvs[23] = new Vector2(0, 1);        uvs[24] = new Vector2(1, 1);        uvs[25] = new Vector2(0, 0);        uvs[26] = new Vector2(0, 1);        uvs[27] = new Vector2(1, 1);        uvs[28] = new Vector2(0, 0);        uvs[29] = new Vector2(0, 1);        uvs[30] = new Vector2(1, 1);        uvs[31] = new Vector2(0, 0);        uvs[32] = new Vector2(0, 1);        uvs[33] = new Vector2(1, 1);        uvs[34] = new Vector2(0, 0);        uvs[35] = new Vector2(0, 1);        uvs[36] = new Vector2(1, 1);        uvs[37] = new Vector2(0, 0);        uvs[38] = new Vector2(0, 1);        uvs[39] = new Vector2(1, 1);        uvs[40] = new Vector2(0, 0);        uvs[41] = new Vector2(0, 1);        uvs[42] = new Vector2(1, 1);        uvs[43] = new Vector2(0, 0);        uvs[44] = new Vector2(0, 1);        uvs[45] = new Vector2(1, 1);        uvs[46] = new Vector2(0, 0);        uvs[47] = new Vector2(0, 1);        uvs[48] = new Vector2(1, 1);        uvs[49] = new Vector2(0, 0);        uvs[50] = new Vector2(0, 1);        uvs[51] = new Vector2(1, 1);        uvs[52] = new Vector2(0, 0);        uvs[53] = new Vector2(0, 1);        Mesh mesh = new Mesh();        mesh.vertices = vertices;        mesh.uv = uvs;        mesh.triangles = allTris.ToArray();        mr.material = material;        mesh.RecalculateTangents();        mesh.RecalculateNormals();        mesh.RecalculateBounds();        mf.mesh = mesh;    }    private void OnDrawGizmos()    {        if (allPoint != null)        {            for (int i = 0; i < allPoint.Length; i++)            {                Gizmos.color = Color.yellow;                Gizmos.DrawSphere(allPoint[i], 0.1f);            }        }    }}

Unity中mesh如何生成斜坡

感谢各位的阅读!关于“Unity中mesh如何生成斜坡”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

--结束END--

本文标题: Unity中mesh如何生成斜坡

本文链接: https://lsjlt.com/news/278486.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Unity中mesh如何生成斜坡
    这篇文章给大家分享的是有关Unity中mesh如何生成斜坡的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Mesh概念:Mesh是Unity中的一个组件,称为网格组件。通俗的讲,Mesh是指模型的网格,3D模型是由...
    99+
    2023-06-15
  • Unity中 mesh生成斜坡的示例代码
    Mesh概念: Mesh是Unity中的一个组件,称为网格组件。通俗的讲,Mesh是指模型的网格,3D模型是由多边形拼接而成,而多边形实际上是由多个三角形拼接而成的。所以一个3D模型...
    99+
    2024-04-02
  • unity如何通过Mesh网格绘制图形球体
    小编给大家分享一下unity如何通过Mesh网格绘制图形球体,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!球体public class 球体&...
    99+
    2023-06-25
  • PHP中token如何生成
    这篇文章主要为大家展示了“PHP中token如何生成”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“PHP中token如何生成”这篇文章吧。php token的生成接口特点汇总:因为是非开放性的,...
    99+
    2023-06-20
  • unity如何把图片弄成材质
    在Unity中,可以通过创建一个新的材质并将图片添加到材质中来将图片转化为材质。下面是具体的步骤: 在项目资源文件夹中选择一个文...
    99+
    2023-10-27
    unity
  • php中如何使用反斜线替换正斜线
    本文小编为大家详细介绍“php中如何使用反斜线替换正斜线”,内容详细,步骤清晰,细节处理妥当,希望这篇“php中如何使用反斜线替换正斜线”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。PHP中的反斜线和正斜线在PH...
    99+
    2023-07-05
  • 如何生成PDF
    这篇文章将为大家详细讲解有关如何生成PDF,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1、后台生成PDFthinkphp利用MPDF插件示例代码:public ...
    99+
    2024-04-02
  • 如何生成JWT
    这篇文章主要讲解了“如何生成JWT”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何生成JWT”吧!Nimbus 库在目前最新的Spring Securit...
    99+
    2024-04-02
  • jquery中如何生成随机数
    使用jquery生成随机数的方法:1.新建html项目,引入jquery;2.创建div标签,设置id属性;3.添加button按钮,绑定onclick点击事件;4.定义变量,设置随机范围;5.通过Math.random()函数生成随机数,...
    99+
    2024-04-02
  • PHP中如何生成缩略图
    这篇文章给大家介绍PHP中如何生成缩略图,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。PHP生成缩略图HTML代码< !DOCTYPE HTML PUBLIC "...
    99+
    2023-06-17
  • ASP 中如何生成二维码?
    随着智能手机的普及,二维码已经成为了一种常见的扫描方式。二维码可以用于电子商务、广告、会员卡、门禁等多种场景。那么,如何在 ASP 中生成二维码呢?本文将为您提供一种简单的方法。 首先,我们需要引用一个第三方库,这个库叫做“qrcode....
    99+
    2023-10-06
    二维码 日志 git
  • Python 中如何生成二维码?
    Python 中如何生成二维码? 二维码(QR Code)是一种可以被扫描的矩阵条形码,它可以被用于快速识别产品信息、网址链接、电子邮件地址、电话号码等等。在 Python 中,我们可以使用第三方库 qrcode 来生成二维码。本文将介绍如...
    99+
    2023-10-07
    对象 二维码 unix
  • C#中如何生成安装包
    目录C#生成安装包1. 解决方案2. 在搜索框中3. 输入项目输出路径以及项目名称4. 添加项目文件5.创建项目输出6. 将主输出创建为快捷方式7. 将快捷方式创建桌面快捷方式8.可...
    99+
    2023-01-28
    C#生成安装包 C#安装包 C#安装包生成
  • Android开发中如何生成excel
    这篇文章主要介绍了Android开发中如何生成excel,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。在android中生成excel表并存到本地。先看下生成后的效果图:初始...
    99+
    2023-05-30
    android excel
  • Java中如何生成二维码?
    二维码是一种矩阵条码,可以存储一定量的信息,常用于移动支付、商品编码、会议签到等领域。在Java中,我们可以使用第三方库来生成二维码,本文将介绍两种常用的库:ZXing和QRGen。 ZXing库 ZXing是Google开发的一款开...
    99+
    2023-08-12
    二维码 apache 日志
  • word文档中如何画斜线
    在Word文档中可以通过以下几种方法画斜线:1. 使用“形状”工具栏:在Word文档中点击“插入”选项卡,在“插入”选项卡中点击“形...
    99+
    2023-09-29
    word
  • windows中mathtype如何设置斜体
    本篇内容主要讲解“windows中mathtype如何设置斜体”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“windows中mathtype如何设置斜体”吧! ...
    99+
    2022-12-01
    windows mathtype
  • java如何生成jar
    将*.class文件压缩成一个文件交付给用户使用,那么这样的文件就称为jar文件。如果要想生成jar文件,直接使用JDK中bin目录里的jar.exe就可以将所有的类文件进行压缩。此命令是随JDK一起安装的,直接在命令行中输入jar,即可看...
    99+
    2018-08-01
    java入门 java 生成 jar
  • powerdesigner如何生成sql
    本篇内容介绍了“powerdesigner如何生成sql”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!powerdesigner生成sql方...
    99+
    2023-07-05
  • 如何在PHP中使用生成器
    这期内容当中小编将会给大家带来有关如何在PHP中使用生成器,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。PHP开发环境搭建工具有哪些一、phpStudy,是一个新手入门最常用的开发环境。二、WampSer...
    99+
    2023-06-14
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作