Ejemplo n.º 1
0
        private void ConvertFace(IWavefrontObj wavefrontObj, Face face, Mesh mesh)
        {
            var points = new List<Vector3>();
            var verticesCount = wavefrontObj.Vertices.Count;
            for (var i = 0; i < face.Count; i++)
            {
                var faceVertex = face[i];
                var actualVertexIndex = 0;
                if (faceVertex.VertexIndex > 0)
                {
                    actualVertexIndex = faceVertex.VertexIndex - 1;
                }
                else if (faceVertex.VertexIndex < 0)
                {
                    actualVertexIndex = verticesCount + faceVertex.VertexIndex;
                }
                else
                {
                    throw new InvalidDataException("Obj model contains a vertex index of 0.");
                }
                var geoVertex = wavefrontObj.Vertices[actualVertexIndex];
                var point = new Vector3(geoVertex.X, geoVertex.Y, geoVertex.Z);
                points.Add(point);
            }

            var polygon = new Polygon(points);

            mesh.Faces.Add(polygon);
        }
Ejemplo n.º 2
0
        public override void Parse(string line)
        {
            var vertices = line.Split(new[] {' '}, StringSplitOptions.RemoveEmptyEntries);

            var face = new Face();

            foreach (var vertexString in vertices)
            {
                var faceVertex = ParseFaceVertex(vertexString);
                face.AddVertex(faceVertex);
            }

            _faceGroup.AddFace(face);
        }
Ejemplo n.º 3
0
        public void AddFace(Face face)
        {
            PushGroupIfNeeded();

            _currentGroup.AddFace(face);
        }
Ejemplo n.º 4
0
 public void AddFace(Face face)
 {
     _faces.Add(face);
 }