public Model3DGroup CreatePolygonModel(Point3D[] points) { MeshGeometry3D mesh = new MeshGeometry3D(); int indexPoints = 0; int totalPoints = points.Count(); for (indexPoints = 0; indexPoints < totalPoints; indexPoints++) { mesh.Positions.Add(points.ElementAt(indexPoints)); } //Solo se necesitan tres puntos para poder saber la cara del triangulo for (int i = 0; i < 3; i++) { mesh.TriangleIndices.Add(i); } //Para obtener el vector normal solo se necesitan tres puntos del plano Vector3D normal = CalculateNormal(points.ElementAt(0), points.ElementAt(1), points.ElementAt(2)); //¿Checar por que se agrega 3 veces la normal? //for (int i = 0; i < 3; i++) //{ mesh.Normals.Add(normal); //} Material material = new DiffuseMaterial(new SolidColorBrush(Colors.DarkCyan)); GeometryModel3D model = new GeometryModel3D(mesh, material); Model3DGroup group = new Model3DGroup(); group.Children.Add(model); return group; }