首页 > 编程语言 > 详细

unity Mesh的简单实现

时间:2020-06-11 12:28:09      阅读:41      评论:0      收藏:0      [点我收藏+]

 

[RequireComponent(typeof(MeshFilter), typeof(MeshRenderer))]

在场景中创建空物体 并为其添加 MeshFilter, MeshRenderer

创建一个mesh 

Mesh mesh = new Mesh();
MeshFilter filter = GetComponent<MeshFilter>();
filter.mesh = mesh;
mesh.name = "zzzz";

获取顶点坐标 如果是按顺时针获取的则法线方向是向上的,反之逆时针获取的则法线方向向下  

这个平面是根据空物体的中心点 为Vector3(0, 0, 0) 顺时针方向四个点组成

技术分享图片

mesh.vertices = GetVertices();//获取顶点坐标

Vector3[] GetVertices()
{
    return new Vector3[] {
        new Vector3(0, 0, 0),
        new Vector3(1, 0, 0),
        new Vector3(1, 1, 0),
        new Vector3(0, 1, 0)
   };
}

mesh渲染是把一个面分成很多三角形进行渲染的 以每三个点为一组构成三角形 

mesh.triangles = GetTrangles();

int[] GetTrangles()
{
  return new int[] {  
    0, 1, 2,
    0, 2, 3
  };
}

mesh.uv = GetUV();

//设置uv贴图如果不设置这个mesh将不会展现一张完整的图片 返回的v2数组与顶点数组相对应的

但不同的是uv坐标是以左下角为Vector2(0, 0)

所以:Vector3(0, 0, 0)   -- >    Vector2(1, 0)
         Vector3(1, 0, 0)   -->   Vector2(0, 0)
         Vector3(1, 1, 0)    -->     Vector2(0, 1)
         Vector3(0, 1, 0)    -->    Vector2(1,1)技术分享图片

 技术分享图片

Vector2[] GetUV()
{
   return new Vector2[] {
    new Vector2(1, 0),
    new Vector2(0, 0),
    new Vector2(0, 1),
    new Vector2(1,1)
   };
}

 

unity Mesh的简单实现

原文:https://www.cnblogs.com/zjp959/p/13091757.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!