@Override
    @SuppressWarnings("unchecked")
    public void read(JmeImporter importer) throws IOException {
        super.read(importer);
        InputCapsule capsule = importer.getCapsule(this);

        type = capsule.readEnum("type", SplineType.class, null);
        basisUFunctionDegree = capsule.readInt("basisUFunctionDegree", 0);
        basisVFunctionDegree = capsule.readInt("basisVFunctionDegree", 0);
        uSegments = capsule.readInt("uSegments", 0);
        vSegments = capsule.readInt("vSegments", 0);

        float[][] knotArray2D = capsule.readFloatArray2D("knotArray2D", null);
        int numKnotArrayLists = knotArray2D.length;
        knots = new ArrayList[numKnotArrayLists];
        for (int i = 0; i < numKnotArrayLists; ++i) {
            float[] knotArray = knotArray2D[i];
            knots[i] = new ArrayList<>(knotArray.length);
            for (float knot : knotArray) {
                knots[i].add(knot);
            }
        }

        List[] listArray = capsule.readSavableArrayListArray("listArray", null);
        int numControlPointLists = listArray.length;
        controlPoints = new ArrayList<>(numControlPointLists);
        for (int i = 0; i < numControlPointLists; ++i) {
            List<Vector4f> list = listArray[i];
            controlPoints.add(list);
        }
    }
De-serializes from the specified importer, for example when loading from
a J3O file.

@param importer the importer to use (not null)
@throws IOException from the importer
jme3-core/src/main/java/com/jme3/scene/shape/Surface.java