Not sure if you guys need it any longer but I’ve been making updates on my side and shelving them here 2980534. Working with Valve on some UV issues at the moment
Hi Chad and ThreeOneZero, if you don’t mind I would like to join this discussion late. We are very much interested in getting this feature merged in for our release as well.
I have tried to use OpenVR overlays in the past, however I never had any success in having things actually show up on the HMD. I was excited to merge in Chad’s changelist into our 4.11 branch, but unfortunately, I still am not able to have anything show up at all. Omar, you mention “Texture is set to UserInterface (RGBA)”. Could you elaborate on that, do you mean you set the Texture Group to UI and/or the Compression Settings to UserInterface2D (RGBA)? I have done modified those settings and left FLayerDesc::Transform at identity, but I do not have an overlay texture all across the screen like Omar is describing (none of the other FLayerDesc properties other than Texture is modified either). Have either of you made any progress or can think of any gotchas that I am missing?
Somewhat on topic, is there any plan on Epic’s side to expose vr::IVRCompositor::FadeToColor and vr::IVRCompositor::SetSkyboxOverride as part of IStereoLayers interface? As far as I know there is no equivalent functionality on Oculus, and if that is a problem, could these functions be still exposed in the future through another generic interface?
Hi Chad,
Thanks a lot for your quick reply! I will be merging it in later today, hopefully everything works out.
Hi Chad,
I was able to successfully integrate the SteamVR stereo layers. I believe I have found one issue: in TransformToSteamSpace, the rotation is converted by simply swapping the axii:
FRotator OutRot(InRot.Yaw, -InRot.Roll, -InRot.Pitch);
However, as far as I understand, this does not take into account rotation axis multiplication order, so in the case where I had both yaw and roll rotations, I was getting incorrect results. The fix for me seems to be:
FTransform RotationTransform = FTransform(FRotator(0, -InRot.Roll, 0)) * FTransform(FRotator(0, 0, -InRot.Pitch)) * FTransform(FRotator(InRot.Yaw, 0, 0));
Out = FSteamVRHMD::ToHmdMatrix34((RotationTransform * FTransform(FQuat::Identity, OutPos, OutScale)).ToMatrixNoScale());
Does this make sense to you?
Additionally, is there a reason why case ELayerType::WorldLocked: implementation has not been implemented?
Thanks for your help.
Thanks for the update, it definitely makes sense. As for WorldLocked not being implemented…its just not done yet. Should ship complete in 4.13