コード例 #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);
        }
コード例 #2
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);
        }
コード例 #3
0
        private IEnumerable<IMesh> ConvertGroups(IWavefrontObj wavefrontObj)
        {
            var meshes = new List<Mesh>();

            foreach (var group in wavefrontObj.Groups)
            {
                var mesh = ConvertGroup(wavefrontObj, group);
                meshes.Add(mesh);
            }

            return meshes;
        }
コード例 #4
0
        private Mesh ConvertGroup(IWavefrontObj wavefrontObj, Group group)
        {
            var mesh = new Mesh();

            foreach (var face in group.Faces)
            {
                ConvertFace(wavefrontObj, face, mesh);
                mesh.Name = group.Name;
            }

            return mesh;
        }
コード例 #5
0
        private Mesh ConvertGroup(IWavefrontObj wavefrontObj, Group group)
        {
            var mesh = new Mesh();

            foreach (var face in group.Faces)
            {
                ConvertFace(wavefrontObj, face, mesh);
                mesh.Name = group.Name;
            }

            return(mesh);
        }
コード例 #6
0
        private IEnumerable <IMesh> ConvertGroups(IWavefrontObj wavefrontObj)
        {
            var meshes = new List <Mesh>();

            foreach (var group in wavefrontObj.Groups)
            {
                var mesh = ConvertGroup(wavefrontObj, group);
                meshes.Add(mesh);
            }

            return(meshes);
        }
コード例 #7
0
        public IEnumerable<IMesh> ConvertToMesh(IWavefrontObj wavefrontObj)
        {
            var meshes = ConvertGroups(wavefrontObj);

            return meshes;
        }
コード例 #8
0
        public IEnumerable <IMesh> ConvertToMesh(IWavefrontObj wavefrontObj)
        {
            var meshes = ConvertGroups(wavefrontObj);

            return(meshes);
        }