cant position hands when I move and rotate actor with roomscale (steam vr)

Hi, I spend the whole week trying to figure this out.

I set up a character, added motion controllers, and added locomotion (using thumbstick), it worked, kind of… I spend some time trying to figure out why I’m colliding with things that I shouldn’t be colliding with, after a while I discovered that it is not that easy when You have room-scale setup on steam.

so basically ma character was moving and rotating when I used thumbstick controls, but when I move around my room in real life just my camera and controllers was moving, but character was in same place all the time.

so first thing I did to solve this was removing “lock to HMD” from camera. than I try to move character using thumbstick, and rotate and move using my HMD position in room.

and it is working, this is how I did it: SHOW BLUEPRINT

as I said, it is working, (not sure if it is a right way to approach this, and if my solution is valid in a matter of efficiency)

then I try to add hand tracking, but controllers are represented also using position in room, so I tried to use HMD position to correct hand position like this: SHOW BLUEPRINT

but its position is still off, like almost there but when I touch my head, VR representation is touching my groin, left-right is almost ok, I feel that my math is bad or rotation actor effect moving controllers inside, I’m rly not sure where to start digging to make this work. please help me guys.

ps. I’m not sure why there is option to get device location and rotation for HMD (node in blueprint) but I can’t find same for controllers and have to use this MotionControllerComponent .

edit: I added debug cubes (no collision)

and seting locattion for this cubes (setting relative position seems to give better results, but still a bit off) SHOW BLUEPRINT

this is a movie with game and me moving controllers, I also put extra camera in front of character so You can see those boxes position:

](ue4debug - YouTube)


  • Red boxes are CUBE and CUBE1 (children of controllers so we see controller position)
  • Yellow in the back are CUBE2 where I try to lalculate World Location for it (from left controller)
  • Yellow glowing in front is CUBE3 where I calculate local position base on right controller