private Matrix3D ReadTransformation(BinaryReader reader)
{
Vector3D localx = this.ReadVector(reader);
Vector3D localy = this.ReadVector(reader);
Vector3D localz = this.ReadVector(reader);
Vector3D origin = this.ReadVector(reader);
var matrix = new Matrix3D();
matrix.M11 = localx.X;
matrix.M21 = localx.Y;
matrix.M31 = localx.Z;
matrix.M12 = localy.X;
matrix.M22 = localy.Y;
matrix.M32 = localy.Z;
matrix.M13 = localz.X;
matrix.M23 = localz.Y;
matrix.M33 = localz.Z;
matrix.OffsetX = origin.X;
matrix.OffsetY = origin.Y;
matrix.OffsetZ = origin.Z;
matrix.M14 = 0;
matrix.M24 = 0;
matrix.M34 = 0;
matrix.M44 = 1;
return matrix;
}