VR IK Body - Support

I’ll dig the problem and post update early next week.

Try VRIKBody::LockShouldersRotation = true and/or VRIKBody::EnableTorsoTwist = false.

This works, but I also figured out that recalibrating helps… If I delete the calibration save and do a new one, then add actor rotation works. Once I mess with a setting (like enable torso twisting), rotating will be disabled until I recalibrate again, even if I undo the changes to settings. (only the head and arms rotate, the body/torso is locked in rotation)

Anyway it basically works now, so thanks.

I do have one last issue to bother you with though… In the character I am using, his waist is getting coiled (centers on one area in the center). Once I resolve this issue then it’ll work 100% perfect :slight_smile:

Is there anything I can do here to fix this?

  1. Do you use 4.17 or 4.18 version? I thought bugs like this are fixed, but it’s posible that 4.17 version wan’t updated.
  2. Can you show spine bones orienation of the skeleton (screenshot in skeletal mesh editor)?

About rotation: I’m just going to add it in the demo project.

  1. I should be on 4.18 although I did start 4.17 and then update… maybe I’ll start fresh and see if the updates fix my issues.
  2. Actually looks like this is the issue… the spine_01 and spine_02 bones are for some reason set to -180 yaw to look proper. So the issue is the skeleton not your tool.

Is there an easy way I can fix that with your tool rather than contacting the artist to get the bones flipped? I guess I can rotate the bones manually in the animbp but might be inefficient.

Edit: adding a rotation to the bones in the animbp fixed this issue. I’ll see if I can contact the artist to avoid this workaround. Thanks.

Thanks for the help btw. The tool is great :slight_smile:

The plugin has to recoginze bones orientation. I’ll dig it too.

Yeah, no, won’t work. Just reduced physics body size for upper arms and torso in the mannequin. It’s way better, not perfect !)
I think it’s more about setting player VR camera as a root for everything else. Body should adapt more to it more than the other way. Especialy for shoulders

I’m not sure if I fully understand what you mean. Can you make a screenshots or small video?

There are two functions affecting shoulders. First: each shoulder gets small (up to 30 degrees) offset in a direction of motion controller. Hand is moving forward → shoulder is rotating forward. This function has bugs in the current release version. LockShouldersRotation=false can turn it off. Second: a whole ribcage (including shoulders) rotates when one of motion controllers is too far. The second algorithm can be turned off by EnableTorsoTwist flag. I also added some modifications, so it should work better in the next update (without wrong rotations when both controllers are close enough). I’m going to upload this update later this week.

  1. Rotation. I fixed ResetTorso() function, it’ll work as expected after the next update (later this week).

Rotation function:

  1. Spine twist. I tried a few different skeletons and can’t recreate this bug :frowning:

Don’t worry about this issue, it seems to just be the skeletons I’m using. I fixed i with a tweak to the animbp and artist will fix for good. Thanks though!

I do have one last question. I converted the PlayerPawnNew to a character as I want to use a character as the base so I have movement collision (is there a better way?)

This mostly works but it seems to get confused between the root of the Character and the root of the VR Camera. It seems one spot is getting one and another is getting the other. At least, the results indicate such…

If i make the capsule have no height or width, so camera and actor are on same vector, works fine. If I increase the capsule size though, then the camera gets raised by the capsule raising you from the ground.

If you raise the camera though in the character, or lower it, it messes with the IK a lot.

I’ll look and see if I can find where this is happening but it might take some editing.

Ideally if it wasn’t too much trouble, you could duplicate PlayerPawnNew, set it’s base class to a character, and then set the locomotion function to add movement input instead of move the actor. Then you’ll be where I am. As you’ll see if you reduce capsule scale to 0 half height and width, works ok, except the collision box is way too small (you will walk under tables and next to walls etc).

I’m sure there’s a way to tweak this. Might even already exist. I just couldn’t find the right spot to edit.

Thanks again for the help though it’s appreciated.

There is new multiplayer pawn in the updated demo project, it’s a child of Character class. You can use it as an example.

Update 1.0.5 is live


Bugfix: shoulders rotation
Bugfix: unwanted torso rotations
Bugfix: VRIKBody::ResetTorso()
And more minor fixes.

Project (4.18 only)

Added: more locomotion options
Added: artificial rotation (left trackpad)
Added: new multiplayer pawn blueprint.


All of my pawns multiplayer pawns are teleported to 0.0.0 on first tick. How can i disable/enabled this plugin’s functionality?

Didn’t get answer so I used a little workaround. I made changes to PlayerPawn class. Surrounded Tick method logic with another IF statement where I used boolean isVRIKEnabled == true. Also in multiplayer pawn tick method i added IsVRIKEnabled before logic.

Multiplayer map wan’t properly tested and can has some bugs, because I don’t have a second headset right now, But replication in the plugin itself works.
Demo Project contains two multiplayer pawns: BP_MultiplayerPawnNew and BP_MultiplayerPawn. If default pawn doesn’t work, you can try to switch to another one.

Nice work! When using the Oculus Rift the avatar/model in the demo map feels about 10-20% too large and the wrist locations feel too far extended into the hands. What would be the easiest way to scale/change the skeleton to avatar mapping? If I get back around to this and have time I’ll dig in more but thought you may have already worked around this.Thanks!

  1. Are you using 4.18 version? Proper scaling was added it this version only. For experiment you also can try to recalibrate you avatar for artificially smaller body. Write me if you see noticable scale change.
  2. Hands have default offset value for Vive Controllers. For Oculus Touch set VRIKBody::LeftPalmOffset and VRIKBody::RightPalmOffset transforms to zeros.

Hi! The plugin is awesome, nice work!! We are trying to use it with our own skeleton(the skeleton has the same bones as the default by Unreal) but when we calibrate it always stays on T Pose and rotates with our movement. We have followed your video tutorial and done all the steps to configure the pawn. We are using 4.17 versions of the engine. Can you tell us if we are missing ?

I send captures of our setup.

Thanks in advance.

My first guess is that the problem’s related to the fact theat you have motion controllers in an independent actors (i’m not sure, though). Try to change VRIKBody input mode to Direct VR input and use VRIKBody::ActivateInput instead of VRIKBody::Initialize. Could you also say if skeletal mesh follow player’s rotation and location or just rotation after calibration?

We have tried also with the Input mode in Direct VR and using VRIKBody::ActivateInput and the result is the same. The Skeletal mesh follows rotation and location after the calibration

Hmm, it must be something simple. Can you show your skeleton bones hierarchy and output log?