I am writing this thread in response to my experience with Oculus support. Oculus support has an extremely quick first line support, however they did not have the tools to deal with this issue, and the second tier seem to go through this dance of "please provide pictures of the issue", which seems like a waste of time. I am writing this thread both to let Oculus know their routines on this issue should be improved, and to help those who anxiously await the support they want.
Fear not! Most of the time, the Rift isn't faulty!
There is a calibration tool for the IMU (Inertia Measuring Unit - it's the part that measures how the Rift is rotated, tilted etc) that I used with great success. I want to link to the guide I used, and point out some important parts about this:
1) YOU'RE DOING THIS AT YOUR OWN RISK This is important. It seems like Oculus do want some sort of control of who uses the tool since it's not that easy to get. It would be pretty easy for the Oculus team to pack this into a nice GUI with steps of how to perform a recalibration, so since they haven't done that, it could indicate that in some cases, this might not be the right thing to do. Without the support team saying "yes, you can run this tool", you should not assume that this will fix your problem, nor be certain that this won't make things worse. At worst, it can be harmful to use this tool, so be cautious when using it, and do this at your own risk
2) This is specifically for issues where the horizon line is slanted or tilted. I think the best way to notice this is just to put on the HMD, pull up a grid view (like the universal menu). If you notice it here, it most likely is there. This rules out the surface you put it down on being slanted in itself, etc. This is never due to a slanted sensor, as the sensor knows what is up and down.
It is very important that the calibration is run when the Rift has been completely disconnected for hours and hours. Leave it alone overnight. This is because the tool calibrates the IMU at all temperatures, since temperature affects the IMU. It runs for ten minutes so it can go from cold to hot and calibrate all the steps along the way. It is also important that it is placed on the most stable surface you can find.
This fixed my problem. I hope this can help others. Remember that this might be the right cause of action. Contact Oculus support if you are experiencing this issue, perhaps even say that you do intend to use the calibration tool, and ask if it's the right thing to do. I hope this post can make Oculus' response to this issue be more efficient, as it is such a well-known issue that there should be a standardized response.
Thanks for this (interesting) tip but from reading this I wouldn't want to touch this tool with a stick. Didn't need calibration EVER until after 1.12. The problem can not be wrong calibration, why would it all-of-a-sudden become uncalibrated, randomly at odd times. So the actual problem must be something else. AND OF COURSE it is software, not a hardware issue.
I have the tilted horizon issue with 1.12, and re-calibrating the IMU does not help it at all. From my understanding the IMU is more about acceleration and tracking movements and not so much determining what level is.
Can any oculus dev or someone with the software knowledge just tell us what determines floor level? It'd be so much easier to fix this issue if we knew what the software was using to determine this. Same with floor height. It's not like another company is itching to get their hands on that info, especially since everyone is moving towards using the lighthouses as their tracking method of choice.
I too have a slight tilt in floor level, but mine is tilted forward, so it feels like I'm standing on a very slight downward slope. I've noticed after moving my sensors around to different places, the slope will change directions and/or gradients (gradient, grade? I forgot xD).
If we knew this info, I bet it would also save Oculus support a lot of trouble.
The floor height position is set when you calibrate the headset during the setup. It asks how tall you are, then it has you stand in place and press a button. The camera can see how high your head is, and it knows the height you entered, so it can figure out at what height the floor is at (by simply subtracting your inputted height from the visible position seen by the sensors). Also, with this same information, it can tell the position of each sensor.
The levelness of the floor is a little more complex. This is determined primarily by the gravity vectors from the accelerometers as well as combining information from other sensor values. An un-level floor could mean that the IMU was calibrated poorly for your location (things like room temperature can adversely affect the readings) or it could be some issue with the IMU hardware itself. There could also be a software component to it. I've heard of people reinstalling the software and it resolving the issue, but I have not seen what the actual issue is specifically.
I kind-of assumed the height was determined that way, but I had hoped that there were other factors that checked the positioning to give a better, more solid value for height. I fear that only using the HMD position during setup is not a steady enough constant for something such as height (such as, what if your HMD is slightly tilted when running the height setup, does this give different values for floor height than if the HMD were completely level, even if in the exact same vertical and horizontal positioning in the playspace? I can't imagine that everyone when wearing the HMD has it impeccably level each time, or maybe I'm just a clutz? lol. Also, if tilted just slightly during setup, does this then change the way the software recalculates height during gameplay, causing perhaps more jumps than if the HMD were completely level during setup?)
As for floor-levelness, could you speak on what sensor values are being used? It is interesting to note that for my setup, as I walk around my playspace in Oculus Home, the floor levelness "can" change depending on what direction I look (not immediate, have to stare in a direction for a few seconds and then a recalc can happen) and if sensors are being occluded. ("Can" because sometimes this change is hard to replicate). Sensor placement has indeed had an effect on floor levelness in the past, at least for me.
Random P.S. If there was any way to utilize the Rockband VR controller attachment during the sensor setup to correctly determine floor height (place it in middle of playspace, place it in 4 different positions on the floor, whatever it takes), that would be amazing. I would think having a LED or controller actually on the floor would be a much more effective way to setup floor height/floor levelness. Please correct me if I'm wrong though
I was kind of oversimplifying things and I did not work on the code myself. What I said is a general idea, but there is a lot of complex math that goes into it I probably don't understand. For example, having the headset slightly tilted during setup should not be any problem (it's smart enough to know the orientation of the device and account for that).
@cybereality An interesting thing I've noticed, the IPD adjustment screen with the "+" is perfectly level... I came up with this test where you get that "+" to look perfectly level, then quickly hit the back button and use the top of the Robo Ready ad in Oculus Home as a horizon, it's definitely off by a few degrees. (left side is lower than the right)
This makes me think it's a software issue and not the HMD itself (since the "+" is perfectly level, and I would imagine that screen is not using the cameras)
Yeah, anything is possible. At this point the best thing would be to create a support ticket. This will help us track the reports coming in better, and maybe see a connection if we can get multiple people with the same issue. https://support.oculus.com/