public static string ExportAsObj(this TerrainFile @this, int offset, out int newOffset) { var triangles = @this.Triangulate(); var obj = new StringBuilder(); foreach (var triangle in triangles.SelectMany(t => t.ToArray)) { obj.AppendLine($"v {triangle.X.ToString(CultureInfo.InvariantCulture)}" + $" {triangle.Y.ToString(CultureInfo.InvariantCulture)}" + $" {triangle.Z.ToString(CultureInfo.InvariantCulture)}" ); } for (var i = 0; i < triangles.Length; i++) { var index = i * 3 + 1 + offset; obj.AppendLine($"f {index}//{index} {index + 1}//{index + 1} {index + 2}//{index + 2}"); } newOffset = offset + triangles.Length * 3; return(obj.ToString()); }