I even tried to compute the transformation matrix myself and used SetActorTransformation to force it to do so. However, the result still only shows rotation, scaling and translation, no matter what I have in the matrix. Did I miss something (such as toggle some attributes) or there is just no way to get around?
Edit: Here is the my guess for the cause of the problem. I looked at the documentation for FTransform, it only has three components, Rotation, Scale3D and Translation. That suggest that it is probably that no matter what FMatrix I give to construct FTransform, it always extract those three pieces of information therefore ignored or other possible transformations (such as shearing). So is it possible to directly apply a FMatrix to an actor without explicitly/implicitly converting into FTransform? Otherwise the only way to do shearing may be apply a series of carefully ordered and computed scaling and rotation to achieve the effect, but it looks to me awkward and it is not clear how the math behind this work either.