@Override
    public void read(JmeImporter im) throws IOException {
        super.read(im);
        InputCapsule ic = im.getCapsule(this);
        mesh = (Mesh) ic.readSavable("mesh", null);

        material = null;
        String matName = ic.readString("materialName", null);
        if (matName != null) {
            // Material name is set,
            // Attempt to load material via J3M
            try {
                material = im.getAssetManager().loadMaterial(matName);
            } catch (AssetNotFoundException ex) {
                // Cannot find J3M file.
                if (logger.isLoggable(Level.FINE)) {
                    logger.log(Level.FINE, "Cannot locate {0} for geometry {1}",
                            new Object[]{matName, key});
                }
            }
        }
        // If material is NULL, try to load it from the geometry
        if (material == null) {
            material = (Material) ic.readSavable("material", null);
        }
        ignoreTransform = ic.readBoolean("ignoreTransform", false);

        if (ic.getSavableVersion(Geometry.class) == 0) {
            // Fix shared mesh (if set)
            Mesh sharedMesh = getUserData(UserData.JME_SHAREDMESH);
            if (sharedMesh != null) {
                getMesh().extractVertexData(sharedMesh);
                setUserData(UserData.JME_SHAREDMESH, null);
            }
        }
    }
Sets the number of morph targets that can be handled
on the GPU simultaneously for this geometry.
Note that it depends on the material set on this geometry.
This number is computed and set by the MorphControl,
so it might be available only after the first frame.
Else it's set to -1.
WARNING: setting this manually might crash the shader compilation if set too high.
Do it at your own risk.

@param nbSimultaneousGPUMorph the number of simultaneous morph targets to be handled on the GPU.
jme3-core/src/main/java/com/jme3/scene/Geometry.java