Unity学习笔记——Mesh

Unity中的Mesh组件是一个很好玩的东西,这次的目标是根据高程图创建出一个平面。

1.用脚本创建一个简单的三角形

新建空的物体,挂上MeshFilter、MeshRenderer、自己的脚本三个组件,开始创建三角形吧!
首先出现的是Mesh的两个重要参数:vertices、triangles
Mesh是由点和边构成,vertices存储的是点集,而triangles存储的是三角形面片

vertices

unity中点使用vector3变量表示,将要绘制图形所用到的节点保存为vector3数组后赋值给将要绘制的Mesh类即可。

vertices = new Vector3[]{new Vector3(0,0,0),new Vector3(0,0,1),new Vector3(1,0,0)};

triangles

triangles使用的是int数组进行存储,将需要绘制的三角形的三个点下标保存在triangles中即可。
需要注意的是所绘制的三角形面片是有方向的,其方向与三个点成左手定则,三角形的方向决定了只能这个方向观测时才会绘制三角形

triangles = new int[]{0,1,2 \\  0 = vertices[0]};

normals

normals中存储的是每个三角形的法线,在进行光照计算时将使用到法线信息,想要所绘制的三角形能够正确的被光照影响就需要输入正确的法线信息,自己计算法线可以更自由的控制光照,同时unity也提供了计算法线的方法,这里调用unity提供的方法**RecalculateNormals()**就好啦。

 mesh.vertices = vertices;mesh.triangles = triangles;mesh.RecalculateNormals();

完整代码

using System.Collections;
using System.Collections.Generic;
using UnityEngine;[RequireComponent(typeof(MeshFilter))]
public class TerrainMesh : MonoBehaviour
{Mesh ground;Vector3[] vertices;int[] triangles;// Start is called before the first frame updatevoid Start(){ground = new Mesh();GetComponent<MeshFilter>().mesh = ground;Createmesh();UpdateMesh();}void Createmesh(){vertices = new Vector3[]{new Vector3(0,0,0),new Vector3(0,0,1),new Vector3(1,0,0)};triangles = new int[]{0,1,2};}void UpdateMesh(){ground.Clear();ground.vertices = vertices;ground.triangles = triangles;ground.RecalculateNormals();}
}

效果如下



从下面就看不到了

2.创建一个平面

Unity学习笔记——Mesh相关推荐

  1. Unity学习笔记-Mesh和Sprite

    这里写目录标题 Mesh Sprite 用法 Sprite和Image的区别 Mesh Unity Mesh基础系列(一)生成网格(程序生成) 从概念上讲,mesh是图形硬件用来绘制复杂事物的的框架. ...

  2. Unity学习笔记1 简易2D横版RPG游戏制作(一)

    这个教程是参考一个YouTube上面的教程做的,原作者的教程做得比较简单,我先参考着做一遍,毕竟我也只是个初学者,还没办法完全自制哈哈.不过我之前也看过一个2D平台游戏的系列教程了,以后会整合起来,做 ...

  3. 【Unity学习笔记】[Unity中文课堂教程] C#中级编程代码

    [Unity学习笔记][Unity中文课堂教程] C#中级编程代码 最近想补一补C#基础,Unity官方的C#中级编程教程质量很高,于是开个帖子把跟着敲+记录了部分价讲解和我自己的理解的代码存在这 原 ...

  4. 【Unity学习笔记】b站Unity架构课Unity3D 商业化的网络游戏架构(高级/主程级别)

    [Unity学习笔记]b站Unity架构课Unity3D 商业化的网络游戏架构(高级/主程级别) 自己跟着学完了,写了不少代码,会放在CSDN代码库,因为老师并没有提供源码,录屏也不是完全连续,所以难 ...

  5. Unity学习笔记(4)-----粒子效果的实现

    Unity学习笔记(4)-–粒子效果的实现 一.效果展示 下面用若干张张动图展示效果: 大概就是这样,并不是很难. 实际效果要比图中的好一点(顺畅得多). 实现步骤 大致可以分为如下几个步骤,然后逐个 ...

  6. Unity学习笔记:个人学习项目《疯狂天才埃德加》纠错文档

    Unity学习笔记:个人学习项目<疯狂天才埃德加>纠错文档 本文档是完成学校Unity课程作业时建立的纠错文档.用于记录自己开发过程中遇到的各种问题,以便下次遇到相同的问题时及时找到解决方 ...

  7. Unity学习笔记:Unity 3D 飞机大战

    Unity学习笔记:Unity 3D 飞机大战 1.打开unity软件后,首先新建Quad作为背景,导入飞机模型,并为其添加刚体 然后创建C#脚本,挂载到飞机上. 2.给飞机创建子弹,让子弹成为预制体 ...

  8. 【Unity学习笔记】UnrealToUnity教程:(网上购买的素材导入Unreal+插件转Unity)

    [Unity学习笔记]UnrealToUnity教程: 最近想从Unreal那边化点缘借借素材,没想到踩到一个大坑 一,素材导入Unreal 这个教程比较多,根据素材的来源,传送门是以下这几个: 1. ...

  9. unity学习笔记-特效篇

    unity学习笔记 传送门特效 火焰特效 传送门特效 由于动画师的动画制作遇到了一些小问题,只能先做其他功能的摸索了~ 本来想记录一下服务器搭建的,但是在消息传输的部分遇到了一些bug,可能是消息解析 ...

