这一章我们讲复杂的mesh为下一章的材质准备一些材料

8.1 创建一个矩形面片

本质就是绘制两个三角形面片,如图8-1.其代码有注释了就不做太多解释了。

   public virtual Mesh createMesh(){Mesh mesh = new Mesh();Vector3[] v3s = new Vector3[4];v3s[0] = new Vector3(0,  0,0);v3s[1] = new Vector3(0,  0,1);v3s[2] = new Vector3(1,  0,0);v3s[3] = new Vector3(1,  0,1);mesh.vertices = v3s;//绘制方向是顺时针int[] index = new int[6];//绘制第一个三角形是0->1->2index[0] = 0;index[1] = 1;index[2] = 2;//绘制第二个三角形是3->2->1/** 1------------3* |            |* |            |* |            |* |            |* |            |* |            |* 0------------2 */index[3] = 3;index[4] = 2;index[5] = 1;mesh.triangles = index;Vector2[] uvs = new Vector2[4];uvs[0] = new Vector2(0, 0);uvs[1] = new Vector2(1, 0);uvs[2] = new Vector2(0, 1);uvs[3] = new Vector2(1, 1);mesh.uv = uvs;mesh.RecalculateBounds();mesh.RecalculateNormals();return mesh;

8.2 创建一个由矩形面片联合而成的超长矩形面片

其代码如下,太简单了,不做解释

 public override Mesh createMesh(){Mesh mesh = new Mesh();int sc = 100;//每四个点可以构成一个矩形面片//本教程是构建一排矩形面片Vector3[] v3s = new Vector3[sc * 4];//绘制一个矩形面片需要指定6个绘制顺序int[] index = new int[6* sc];Vector2[] uvs = new Vector2[4* sc];for (int i = 0; i < sc; i++) {v3s[i * 4 + 0] = new Vector3(i, 0, 0);v3s[i * 4 + 1] = new Vector3(i, 0,  1);v3s[i * 4 + 2] = new Vector3(i + 1, 0, 0);v3s[i * 4 + 3] = new Vector3(i + 1, 0, 1);uvs[i*4+0]     = new Vector2(i, 0);uvs[i * 4 + 1] = new Vector2(1+1, 0);uvs[i * 4 + 2] = new Vector2(i, 1);uvs[i * 4 + 3] = new Vector2(1+1, 1);}for (int i = 0; i < sc; i++){index[i * 6 + 0] = i*4;index[i * 6 + 1] = i*4+1;index[i * 6 + 2] = i*4+2;index[i * 6 + 3] = i*4+3;index[i * 6 + 4] = i*4+2;index[i * 6 + 5] = i * 4 + 1;}mesh.vertices = v3s;mesh.triangles = index;mesh.uv = uvs;return mesh;}

8.3 创建一个由100*4*100个顶点的矩形面片

 public override Mesh createMesh(){Mesh mesh = new Mesh();int sc = 100;int sr = 100;//每四个点可以构成一个矩形面片//本教程是构建一排矩形面片Vector3[] v3s = new Vector3[sc * 4 * sr];//绘制一个矩形面片需要指定6个绘制顺序int[] index = new int[6 * sc * sr];Vector2[] uvs = new Vector2[4 * sc * sr];for (int i = 0; i < sc; i++){for (int j = 0; j < sr; j++){v3s[(i * sr + j) * 4 + 0] = new Vector3(i, 0, j);v3s[(i * sr + j) * 4 + 1] = new Vector3(i, 0, 1 + j);v3s[(i * sr + j) * 4 + 2] = new Vector3(i + 1, 0, j);v3s[(i * sr + j) * 4 + 3] = new Vector3(i + 1, 0, 1 + j);uvs[(i * sr + j) * 4+ 0] = new Vector2(i, j)/sc;uvs[(i * sr + j) * 4+ 1] = new Vector2(1 + 1, j) / sc;uvs[(i * sr + j) * 4+ 2] = new Vector2(i, 1 + j) / sc;uvs[(i * sr + j) * 4 + 3] = new Vector2(1 + 1, 1 + j) / sc;}}for (int i = 0; i < sc * sr; i++){index[i * 6 + 0] = i * 4;index[i * 6 + 1] = i * 4 + 1;index[i * 6 + 2] = i * 4 + 2;index[i * 6 + 3] = i * 4 + 3;index[i * 6 + 4] = i * 4 + 2;index[i * 6 + 5] = i * 4 + 1;}mesh.vertices = v3s;mesh.triangles = index;mesh.uv = uvs;return mesh;}

卜若的代码笔记-unityshader系列-第八章:复杂Mesh相关推荐

  1. 卜若的代码笔记-unityshader系列-第十七章:Shader练习.遮罩(Shader采样Image的Sprite)

    1.遮罩的意义,就是让某个颜色的部分透明,其他的不透明. 实现思路很简单,但如果你是从这个系列一步一步上学过来的,那肯定很简单啦 1.1我们先定义一个标准Shader,然后慢慢改 Shader &qu ...

  2. 卜若的代码笔记-数据结构系列-第十二章:栈三.链栈

    1.太简单了,不介绍了,直接贴代码,有问题请看10,11,章 //测试代码public static void main(String[] args) throws IOException {Link ...

  3. 卜若的代码笔记-matlab系列-matlab基础教程-第二章:静态变量

    persistent value; if isempty(value)value=20; endvalue=value+1;y=value; 注意,这段代码只允许定义在function里面

  4. 卜若的代码笔记-算法系列-第2个算法案例分析:HHM预测模型分析

    1. 关于这个模型就去看 https://www.cnblogs.com/pinard/p/6991852.html 这篇博客吧...我主要是将这个它的那个案例画了一张图 案例代码: package ...

  5. 卜若的代码笔记-python系列-神经网络篇-第十四章:基于keras框架的男女性别识别

    1.我们来看一下整个网络的实现构架 以下显示面板利用的是keras的summary函数 (None, 65536) (None, 512) ______________________________ ...

  6. 卜若的代码笔记-webgl系列-第三章:几何渲染Rendering Geometry

    1 在webgl里面表述几何体最关键的两种数据类型: 顶点和索引(vertices and indices.) 1.1 顶点是什么? 顶点定义了3D对象的角点,每一个顶点由三个元素组成x,y,z. 在 ...

  7. 卜若的代码笔记-数据结构系列-第十章:栈一.顺序栈(数组栈)

    1.栈有两种写法,一种是以数组为躯干的顺序栈,一种是以链表为躯干的链式栈. 1.1栈的操作 1.1.1 出栈pop()函数 允许栈出,栈出之后,顶数据有移除操作. 时间复杂度o(1) 1.1.2 入栈 ...

  8. 卜若的代码笔记-数据结构系列-第三章:链表-最简单的线性表:单链表

    1.一个最简单的线性表 1.1单链表的特征: a.链表无法通过索引获取链表元素,只能从头开始一个一个的后继去找. b.链表无法找到父节点 1.2结构: 1.3 实现 我们来讨论一下它的时间复杂度: 1 ...

  9. 卜若的代码笔记系列-unity系列-第一章:json-5001

    1.该系列算的上是unity的网络应用,嗯,不讲基础的,要基础的网上太多了. 2.服务器请参考本人的sringboot系列的讲解 3.正文: unity提供了一个类 JsonUtility 最常用的是 ...

最新文章

  1. Python实现多进程的4种方式
  2. php手机底部菜单,html5手机web页面底部菜单
  3. Android运行报错avd,Android Studio出错:无法在模拟器中启动AVD
  4. TatukGIS - GisDefs - CheckDir 函数
  5. 学爬虫,你敢说你不会 requests 模块
  6. 前端学习(1477):计算属性文档分析
  7. OpenCV-Python实战(17)——人脸识别详解
  8. FFmpeg的Android平台移植—编译篇(验证可用)
  9. Johnson算法实现流水作业最优调度
  10. qq不加好友实现网页在线聊天(qq在线客服)
  11. QQ邮箱代收Gmail邮箱
  12. 各个操作系统中怎样设置电脑的颜色保护眼睛
  13. 国一大佬也收藏的16个Python数据可视化案例(附源码)
  14. 保研之旅9:东南大学“通信与信息系统学科”推免面试
  15. VxWorks中tornado2.2中的编译器支持哪个C语言标准,有哪些标准库?
  16. python遇到错误跳过_python跳过错误
  17. 未转变者服务器物品建筑id,未转变者建筑物id是什么 | 手游网游页游攻略大全...
  18. 汉语写代码编程与为什么很多软件有简体中文版
  19. vue高德地图实现关键字搜索
  20. 如何编制试算平衡表_试算平衡表的编制步骤是什么?

热门文章

  1. 数据分析之市场购物篮分析流程
  2. python驱动级模拟按键_python如何实现驱动级的模拟按键?
  3. java计算机毕业设计员工培训管理系统源码+数据库+系统+lw文档+部署
  4. git push origin master报错error: src refspec master does not match any || git commit报错nothing to commi
  5. Mac小技巧 苹果Mac系统如何删除其他多余的管理员账户
  6. 亚马逊物流的特点有哪些?
  7. NETCAT端口扫描
  8. apache drill mysql_Apache Drill嵌入式安装
  9. 春秋招聘 + 寒暑假实习 时间线
  10. Android 性能优化系列之 —— 存储优化(3)