I am working on a HTC/Vive VR game in which the player needs to be informed frequently about the state of the game. So embedding UI elements within the game environment seemed not a good idea.
I would like to create a 3D heads up display for this purpose. Just like the master chief’s visor in Halo games…
I’ve tried many things for this purpose but failed.
First I’ve tried this using UWidgetComponent. I attached a widget component to the player’s HMD controlled camera. This does not work because widget component does not provide a way of displaying high resolution texts on relatively small scale meshes. The only way I could find to fit a text element inside a small quad is to reduce the font of the text. But if I do this then I get really bad looking, unreadable, low resolution texts.
If I make a bigger quad that is rendered further away from the camera then I can partially solve this problem. However this time the hud intersects with other game geometry as the widget component itself is a rendered actor in the scene… And from what I understand there is no way to enforce that the widget component is rendered last (overlayed on the image) in stereo.
Also the above mentioned method looks more like a hack then a proper implementation.
Second, I’ve tried my luck with the UStereoLayerComponent. I succeeded in rendering the hud widget to the render texture that is set to the stereo layer but no matter what I do the HUD is never visible on the screen.
I’ve come up with several posts that says UStereoLayerComponent is working only for Oculus/Rift at the moment. Is that true?
Is there really no way of implementing a HUD for HTC/Vive with high resolution UI elements without diving deep into the Unreal Engine code?
If there is a way can somebody explain how this can be done? With an example perhaps…