一、先附上UE官方有關坐标空間的介紹:坐标空間術語
二、在C++中進行坐标轉化,直接附上代碼:
FMinimalViewInfo MinimalViewInfo = FMinimalViewInfo();//執行個體化一個視野資訊(FMinimalViewInfo),配置以下參數給它
MinimalViewInfo.Location = 相機位置資訊;
MinimalViewInfo.Rotation = 相機旋轉資訊;
MinimalViewInfo.FOV = 相機的FOV;
MinimalViewInfo.DesiredFOV = 相機的FOV;
MinimalViewInfo.AspectRatio = 相機橫縱比;
FMatrix ViewMatrix;
FMatrix ProjectionMatrix;
FMatrix ViewProjectionMatrix;
//得到了三個轉化矩陣
//ViewMatrix:從世界空間轉化到錄影機空間的矩陣
//ProjectionMatrix:從錄影機空間轉化到裁剪空間的矩陣
//ViewProjectionMatrix: 從世界空間轉化到裁剪空間的矩陣,即以上兩個矩陣相乘
UGameplayStatics::GetViewProjectionMatrix(MinimalViewInfo, ViewMatrix, ProjectionMatrix, ViewProjectionMatrix);
//得到各個轉化矩陣後就可以利用矩陣變換點或者向量了:
FVector PosInViewSpace = ViewMatrix.TransformPosition("你想變換的坐标") ;
FVector VecInViewSpace = ViewMatrix.TransformVector("你想變換的向量");