Download

VR Locomotion BP Help

Hello to everyone,
I’m quite new in the Unreal engine and any other kind of graphic tool or programming, but since i bought the HTC VIVE i decided to give a life to my creativity and I just started from zero to learn blender and the fundamental of the UE4. here after you can find an imagine of the level I’m designing:

https://s18.postimg.org/kp1k1acu1/Untitled.png

I’m arrived to the point to initiate the level within the HTC vive and be able to look around my level with the head set and import the motion controller in the scene.
What i would like to do now, with the BP commands, is try to give a locomotion to the character, what i would like to do is that when i press a button (and kept pressed) of the motion controller, the world plane position of the controller is directly transferred to the camera or the main character.
Just an example, let’s imagine i press the right bottom 1 one the right motion controller, and i keep it pressed, from now the exactly movement of my hand, X and Y position, are directly transferred to my all body and camera. so if i pull the hand to me my body advance exactly of the same amount of distance that my hand moved.

Could some one help me to translate it in BP?

Thank a lot and sorry for my poor English.

Two safety warnings:
First : do not try this while standing.
Second: keep bucket ready even if you are sitting.
I tried something like your locomotion idea, and result was not nice, luckily i could avoid all more drastic consequences.

I think your idea of translating motion controller location to new camera origin will not work. It is because when you snap camera to location of motion controller, it will have new offset relative to camera, and next tick it will snap camera to that new offset.

But you can use forward vector instead, and do small increments.
[motion controller forward vector] * [1,1,0] then normalize it. This will give you horizontal vector in direction controller is facing
Then on event tick: [new camera pawn world location] = ]camrea pawn location] + [forward vector] (from above) * distance you want travel

That is all for moving, not exactly like you wanted but something like that.

Ps. VIVE motion controllers are more comfortable if you rotate forward vector 60 degrees down (its angle between handle and forward vector). Not really needed for motion (you nullify Z values), but handy for aiming.
To rotate forward vector do this:

  • Use Rotate vector around axis node.
  • vector to rotate is: [controller forward vector]
  • angle should be 60
  • vector to rotate around is: [controller right vector]

Result will be forward vector rotated down by 60 degrees,.

Thank you for your comment.
I just would like to say that i tried this kind of locomotion metod with the game Art of Fighting and i have to admit it works quite will since i didn’t feel any kind of motion sickness. My brain got used immetitly to the idea of pull your self to move in the space and i was positivly surpresed.
Thank you for your advice.