@WeatherGod, you need to understand the existing code for my changes to make sense.  Take a look at the `Poly3DCollection` class in `art3d.py`, which is derived from the 2D `PolyCollection` in `collections.py`. `Poly3DCollection` stores the 3D vertices in `self._vec` and `self._segis`.  Each time `Poly3DCollection.do_3d_projection` is called, the 3D vertices are transformed and projected into 2D points that are stored in the usual `PolyCollection._paths` that are used for rendering.

The root cause of issue #178 is that a 2D `PolyCollection` has both 2D vertices and 2D codes.  The codes are used so that single arrays of vertices and codes can be used for multiple polygons, such as when a contour needs to render a hole polygon inside another polygon.  Up until now, `Poly3DCollection` has had no understanding of these codes and so has rendered all the vertices as though they were a single polygon, causing incorrect rendering.

My solution to this is to follow the existing (IMHO poor) implementation, and store the codes in `Poly3DCollection` as `self._codes3d` much like the vertices are stored as `self._vec` and `self._segis`.  Each time `do_3d_projection` is called, both the stored vertices and codes are transformed/projected and used to update the `PolyCollection._paths` that are used for rendering.

As an aside, the `Poly3DCollection` constructor is never called for 3D contours, instead the function `poly_collection_2d_to_3d` does some very nasty object creation without calling the constructor.  I believe this is to avoid the base `PolyCollection` constructor being called, as this will complain that the vertices are not 2D.  I put the line you have asked about in the constructor because it should be initialised whenever the constructor is called, but of course that argument also applies to `self._vec` and `self._segis` but this has not been done before for some reason.

As I said at the top of the PR, my code changes are not elegant but they are consistent (i.e. no worse than) the existing code.  I didn't really want to touch any of the mplot3d code, but as you said you didn't know how to solve the problem I thought I'd give it a try.