readMesh( data ) {

			const chunk = this.readChunk( data );
			let next = this.nextChunk( data, chunk );
			const geometry = new THREE.BufferGeometry();
			const material = new THREE.MeshPhongMaterial();
			const mesh = new THREE.Mesh( geometry, material );
			mesh.name = 'mesh';

			while ( next !== 0 ) {

				if ( next === POINT_ARRAY ) {

					const points = this.readWord( data );
					this.debugMessage( '   Vertex: ' + points ); //BufferGeometry

					const vertices = [];

					for ( let i = 0; i < points; i ++ ) {

						vertices.push( this.readFloat( data ) );
						vertices.push( this.readFloat( data ) );
						vertices.push( this.readFloat( data ) );

					}

					geometry.setAttribute( 'position', new THREE.Float32BufferAttribute( vertices, 3 ) );

				} else if ( next === FACE_ARRAY ) {

					this.resetPosition( data );
					this.readFaceArray( data, mesh );

				} else if ( next === TEX_VERTS ) {

					const texels = this.readWord( data );
					this.debugMessage( '   UV: ' + texels ); //BufferGeometry

					const uvs = [];

					for ( let i = 0; i < texels; i ++ ) {

						uvs.push( this.readFloat( data ) );
						uvs.push( this.readFloat( data ) );

					}

					geometry.setAttribute( 'uv', new THREE.Float32BufferAttribute( uvs, 2 ) );

				} else if ( next === MESH_MATRIX ) {

					this.debugMessage( '   Tranformation Matrix (TODO)' );
					const values = [];

					for ( let i = 0; i < 12; i ++ ) {

						values[ i ] = this.readFloat( data );

					}

					const matrix = new THREE.Matrix4(); //X Line

					matrix.elements[ 0 ] = values[ 0 ];
					matrix.elements[ 1 ] = values[ 6 ];
					matrix.elements[ 2 ] = values[ 3 ];
					matrix.elements[ 3 ] = values[ 9 ]; //Y Line

					matrix.elements[ 4 ] = values[ 2 ];
					matrix.elements[ 5 ] = values[ 8 ];
					matrix.elements[ 6 ] = values[ 5 ];
					matrix.elements[ 7 ] = values[ 11 ]; //Z Line

					matrix.elements[ 8 ] = values[ 1 ];
					matrix.elements[ 9 ] = values[ 7 ];
					matrix.elements[ 10 ] = values[ 4 ];
					matrix.elements[ 11 ] = values[ 10 ]; //W Line

					matrix.elements[ 12 ] = 0;
					matrix.elements[ 13 ] = 0;
					matrix.elements[ 14 ] = 0;
					matrix.elements[ 15 ] = 1;
					matrix.transpose();
					const inverse = new THREE.Matrix4();
					inverse.copy( matrix ).invert();
					geometry.applyMatrix4( inverse );
					matrix.decompose( mesh.position, mesh.quaternion, mesh.scale );

				} else {

					this.debugMessage( '   Unknown mesh chunk: ' + next.toString( 16 ) );

				}

				next = this.nextChunk( data, chunk );

			}

			this.endChunk( chunk );
			geometry.computeVertexNormals();
			return mesh;

		}
Read mesh data chunk.

@method readMesh
@param {Dataview} data Dataview in use.
@return {Mesh} The parsed mesh.