Beispiel #1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="field"></param>
        /// <param name="selection"></param>
        /// <returns></returns>
        public static Mesh ToPolySoup(this Grid3d field, IEnumerable <int> selection)
        {
            var mesh  = new Mesh();
            var verts = mesh.Vertices;
            var faces = mesh.Faces;

            (var dx, var dy) = (field.Scale.XY * 0.5);

            // add vertices
            foreach (int index in selection)
            {
                (var x, var y, var z) = field.ToWorldSpace(index);
                verts.Add(x - dx, y - dy, z);
                verts.Add(x + dx, y - dy, z);
                verts.Add(x - dx, y + dy, z);
                verts.Add(x + dx, y + dy, z);
            }

            // add faces
            for (int i = 0; i < verts.Count; i += 4)
            {
                faces.AddFace(i, i + 1, i + 3, i + 2);
            }

            return(mesh);
        }