/// <summary> /// Builds a line list containing a line for each face tangent. /// </summary> public List <Vector3> BuildLineListForFaceTangents() { List <Vector3> result = new List <Vector3>(); //Generate all lines foreach (var actTriangle in this.Triangles) { //Get all vertices of current face var geo1 = m_owner.RawGeometry[actTriangle.Index1]; var geo2 = m_owner.RawGeometry[actTriangle.Index2]; var geo3 = m_owner.RawGeometry[actTriangle.Index3]; //Get average values for current face Vector3 averageTangent = Vector3.Normalize(Vector3Ex.Average(geo1.Tangent, geo2.Tangent, geo3.Tangent)); Vector3 averagePosition = Vector3Ex.Average(geo1.Position, geo2.Position, geo3.Position); averageTangent *= 0.2f; //Generate a line if (averageTangent.Length() > 0.1f) { result.Add(averagePosition); result.Add(averagePosition + averageTangent); } } return(result); }
/// <summary> /// Builds a line list containing a line for each face normal. /// </summary> public List <Vector3> BuildLineListForFaceNormals() { List <Vector3> result = new List <Vector3>(); //Generate all lines foreach (Triangle actTriangle in this.Triangles) { //Get all vertices of current face Vertex vertex1 = m_owner.VerticesInternal[actTriangle.Index1]; Vertex vertex2 = m_owner.VerticesInternal[actTriangle.Index2]; Vertex vertex3 = m_owner.VerticesInternal[actTriangle.Index3]; //Get average values for current face Vector3 averageNormal = Vector3.Normalize(Vector3Ex.Average(vertex1.Normal, vertex2.Normal, vertex3.Normal)); Vector3 averagePosition = Vector3Ex.Average(vertex1.Position, vertex2.Position, vertex3.Position); averageNormal *= 0.2f; //Generate a line if (averageNormal.Length() > 0.1f) { result.Add(averagePosition); result.Add(averagePosition + averageNormal); } } return(result); }