/// <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);
        }
Beispiel #2
0
        /// <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);
        }