Hi, i am doing a medical treament project, if a patient have some eye problem, and i want to stimulate his eye and make them become better, now i have two camera in my project(Vive VR), i want to let his bad eye receive some medical graphic information first, and the good eye receive information quite a few later, like 8 ms, so that this can be a way to strengthen training his bad eye and make it become better. i think this problem for several days and try to ask some friend nearby but i dont have a good solution yet, So any help that can point the way out would be appreciated !!!
The Vive hardware itself refreshes its eyes at 90Hz, so at best you can only delay in increments of 11.1ms (a single frame). As far as I know they are only visible to the GPU as a single screen, so if you needed that level of accuracy in the timing then you’d have to modify the actual hardware–well outside the realm of Unity!
If 11ms is accurate enough, you can simply delay rendering your object(s) by one frame. The easiest way to do this is:
- Create two cameras, one for each eye, and set their layer masks to render the appropriate objects. In the VR settings for that camera, make sure they are only rendering to that particular eye.
- Turn one camera on, wait a frame, then turn the next camera on. You could use a coroutine or just some code in the regular Update().
These cameras can render in addition to the Main camera if you have an environment or some background imagery you want to always render for both eyes.