所以我正在尝试在我的 VR 应用程序(而不是 Unity)中实现远程传送。我能够从中获取每个控制器的姿势矩阵
if (auto error = vr::VRInput()->GetPoseActionDataForNextFrame(hand[eHand].pose_handle, vr::TrackingUniverseStanding, &poseData, sizeof(poseData), vr::k_ulInvalidInputValueHandle) != vr::VRInputError_None
|| !poseData.bActive || !poseData.pose.bPoseIsValid)
{
std::cerr << "pose invalid " << error << std::endl;
}
else
{
hand[eHand].pose = ConvertSteamVRMatrixToMatrix4(poseData.pose.mDeviceToAbsoluteTracking);
}
然后我使用 glm::decompose() 来获取位置和方向(方向必须是共轭的)。然后我尝试通过将方向矩阵乘以 vec4(0,0,1,0) 从中获得正向,但结果向量不正确。我的逻辑有问题吗?