Camera视图变换

这里Camera视图变换,就是常说的从世界坐标变换到眼睛坐标。因此View Matrix就是世界系到眼睛坐标系的变换矩阵。
CameraComponent->GetCameraView()->GetViewProjectionMatrix()会同时输出3个矩阵:
这里分析一下UE4里的眼睛坐标系的朝向问题:
  1. 在场景原点放置一个Camera Actor,姿态清零
  2. 在场景原点放置一个Cube Actor,姿态清零
  3. CameraActor->CameraComponent->GetCameraView()->GetViewProjectionMatrix(&OutViewMatrix),用OutViewMatrix.TransformPosition(Cube->GetActorLocation()),打印出这个新的Postion
    • 当CubeActor的位置为(0,0,0)时,打印出(0,0,0,1)
    • 当CubeActor的位置为(10,0,0)时,打印出(0,0,10,1) => 表明UE4里的眼睛坐标系中往前看的方向是该坐标系的Z轴
    • 当CubeActor的位置为(0,10,0)时,打印出(10,0,0,1) => 表明UE4里的眼睛坐标系中往右看的方向是该坐标系的X轴
    • 当CubeActor的位置为(0,0,10)时,打印出(0,10,0,1) => 表明UE4里的眼睛坐标系中往上看的方向是该坐标系的Y轴
  4. 总结一下:UE4里眼睛坐标系为左手系,X->右,Y->上,Z->前。这里的前后左右上下是站在眼睛的角度来说的。
应用:

关于【物体变换】与【坐标系变换】及其矩阵表示

阅读以前写的这篇文章
 【源坐标系的坐标基在目标坐标系里的坐标描述,就是源坐标系到目标坐标系的坐标系变换矩阵】

UE坐标空间、坐标系

注意Clip空间的描述:After the perspective projection matrix was applied. Note that W in Clip space is the same as View Space Z. 也就是说:Wclip=Zeye
在Clip空间内的culling操作:-|w|<=x,y<=|w|, z<=w为可视