Actually it's not really just a rotation, but a coordinate system transformation. Imagine you look through a camera that is somehow oriented in 3 space and you have an offset vector relative to your camera view, e.g. the position of your weapon. The operation (OffsetVector >> CameraRotation) now takes the camera-local offset vector and calculates the global (i.e. in actual world coordinates) offset vector that you could use to actually position the weapon mesh in world space so its offset in camera space (i.e. your view) is what you'd expect.
The math behind that transformation is relatively complex, but it can be expressed in a few simple terms through other UnrealScript operations:
Code:
static final operator(22) vector >> (vector A, rotator B)
{
local vector X, Y, Z;
GetAxes(B, X, Y, Z);
return A.X * X + A.Y * Y + A.Z * Z;
}
That's not how it actually happens in native code, but it's an exact description of the effect. Basically the three axis unit vectors of the camera rotation's local coordinate system are multiplied by the corresponding scalar components of the offset vector. The three new vectors are then combined to the transformed offset vector in world coordinates.
The << operator performs the opposite transformation: from a global offset to a local offset.
These two transformations are part of the Canvas.(De)Project magic. The conversion between the local offset vector and screen coordinates additionally takes FOV into account, but that's a whole different story.
Bookmarks