My setup is pretty straightforward: I have a WidgetComponent, which I am drawing on a StereoLayer by accessing the RenderTarget and setting that as the Texture on the Stereo Layer (on Tick). (I have set LiveTexture to true).
The bug: The first time I do this, it works. Now, I have a simple meter to countdown time in my widget. That just does not update on the Stereo Layer. It works fine on the WidgetComponent, but the StereoLayerComponent just doesn’t update.
Instead, create a widget component in your pawn. Search and locate the widget material, then click on the magnifying glass icon to find it in the content browser. The selected material will be a material instance, so just locate the original material, make a copy of it, and move the copy to your project folder.
Next, open this newly copied material, select the main material node and in the properties, locate and toggle off the “Depth Sorting” property (I forgot the exact name, I’m not at my desk currently). Basically it’s a property which tells materials to not obey the depth sorting of the engine and “appear” on top of everything. That’s it! Now apply this material in the material slot of your widget component. Voila!
Just a word of caution: Do NOT use this on a very heavy/complicated HUD with lots of visual elements. It will be uncomfortable.
I found a solution that could solve this problem , Just call stereolayer`s settexure node in tick function once .
Widget render target has not be rendered before tick
The Vive uses different compression format, so you need to manually set that for it to work.
Also the widget needs to be onscreen, otherwise it’s not updated on default. In the blueprint actor, click the widget component and there is a tickbox for “Tick when offscreen”. It’s a bit hard to notice because for some reason it’s in the Animation subcategory and not the User interface, with the rest of the widget related settings.