A polygon mesh compression system comprising: a processor configured to perform operations comprising: receiving a polygon mesh composed of a plurality of polygons defined by a set of vertices, each vertex having an original index, the plurality of polygons comprising a plurality of non-triangle polygons; traversing the vertices of the plurality of polygons in the polygon mesh in an order of traversal, the order of traversal defining a traversal order of the vertices of the polygon mesh to partition the polygon mesh into a set of polygon fans, wherein each vertex index of the polygon mesh is relabeled based on the order of traversal; partitioning the polygon mesh into an ordered set of polygon fans in the order of traversal, at least one of the polygon fans having a plurality of polygons, each polygon fan being defined by the corresponding ordered sequence of vertices of the one or more polygons in the polygon fan in the order of traversal, and, for the at least one polygon fan having the plurality of polygons, the order of traversal starts from a common vertex of the plurality of polygons in the at least one polygon fan; converting the polygon mesh comprising the plurality of non-triangle polygons to a triangle mesh by tessellating each non-triangle polygon in the ordered set of polygon fans into triangles from the common vertex to corresponding vertices of each non-triangle polygon in the order of traversal and generating an ordered set of triangle fans in the order of traversal; and generating a sequence of values each corresponding to a number of triangles for each of the plurality of polygons; a first encoder configured to receive the triangle mesh and the ordered set of triangle fans and compress the polygon mesh using the triangle mesh and the set of triangle fans; and an entropy encoder configured to receive and compress the sequence of values. receiving a polygon mesh composed of a plurality of polygons defined by a set of vertices, each vertex having an original index, the plurality of polygons comprising a plurality of non-triangle polygons; traversing the vertices of the plurality of polygons in the polygon mesh in an order of traversal, the order of traversal defining a traversal order of the vertices of the polygon mesh to partition the polygon mesh into a set of polygon fans, wherein each vertex index of the polygon mesh is relabeled based on the order of traversal; partitioning the polygon mesh into an ordered set of polygon fans in the order of traversal, at least one of the polygon fans having a plurality of polygons, each polygon fan being defined by the corresponding ordered sequence of vertices of the one or more polygons in the polygon fan in the order of traversal, and, for the at least one polygon fan having the plurality of polygons, the order of traversal starts from a common vertex of the plurality of polygons in the at least one polygon fan; converting the polygon mesh comprising the plurality of non-triangle polygons to a triangle mesh by tessellating each non-triangle polygon in the ordered set of polygon fans into triangles from the common vertex to corresponding vertices of each non-triangle polygon in the order of traversal and generating an ordered set of triangle fans in the order of traversal; and generating a sequence of values each corresponding to a number of triangles for each of the plurality of polygons; a first encoder configured to receive the triangle mesh and the ordered set of triangle fans and compress the polygon mesh using the triangle mesh and the set of triangle fans; and an entropy encoder configured to receive and compress the sequence of values.