public Mesh cloneForAnim() {
        Mesh clone = clone();
        if (getBuffer(Type.BindPosePosition) != null) {
            VertexBuffer oldPos = getBuffer(Type.Position);

            // NOTE: creates deep clone
            VertexBuffer newPos = oldPos.clone();
            clone.clearBuffer(Type.Position);
            clone.setBuffer(newPos);

            if (getBuffer(Type.BindPoseNormal) != null) {
                VertexBuffer oldNorm = getBuffer(Type.Normal);
                VertexBuffer newNorm = oldNorm.clone();
                clone.clearBuffer(Type.Normal);
                clone.setBuffer(newNorm);

                if (getBuffer(Type.BindPoseTangent) != null) {
                    VertexBuffer oldTang = getBuffer(Type.Tangent);
                    VertexBuffer newTang = oldTang.clone();
                    clone.clearBuffer(Type.Tangent);
                    clone.setBuffer(newTang);
                }
            }
        }
        return clone;
    }
Clone the mesh for animation use.
This creates a shallow clone of the mesh, sharing most
of the {@link VertexBuffer vertex buffer} data, however the
{@link Type#Position}, {@link Type#Normal}, and {@link Type#Tangent} buffers
are deeply cloned.

@return A clone of the mesh for animation use.
jme3-core/src/main/java/com/jme3/scene/Mesh.java