Animating Your Avatar In VR

This is amazing, I love the usage of IKControl although I think Roblox should with this and layered clothing make mesh deformation avatars so it doesn’t look as silly as it now does, This is very interesting to see and I’m honestly interested in what it will get to in later versions of Roblox GOOD ONE!

2 Likes

This should’ve always been a thing! When I did this for a game myself using IKControls, I wasn’t able to get them to replicate to other clients which was very unfortunate. This will be incredibly helpful next time I add in VR support to a game!

1 Like

Finally! Native Roblox VR hand and head tracking has been one of those features that was really weird they didn’t already have, especially with them advertising the ability to play almost any game with VR. I can only see a bunch of cool stuff coming with the new ease that a native service API for this will bring!

No, but you can pretty easily add it: Is it possible to put cancollide true for players legs and arms? - #7 by General_Scripter

Update - Nexus VR Character Model has a preview for supporting this. However, review the limitations before using it in a game. Due to issues with the initial release of AvatarGestures and missing features in Nexus VR Character Model, this is not ready for use in live games.

I actually had this already enabled in Nexus VR Character Model, but Roblox’s default camera doesn’t care about it. Immersive roller coaster and some vehicle experiences would need to implement this themselves. :pensive:

It’s out of scope of the announcement, but I’d love Roblox to support VRTiltAndRollEnabled in the default Classic camera. While not rotating the camera is good to prevent motion sickness, your roller coaster/plane/spaceship doing a barrel roll while you are folding your neck into your body is really immersion-breaking.

6 Likes

So strange it took this long for them to implement something like this but I’m glad it’s a thing now.

Does this work on custom rigs? It makes sense if it doesn’t but it’d be cool

Perfect opportunity to buy a oculus quest 2 for development

The Right-click insert didn’t work for me as described here. I had to go to Model tab, then Advanced button then… Service, then insert service window is shown.

Maybe I’m not right clicking in the right spot.

Nope, pretty sure they fixed that awhile ago.

Got a chance to try this out. Looks pretty cool, and I actually prefer that the lower half of your body isn’t affected, instead retaining your equipped avatar animations.

Few issues:

  • If I am looking forwards and then switch to third-person, my character immediately begins to run backwards on its own, with arms outstretched and a backwards head, until I switch back to first-person. If I am looking straight down and then switch to third-person, this issue does not happen. This only seems to happen with AvatarGestures enabled. (occurs at 0:57 and 1:32)

  • The camera clips into my torso when I jump. (occurs at 0:11 and 1:23)

(Sorry for the bad quality, had to compress the file a lot.)

1 Like

I am SO glad this came out. I was looking into having to try to make custom scripts to support VR hands myself just last week, and it’s a relief to not have to worry about it now.

This is amazing, thank you for this!

In R6 you can see your body in first-person, but you can’t animate your arms/head. I don’t expect them to add full R6 support anyway.

Alternatively you could use a bundle like this

1 Like

There’s been plugins for that like Nexus VR for like the longest lol

Go to Model > Service > VR Service and done

I found this bug that occurred today. None of my headsets are connected (RIFT S/QUEST 3).
Every time I join a game this happens, no matter VR mode is turned off

1 Like

This is amazing cant wait to try it out :star_struck:

pretty sure you can do this yourself with some api maybe opentrack?

I found a fix for this

game.UserInputService.InputBegan:Connect(function(Input)
	if Input.KeyCode == Enum.KeyCode.ButtonX then
		local HumanoidRootPart = game.Players.LocalPlayer.Character.HumanoidRootPart
		HumanoidRootPart.CFrame = CFrame.new(0, 0, -10) * HumanoidRootPart.CFrame
		workspace.CurrentCamera.CFrame = CFrame.new(0, 0, -10) * HumanoidRootPart.CFrame
	end
end)

all you have to do is teleport the camera with the player and it’s all good