Можно просто скопировать нужные вершины с данными в новый Mesh, но некоторы вершин не будет хватать. Примерно так:
Mesh from_m = renderer.sharedMesh;
Mesh to_l = new Mesh();
Mesh to_r = new Mesh();
Vector3[] vert = from_m.vertices;
Vector3[] vert_l = Vector3[1];
Vector3[] vert_r = Vector3[1];
for(int i=0; i<vert.Length;i++)
{
if(vert.x>0) {//сечем плоскостью z0y
vert_l.Resize(vert_l.Length+1);
vert_l.Add(vert[i]);
} else{
vert_r.Resize(vert_r.Length+1);
vert_r.Add(vert[i]);
}
}
to_l.vertices = vert_l;
to_r.vertices = vert_r;
Вот что-то про грани так сразу не скажу.
Только чую муторный метод, так как если разрез сложный, то матрицами придется пересчитывать повороты и т.д