如何用代码变换网格
答案:2 悬赏:50 手机版
解决时间 2021-02-04 03:29
- 提问者网友:戎马万世
- 2021-02-03 03:04
如何用代码变换网格
最佳答案
- 五星知识达人网友:一把行者刀
- 2021-02-03 03:51
动态创建一个网格:
MeshFilter meshFilter = GetComponent();
Mesh mesh = meshFilter.sharedMesh;
if (mesh == null){
meshFilter.mesh = new Mesh();
mesh = meshFilter.sharedMesh;
}
Vector3 p0 = new Vector3(0,0,0);
Vector3 p1 = new Vector3(1,0,0);
Vector3 p2 = new Vector3(0,1,0);
Vector3 p3 = new Vector3(0,0,1);
// clear mesh of current data
mesh.Clear();
// set vertices
mesh.vertices = new Vector3[]{p0,p1,p2,p3};
// set
mesh.triangles = new int[]{
0,1,2,
0,2,3,
2,1,3,
0,3,1
};
mesh.RecalculateNormals();
mesh.RecalculateBounds();
mesh.Optimize();
修改现有的顶点 (对于脸也类似):
// mesh.vertices returns a copy
Vector3[] vert_copy = mesh.vertices;
vert_copy[0] = new Vector3(10,11,12);
vert_copy[1] = new Vector3(13,14,15);
// reassign new vertices to mesh
mesh.vertices = vert_copy;
mesh.RecalculateNormals();
mesh.RecalculateBounds();
mesh.Optimize();
当你重新计算法线和界限的时候,这些调用变得复杂。如果转变的时候网格不会与其他网格互动, 你可以推迟RecalculateBounds()直到转变结束。相似的,如果你预计只有很小的每帧的转变,可以以每隔一帧或者每300毫秒限制ecalculateNormals()。
MeshFilter meshFilter = GetComponent();
Mesh mesh = meshFilter.sharedMesh;
if (mesh == null){
meshFilter.mesh = new Mesh();
mesh = meshFilter.sharedMesh;
}
Vector3 p0 = new Vector3(0,0,0);
Vector3 p1 = new Vector3(1,0,0);
Vector3 p2 = new Vector3(0,1,0);
Vector3 p3 = new Vector3(0,0,1);
// clear mesh of current data
mesh.Clear();
// set vertices
mesh.vertices = new Vector3[]{p0,p1,p2,p3};
// set
mesh.triangles = new int[]{
0,1,2,
0,2,3,
2,1,3,
0,3,1
};
mesh.RecalculateNormals();
mesh.RecalculateBounds();
mesh.Optimize();
修改现有的顶点 (对于脸也类似):
// mesh.vertices returns a copy
Vector3[] vert_copy = mesh.vertices;
vert_copy[0] = new Vector3(10,11,12);
vert_copy[1] = new Vector3(13,14,15);
// reassign new vertices to mesh
mesh.vertices = vert_copy;
mesh.RecalculateNormals();
mesh.RecalculateBounds();
mesh.Optimize();
当你重新计算法线和界限的时候,这些调用变得复杂。如果转变的时候网格不会与其他网格互动, 你可以推迟RecalculateBounds()直到转变结束。相似的,如果你预计只有很小的每帧的转变,可以以每隔一帧或者每300毫秒限制ecalculateNormals()。
全部回答
- 1楼网友:雪起风沙痕
- 2021-02-03 05:17
动态创建一个网格: meshfilter meshfilter = getcomponent(); mesh mesh = meshfilter.sharedmesh; if (mesh == null){ meshfilter.mesh = new mesh(); mesh = meshfilter.sharedmesh; } vector3 p0 = new vector3(0,0,0); vector3 p1 = new ve
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