How to implement a HUD using HTC/Vive?

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…

I’ve answered my own question in another thread.

You can check: