コード例 #1
0
    public static void GenerateRightMesh(MeshFilter _oldMeshF, MeshRenderer _oldMeshR, SliceData _dataPlane)
    {
        GameObject newMesh;
        CustomMesh mesh = new CustomMesh(out newMesh, "right Mesh", _oldMeshF.transform, _oldMeshR.material);

        int vertexID = 0;

        for (int faceID = 1; faceID < _dataPlane.Faces.Count; faceID += 2)
        {
            if (!_dataPlane.Faces.ContainsKey(faceID))
            {
                continue;
            }

            foreach (Edge e in _dataPlane.Faces[faceID].Edges)
            {
                foreach (Vector3 p in _dataPlane.Faces[faceID].GetDistinctsPoints())
                {
                    Vector3 vertexPos = _oldMeshF.transform.InverseTransformPoint(p);
                    mesh.vertices.Add(vertexPos);
                    mesh.triangles.Add(vertexID);
                    vertexID++;
                }
            }
        }

        /*Debug.Log("nb vertices " + mesh.vertices.Count);
         * Debug.Log("nb triangles " + mesh.triangles.Count);*/

        mesh.Recalculate();
        mesh.AssignToMesh(newMesh.GetComponent <MeshFilter>());
        mesh.AssignToSharedMesh(newMesh.GetComponent <MeshCollider>());
    }