- 最后登录
- 2015-3-2
- 注册时间
- 2012-11-21
- 阅读权限
- 20
- 积分
- 231
- 纳金币
- 208
- 精华
- 0
|
说是专业贴,其实也没有那么专业,个人学过图形学,而且公司最近也在做移动方面的开发,所以就简单看了一些unity3d内部是如何对mesh进行管理的。
下面是Mesh类的成员变量和方法:(其实学习Unity就是学习内部的类的接口以及用法)
简单解读一下:在变量中,介绍几个较为重要的。1. vertexs 定点任何模型,包括在3dmax 或者maya里面都已以定点为基础建立起来的,所以创建模型其实就是要组织这些顶点。2. normal 法线任何模型上的任何点不都需要法线。法线的作用是相对于光照来说的,我们知道光照到顶点上会有反射,但是如何反射呢? 这个规律在物理上已经可以求了,但是在模型中怎表示呢?就是通过这些法线来计算的,怎么折射,怎么反射,参考就是法线。如图所示:
3.uv uv表示二维纹理坐标每一个顶点要对应一个二维纹理坐标 为以后贴图对应起来坐标做准备。4.triangles 三角形每个模型的创建就是一个一个面组合的 每个面都是几个三角形拼成的,关于为什么是三角形,这个Google一个就会知道这里不多说了。
方法中:1. clear清楚2. RecaluculateBunds 是重新计算边界等等。
下面将一个我的例子:===================我是分割线======================================================================================= public CubeMesh() { topLeftFront = new Vector3(0.5f, 8, 15); topRightFront = new Vector3(0.5f, 8, 15); topLeftBack = new Vector3(-0.5f, 8, 15); topRightBack = new Vector3(-0.5f, 8, 15); bottomLeftFront = new Vector3(0.5f, -8, 15); bottomRightFront = new Vector3(0.5f, -8, 15); bottomLeftBack = new Vector3(-0.5f, -8, 15); bottomRightBack = new Vector3(-0.5f, -8, 15); //以上定义了八个定点 用来绘画 Cube GameObject newCubeObj=new GameObject("Default Cube"); //创建GameObject Mesh newCubeMesh=new Mesh(); newCubeObj.AddComponent<MeshFilter>(); newCubeObj.AddComponent<MeshRenderer>();//添加两个组件 //add vertex newCubeMesh.vertices=new Vector3[] {topLeftFront,topRightFront,topLeftBack,topRightBack,bottomLeftFront,bottomRightFront,bottomLeftBack,bottomRightBack}; //添加顶点向mesh //add uv Vector2[] uvs = new Vector2[newCubeMesh.vertices.Length]; for (int i = 0; i < uvs.Length;++i ) { uvs =new Vector2(newCubeMesh.vertices.x, newCubeMesh.vertices.z); } newCubeMesh.uv = uvs; //add triangles newCubeMesh.triangles = new int[]{0,5,4,0,1,5, 2,6,3,7,3,6, 5,3,7,5,1,3, 0,6,2,0,4,6, 0,2,1,1,2,3, 4,5,7,4,7,6, }; 指定三角面的绘画顺序,你可以更改一下试试。 newCubeMesh.RecalculateNormals(); newCubeObj.GetComponent<MeshFilter>().mesh = newCubeMesh; 添加mesh
}
===================我是分割线=======================================================================================
解释看注释源码可以在这里下载。
|
|