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. (每日一题)P1447 [NOI2010] 能量采集(莫反套路 + 欧拉反演 / 容斥原理)
  2. 我在51cto微职位学软考——宝妈一次性通过高项的学习经历
  3. 常用服务器性能分析工具
  4. C++模板特化的一个BUG?
  5. spring boot 入门_SpringBoot入门建站全系列(三十)Mybatis多数据源进行数据库操作
  6. 查找和为定值的两个数—Leetcode1
  7. Java为什么能跨平台运行
  8. android学习的一点点网站资料
  9. 代码分析 | 单细胞转录组Normalization详解
  10. shell获取命令行结果指定列(指定列结果)
  11. 苹果手机自带表格软件_解决手机系统自带软件无法卸载问题
  12. activiti 定时任务和线程池
  13. 帆软动态分页之多数据集层式报表
  14. AutoCAD自定义填充图样详细教程
  15. APP自动化测试--IOS
  16. javascript时钟代码
  17. 技术保障+配套体系,京东云掐准智能医疗的“脉象”
  18. HTML <progress>标签
  19. java dismiss_Android dialogFragment dismiss()报错
  20. 无人机航测技术及应用概述

热门文章

  1. PS 色阶调整之算法公式原理详解及 Python 实现(色阶原理)
  2. Java语录_Java中的语句
  3. 服务器名字怎么修改linux,linux服务器修改主机名字
  4. Nginx配置同时支持http和https两种方式访问
  5. LAMP PHP介绍
  6. linux下nginx启动不了,Nginx启动失败的几种错误处理
  7. 学习日记day03 coreldraw
  8. 可持续 GameFi:重点是玩还是赚?(下)
  9. C语言编写一个加法口诀表
  10. Keil编译后生成信息详解