private void updateInstance(Matrix4f worldMatrix, float[] store,
                                int offset, Matrix3f tempMat3,
                                Quaternion tempQuat) {
        worldMatrix.toRotationMatrix(tempMat3);
        tempMat3.invertLocal();

        // NOTE: No need to take the transpose in order to encode
        // into quaternion, the multiplication in the shader is vec * quat
        // apparently...
        tempQuat.fromRotationMatrix(tempMat3);

        // Column-major encoding. The "W" field in each of the encoded
        // vectors represents the quaternion.
        store[offset + 0] = worldMatrix.m00;
        store[offset + 1] = worldMatrix.m10;
        store[offset + 2] = worldMatrix.m20;
        store[offset + 3] = tempQuat.getX();
        store[offset + 4] = worldMatrix.m01;
        store[offset + 5] = worldMatrix.m11;
        store[offset + 6] = worldMatrix.m21;
        store[offset + 7] = tempQuat.getY();
        store[offset + 8] = worldMatrix.m02;
        store[offset + 9] = worldMatrix.m12;
        store[offset + 10] = worldMatrix.m22;
        store[offset + 11] = tempQuat.getZ();
        store[offset + 12] = worldMatrix.m03;
        store[offset + 13] = worldMatrix.m13;
        store[offset + 14] = worldMatrix.m23;
        store[offset + 15] = tempQuat.getW();
    }
Return user per-instance transform data.

@return The per-instance transform data.

@see #setTransformUserInstanceData(com.jme3.scene.VertexBuffer)
jme3-core/src/main/java/com/jme3/scene/instancing/InstancedGeometry.java