/// <summary> /// Calcula los datos necesarios para poder generar la superficie indicada por las secciones /// contiguas indicadas en la colección de secciones. A través de esta calcula los vértices, /// normales e índices correspondientes a la superficie a representar. /// </summary> protected virtual void BuildSurfaceDataBuffers() { IList <double> vertices = new List <double>(); IList <int> indices; //IList<int> indices = new List<int>(); IList <double> normales = new List <double>(); IndexStrategy indexStrategy = new IndexStrategy(); Seccion seccion; //int indexCount = 0; // Armo la lista de vertices e indices. Esta ultima pensada que // se arma con TRIANGLE. for (int i = 0; i < secciones.Count; i++) { seccion = secciones[i]; for (int j = 0; j < seccion.Vertices.Count; j++) { // Vertices vertices.Add(seccion.Vertices[j].X); vertices.Add(seccion.Vertices[j].Y); vertices.Add(seccion.Vertices[j].Z); // Normales //Punto normal = this.GetNormalForVertex(seccion, j); Punto normal = this.CalculateNormalForPunto(j, seccion.Vertices[j], i, seccion); normales.Add(normal.X); normales.Add(normal.Y); normales.Add(normal.Z); } } // Indices indices = indexStrategy.GetIndexForSecciones(this.RENDER_MODE, secciones); this.vertex = vertices.ToArray <double>(); this.normals = normales.ToArray <double>(); this.indexes = indices.ToArray <int>(); }
/// <summary> /// Calcula los datos necesarios para poder generar la superficie indicada por las secciones /// contiguas indicadas en la colección de secciones. A través de esta calcula los vértices, /// normales e índices correspondientes a la superficie a representar. /// </summary> protected virtual void BuildSurfaceDataBuffers() { IList<double> vertices = new List<double>(); IList<int> indices; //IList<int> indices = new List<int>(); IList<double> normales = new List<double>(); IndexStrategy indexStrategy = new IndexStrategy(); Seccion seccion; //int indexCount = 0; // Armo la lista de vertices e indices. Esta ultima pensada que // se arma con TRIANGLE. for (int i = 0; i < secciones.Count; i++) { seccion = secciones[i]; for (int j = 0; j < seccion.Vertices.Count; j++) { // Vertices vertices.Add(seccion.Vertices[j].X); vertices.Add(seccion.Vertices[j].Y); vertices.Add(seccion.Vertices[j].Z); // Normales //Punto normal = this.GetNormalForVertex(seccion, j); Punto normal = this.CalculateNormalForPunto(j, seccion.Vertices[j], i, seccion); normales.Add(normal.X); normales.Add(normal.Y); normales.Add(normal.Z); } } // Indices indices = indexStrategy.GetIndexForSecciones(this.RENDER_MODE, secciones); this.vertex = vertices.ToArray<double>(); this.normals = normales.ToArray<double>(); this.indexes = indices.ToArray<int>(); }