Unity中实时获取网格上点的位置,还有对应的面和法线 |
您所在的位置:网站首页 › lumion法线贴图的位置比例 › Unity中实时获取网格上点的位置,还有对应的面和法线 |
在Unity中,可以使用Mesh类来获取一个网格上点的位置以及对应的面和法线。以下是具体步骤: 步骤一:获取网格对象在脚本中,需要先获取要操作的网格对象。可以使用以下代码: Mesh mesh = GetComponent().mesh; 其中,GetComponent()用于获取该游戏对象上的MeshFilter组件,mesh属性用于获取该组件的网格对象。 步骤二:获取网格上指定点的位置获取网格上指定点的位置可以使用以下代码: Vector3[] vertices = mesh.vertices;; Vector3 vertexPosition = vertices[vertexIndex]; 其中,vertices是网格的顶点数组,vertexIndex为指定点在该数组中的索引,vertexPosition为该点的位置。 步骤三:获取网格上指定点所在面的法线获取网格上指定点所在面的法线可以使用以下代码: int[] triangles = mesh.triangles;int triangleIndex = triangles[vertexIndex / 3] * 3;Vector3[] normals = mesh.normals;Vector3 normal = normals[triangleIndex]; 其中,triangles是网格的三角形索引数组,vertexIndex为指定点在该数组中的索引,由于一个三角形包含三个顶点,所以需要除以3来获取该点所在三角形的索引。triangleIndex为该点所在三角形的第一个顶点在triangles数组中的索引,normals为网格的法线数组,normal为该点所在面的法线。 步骤四:获取网格上指定点所在面的索引获取网格上指定点所在面的索引可以使用以下代码: int[] triangles = mesh.triangles;int triangleIndex = triangles[vertexIndex / 3]; 其中,triangles是网格的三角形索引数组,vertexIndex为指定点在该数组中的索引,由于一个三角形包含三个顶点,所以需要除以3来获取该点所在三角形的索引。
以上就是在Unity中实时获取一个网格上点的位置以及对应的面和法线的方法。 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |