@Override
    public void read(JmeImporter im) throws IOException {
        super.read(im);
        InputCapsule ic = im.getCapsule(this);

        prefilteredEnvMap = (TextureCubeMap) ic.readSavable("prefilteredEnvMap", null);
        position = (Vector3f) ic.readSavable("position", null);
        area = (ProbeArea)ic.readSavable("area", null);
        if(area == null) {
            // retro compat
            BoundingSphere bounds = (BoundingSphere) ic.readSavable("bounds", new BoundingSphere(1.0f, Vector3f.ZERO));
            area = new SphereProbeArea(bounds.getCenter(), bounds.getRadius());
        }
        area.setCenter(position);
        nbMipMaps = ic.readInt("nbMipMaps", 0);
        ready = ic.readBoolean("ready", false);

        Savable[] coeffs = ic.readSavableArray("shCoeffs", null);
        if (coeffs == null) {
            ready = false;
            logger.log(Level.WARNING, "LightProbe is missing parameters, it should be recomputed. Please use lightProbeFactory.updateProbe()");
        } else {
            shCoefficients = new Vector3f[coeffs.length];
            for (int i = 0; i < coeffs.length; i++) {
                shCoefficients[i] = (Vector3f) coeffs[i];
            }
        }
    }
Returns the data to send to the shader.
This is a column major matrix that is not a classic transform matrix, it's laid out in a particular way
     //   3x3 rot mat|
     //      0  1  2 |  3
     // 0 | ax bx cx | px | )
     // 1 | ay by cy | py | probe position
     // 2 | az bz cz | pz | )
     // --|----------|
     // 3 | sx sy sz   sp |    1/probe radius + nbMipMaps
     //    --scale--
<p>
(ax, ay, az) is the pitch rotation axis
(bx, by, bz) is the yaw rotation axis
(cx, cy, cz) is the roll rotation axis
Like in a standard 3x3 rotation matrix.
It's also the valid rotation matrix of the probe in world space.
Note that for the Spherical Probe area this part is a 3x3 identity matrix.
<p>
(px, py, pz) is the position of the center of the probe in world space
Like in a valid 4x4 transform matrix.
<p>
(sx, sy, sy) is the extent of the probe ( the scale )
In a standard transform matrix, the scale is applied to the rotation matrix part.
In the shader, we need the rotation and the scale to be separated. Doing so avoids extracting
the scale from a classic transform matrix in the shader.
<p>
(sp) is a special entry, it contains the packed number of mip maps of the probe and the inverse radius for the probe.
since the inverse radius in lower than 1, it's packed in the decimal part of the float.
The number of mip maps is packed in the integer part of the float.
(ie: for 6 mip maps and a radius of 3, sp= 6.3333333)
<p>
The radius is obvious for a SphereProbeArea,
but in the case of an OrientedBoxProbeArea it's the max of the extent vector's components.

@return the pre-existing matrix
jme3-core/src/main/java/com/jme3/light/LightProbe.java