VR Updates: OpenXR, Height Scaling and Floor Tracking

Hi Developers,

We have some important updates to VR support including:

  • OpenXR support (replaces OpenVR and OculusVR)
  • Height Scaling
  • Floor Tracking


We want to make Roblox in VR as immersive as possible so that players feel like they are grounded and positioned properly within every virtual world. Our goal is to align the virtual space as closely as possible with the player’s space in the real world. This includes keeping the floor at the same location in both the virtual and real world space.

With the latest VR release, the player’s view of the virtual world will automatically scale so that your avatar feels human-sized and roughly represents your real world size. We have also introduced new APIs to allow developers to track the location of the floor if a device provides it.

In addition, with this release we are moving to OpenXR, providing a solution for developers to easily support every current and future VR headset that Roblox officially supports.

OpenXR Backend

As part of our effort to modernize and unify Roblox VR, we are switching the backend for existing PC-VR and all VR headsets going forward to use the OpenXR API. Currently, this includes support for the Oculus Rift and Rift S, the Meta Quest 2 and Pro (connected to a PC through a link cable/airlink) as well as the Valve Index and HTC Vive using Steam VR. Please follow the new help page to enable OpenXR in either the Oculus App or Steam VR.

Height Scaling & Floor Tracking

Height scaling and floor tracking depend on a valid room-scale setup. If you experience incorrect scaling when you are testing, please recalibrate and re-center your headset.


We know players love changing their avatars and they don’t necessarily match or line up well with their real-life bodies. Experiencing a view where your position in the world feels like your real legs are stuck in the ground or you are floating high up in the air can break the immersion of the experience.

With VRService.AutomaticScaling = Enum.VRScaling.World, Camera.Headscale set, it will automatically adjust the size of the world so that your avatar’s size and view of the world adjusts to your real world height. For example, if your avatar is giant-sized in the world, you will see the world as if you are a giant. If you’d prefer to manage scaling yourself, you can also set VRService.AutomaticScaling = Enum.VRScaling.Off.

Here’s a video of a user playing as a baby sparrow in Feather Family with scaling off (left) and scaling on (right). Notice the difference in size between the controllers and the objects and how close the user’s head is to the floor.


We have added a new UserCFrame API that allows developers to get the location of the center of the floor in a play area. This API can be used just like the other UserCFrame Enums. This example will place a part at the floor location.

local VRService = game:GetService("VRService")

local floorOffset = VRService:GetUserCFrame(Enum.UserCFrame.Floor)
floorOffset = floorOffset.Rotation + floorOffset.Position * workspace.CurrentCamera.HeadScale
part.CFrame = workspace.CurrentCamera.CFrame * floorOffset 

This API can be used to get the floor’s height as well as anchor parts to a location in the real world that won’t change even through re-center calls.


As always, we would love to hear any feedback you may have on the new features and VR in general, including any issues you run into or missing capabilities.

Thank you.


This topic was automatically opened after 11 minutes.

Speaking of VR, are there plans on porting Roblox to Apple Vision Pro?


Let’s gooo!

I have so many great things I can apply this to, I’m going to go try and bunch of them and get back to y’all about it!


This looks great!
I am still waiting for Roblox to come to the Quest Store though… °-°

Edit: We have been blessed!


Hopefully we see Roblox on the Meta Quest store soon as being forced to use a PC defeats the purpose of portability. With the new perf improvements coming to Meta headsets with v55, now is better than ever to officially support the platform.


I’m very new to Roblox Studio development, so pardon me if my question is a little silly. But how does Roblox know where the center of a player’s room is? Is this something that Roblox figures out by it’s self using back end tools, or must the player define they’re room they’re self? I can understand how a part can be anchored to a physical location in the world, but this says:

So does this imply that Roblox knows what size and shape a play area is before hand?


Your Oculus or SteamVR headset has a roomscale setup option where you mark the play area.
We just provide access to that information.


Will anything be planned for full-body tracking support for higher end headsets?

I know the vision is to push it to standalone headsets like the quest 2, but I feel as if people with higher end headsets (like me) have a bit more trouble using VR due to the lack of utilization of higher end features and due to the controller layout being specifically used for oculus controllers. (I have an index)


It’s great to see Roblox expanding its support for VR. The concept of immersing myself in my favorite games is something I strongly support. I’m excited to see more from VR creators and games that truly showcase these immersive features.


Any plans for full body tracking, facial tracking, or full finger tracking via openXR?


Will Roblox eventually expand to other VR headsets such as the Apple Vision Pro and the Quest 3? It would be great to see Roblox expand to a different type of audience. I feel like the improvements in Roblox’s VR are leading up to that type of support.


This is great, but i once again want to ask on when VR-Only Experiences will be readded as it was very useful?

Something like this:

Also mentioned this in the prior announcement


I have a VR game and this is godsent. Makes my life a whole lot easier.


Always love seeing more VR updates. Additional information exposed to devs and improvements overall to scaling (especially when they are still given dev choice like this) are EXTREAMLY welcome.

I just can’t say I take the comment:

We want to make Roblox in VR as immersive as possible

Finger tracking and additional body point tracking (foot, hip, elbow, knee, shoulder) is the single most impactful thing for how immersive VR feels outside display (framerate, DPI, viewing angle). Until user’s can feel in control of their avatar in VR, immersion will never really be there and this was a market Roblox had a very early leap on.

I get that it’s tricky when considering user saftey, which in part is why I find value in VR-only games, or even restricting games with geasture and body tracking to 13+ (possibly even 17+) users. I don’t know what the best approach on this is but I very much hope to see full body and finger tracking in Roblox.


This all looks great, though it seems to have broken Steam VR at the moment.

As of the latest update, opening Roblox Studio forces Steam VR to open, and closing steam VR once opened closes Studio too, making it impossible to use Studio out of VR mode.


Seems like fun, however how would the legs render movement if you are standing still, and using the joystick to move? Will it continue to do what it normally does and just play a walking animation or will you just look like an unanimated humanoid just sliding across the floor?


Thanks for the report, a bug fix for the Steam VR launch issue is planned for next Wednesday.


While this update is amazing, we are still missing finger tracking for the index and capacitive touch on all devices. I’ve tested the rift s and index and they are both missing this feature.

TecmagDiams stated,

I get that it’s tricky when considering user saftey, which in part is why I find value in VR-only games, or even restricting games with geasture and body tracking to 13+ (possibly even 17+) users. I don’t know what the best approach on this is but I very much hope to see full body and finger tracking in Roblox.

Instead of not adding support because of moderation issues, pass the moderation to the developers themselves. For example, if the middle finger is a an issue at a specific age group then just create code that checks if the positions of all fingers are down etc etc. If SteamVR was used then SteamVR handles the finger positions anyways (in percentages I believe) so it shouldn’t be that hard to do. On the bright side, the Enum.UserCFrame.Floor manipulation is a big positive.

My only question is: If ever, when will we get full index support with finger tracking?


Are there any updates to Oculus Quest 2 support yet?