好的,我希望有人可以帮助我。我试图在技术上将一个Vector3乘以一个Matrix4 ......
我的FMatrix
struct FMatrix
{
struct FPlane XPlane;
struct FPlane YPlane;
struct FPlane ZPlane;
struct FPlane WPlane;
};
所以每个FPlane都有X,Y,Z,W
制作FMatrix.XPlane.X FMatrix.XPlane.Y等
这是我到目前为止的代码,我知道我的Vector3在技术上需要转换为Vector4,使用1或0作为我的W。
FVector2D get2dPoint(FVector worldloc)
{
FMatrix mat = mHUD->ViewProjectionMatrix;
FVector res;
float x = worldloc.X;
float y = worldloc.Y;
float z = worldloc.Z;
res.X = (mat.XPlane.X*x) + (mat.YPlane.X*y) + (mat.ZPlane.X*z) + (mat.WPlane.X * 1);
res.Y = (mat.XPlane.Y*x) + (mat.YPlane.Y*y) + (mat.ZPlane.Y*z) + (mat.WPlane.Y * 1);
res.Z = (mat.XPlane.Z*x) + (mat.YPlane.Z*y) + (mat.ZPlane.Z*z) + (mat.WPlane.Z * 1);
float winX = round(((res.X + 1.0f) / 2.0f) * mHUD->uiResolution.X);
float winY = round(((1.0f - res.Y) / 2.0f) * mHUD->uiResolution.Y);
return{ winX, winY };
}
我相信你们大多数人都能看到我正在努力创造一个屏幕功能世界。我正在使用升级库,我看到了关于ublas和matrix的东西,但我确实迷失了,但如果这有助于你帮助我,我很酷。因此,使用普通c ++或使用boost函数的示例对我来说都很好。