VTK / Open VR Issue

I am trying to use VTK Open VR to send my result files to HTC Vive Pro, the VR is working well for small result files. But when the result file is large (with more nodes and meshes) , the result rendering can not be shown synchronously on the computer screen. If the synchronous display on computer screen is turned on, the VR glass will only see blinking images.

I guess the reason is that the rendering for computer screen and the VR glass is done in single thread. When the file size is large, computer takes too long time to rendering the image on screen, so the rendering in VR glasses is blocked.

Do anyone has any suggestions how this issue can be solved?

I guess the reason is that the rendering for computer screen and the VR glass is done in single thread.

Not much rendering work is done on the CPU in the main thread, so probably you could not improve much by trying to off-load work to background threads. Some low-level rendering tasks are already done in worker threads in the background (by NVidia’s threaded optimization feature) but most processing is done on the GPU. Maybe you do some processing/pipeline updates during rendering?

If you see blinking images (SteamVR darkens the image) then it means that rendering is really slow (exceeds the threshold of a second or so), so you need to render much less - turn off simultaneous desktop rendering, simplify the displayed meshes, etc. - or use a more capable graphics card.

If rendering just somewhat lags and causes motion sickness then you may increase the render window’s update rate when you detect that the headset is moving. We implemented this in 3D Slicer’s virtual reality extension here and we found that it greatly improves volume rendering of large models on virtual reality laptops (that have relatively weak GPU). While the head is moving, it is not noticeable that rendering is slightly lower quality, and when head stops then you get a full-quality image. If the head moves very slowly (there is an adjustable sensitivity) then we still render in full quality and so there is a lag, but we found that this lag does not make you sick (because there is no quick motion).