最新文章

  1. 1小时学会:最简单的iOS直播推流(七)h264/aac 硬编码
  2. SpringBoot资料整理(3)
  3. python画折线图显示点值-Python 绘制可视化折线图
  4. 【题意+推导讲解】1031 Hello World for U (20 分)_15行代码AC
  5. 搞懂这三个指标,数据分析起码少费一半力
  6. 雷电android模拟器端口,【雷电命令】雷电安卓模拟器修改信息及常用adb命令整理贴...
  7. nii、npz、npy、dcm、mhd 的数据互转处理,及多目标分割处理汇总
  8. 许丹萍 计算机系,【晋江市“十佳少先队辅导员”】第二实验小学老师许丹萍: 关注每一个队员的成长...
  9. 用XOM编写GraphML?
  10. 跨越阶层,至少需要三代人的努力;看千年前的眉山五苏是如何完成的
  11. 前端 macos和win 相同的样式谷歌浏览器显示不一致
  12. qt creator 32位linux,Qt Creator下载mac版-Qt Creator Mac版下载 V4.14.2-PC6苹果网
  13. brew cask install 解决慢的问题
  14. web 原型设计工具_适用于Web设计人员的7种原型设计工具
  15. python自动售货机_Python:自动售货机
  16. Sqoop导入Hbase案例实战
  17. FITC/ICG/TMR/HRP/Cy3荧光标记阿法替尼/阿西替尼/克里唑蒂尼/奥拉帕尼/Lenvatinib/多韦替尼 等药物
  18. 最大4k地址计算机组成原理,级计算机组成原理期末考试复习大纲资料.ppt
  19. 手把手教你读财报----银行业---第九课
  20. mac深色主题下把chrome主题从默认黑色变回以前的默认白色

热门文章

  1. 数据库定时备份winserver2012篇
  2. 达摩院探访,机器视觉之发丝级抠图技能解析?
  3. spring 定时任务 多任务并行执行,多任务多线程 单任务单线程执行实现细节
  4. 查询所有姓“李”的学生所有成绩
  5. linux系统有哪些电脑,低配电脑装linux系统好吗,或者有什么别的系统推荐吗?...
  6. 单层大尺寸Ti3C2-Mxene胶体分水散液
  7. 【DTCC2016】谁敢横刀立马,但看超级技术宅男如何PK超红明星权志龙
  8. ACA烤箱菜单各项温度
  9. 线下刷银行卡消费手续费怎么分成
  10. 拯救者r720+intel 600p nvme ssd固态硬盘装win7