## The Layers of MeshCNN

In MeshCNN the edges of a mesh are analogous to pixels in an image, since they are the basic building blocks
for all CNN operations. Just as images start with a basic input feature: an RGB value per pixel;
MeshCNN starts with a few basic geometric features per edge. The input edge feature is a 5-dimensional vector
every edge: the dihedral angle, two inner angles and two edge-length ratios for each face.

#### Input Edge Features

MeshCNN learns features on the edges of the mesh, since every edge is incident to exactly two faces (triangles),
which defines a natural fixed-sized convolutional neighborhood of four edges.

#### Mesh Convolution

Learned convolutional filters are applied on each edge feature vector and the 4 one-ring neighbors.
The consistent face normal order is used to apply a symmetric convolution operation, which learns edge
features that are invariant to rotations, translations and uniform scale.
Mesh pooling downsamples the number of features in the network, by performing a edge-collapse on the learned
edge features. The new edge neighbors are computed dynamically inside the network, and used in the next convolutions.

#### Mesh Pooling & Unpooling

For fully-convolutional tasks (such as segmentation), a mesh unpooling operation is used to restore the
original mesh resolution.