Motion Controllers jump if actor is attached to another moving actor

I have a pawn with motion controller components and attached meshes. Pawn is attached to another actor with movement component (or an actor with manually updated transform in a Tick function, doesn’t matter). As a result, I have jumping and shaking hand meshes. GetHandPositionAndOrientation(…) returns correct transform, MyMotionControllerComponent->GetComponentTransform() returns correct data too.

I suspect it’s caused by late update feature.

The video: - YouTube

Hello YuriNK,

I have a few questions for you that will help narrow down what issue it is that you are experiencing.

Quick questions:

  1. Can you reproduce this issue in a clean project?
  2. If so, could you provide a detailed list of steps to reproduce this issue on our end?
  3. Could you provide screen shots of any blueprints that may be involved with this issue?

Yes, I can reproduce it.

  1. Create a project based on VR Template and open map ‘MotionControllerMap’.

  2. Add simple blueprint actor with projectile movement, turn off gravity and and set some velocity. As large velocity, as the problem is more noticable. I used here (5000, 0, 0).

  3. Add this actor to the map and in Level BeginPlay attach PlayerPawn to the actor.

Done. Launch and try to rotate and move controllers.

I don’t use VR Template in my project, so it’s not a specific problem.

It’s definitly caused by late update, because with DisableLowLatencyUpdate=true on MonionControllerComponent the issue disappears. So I’m going to continue with this flag turned on, but IMO it’s a bug anyway.

Hello YuriNK,

I was unable to reproduce this issue on our end. Would it be possible for you to provide a sample project that showcases the issue that you are having so that I could take a closer look?

Here: Google Drive: Sign-in
On a smaller speed it looks like a tracking issue.

After taking a look at the project provided I was able to reproduce the issue on our end. I have written up a report and I have submitted it to the developers for further consideration. I have also provided a link to the public tracker. Please feel free to use the provided link for future updates. Thank you for your time and information.

Link: Unreal Engine Issues and Bug Tracker (UE-37811)

Make it a great day

Any luck on a solution or work around for this? I am still having this exact same issue in ue4 15.1.

Turn on ‘Disable Low Latency Update’ flag in Motion Controller settings.

I tried the Disable Low Latency Update flag, still getting dropped frames. I’m literally pulling my hair out over this problem. I can’t attach anything to a motion controller without having issues. I have tried it on two computers thinking maybe my laptop with a 1060 was too weak. I am trying to track full keyboard with 88 keys that are receiving MIDI data from a digital keyboard. I can put the keyboard in the scene without tracking it with no issues. The moment I try to attach it to a keyboard I get motion controller component lag and jitters. I have wasted several month moving my project into Unreal and getting everything functional. I also am trying to integrate a Perception Neuron MoCap Suit. The Suit has no lag when not attached to a motion controller, but I imagine it is going to suffer from the same problem. I’m trying to complete this so that I can finish my thesis. I am beginning to believe that I am never going to pull this off. I have even tried attaching it to a motion controller then detaching it after .2 seconds just so that the model will be in the right place, but it still introduces a huge amount of lag into my game, which is causing dropped frames. Any insight or ideas would be greatly appreciated. I currently am using actors for the individual keys, the only other possible solution I can think of would be to rig the keyboard and bring it in as one skeletal mesh.

I believe it’s not a bug and you’re just doing something wrong. What are you trying to attach to controllers?

I am trying to attach a actor to a motion controller that has 88 keys inside that are linked to input coming from the MIDI plugin which is attached to a Casio MIDI keyboard. It has no issues what so ever in the scene until I attach it to a motion controller. Why can an actor not be attached to a motion controller it makes no sense as to why this wouldn’t work. If not how can I build a complex object that can be motion tracked and interacted with. Its not even a controller its a Tracker.

As a more basic test even attaching the motion controller model from the steam vr resource folder suffers from the same issue. The only thing I am using the Tracker to do is to establish the location of the real world keyboard so that it can align with the cg model. The keyboards performs perfect, but the Motion Controller Tracking is almost useless its so bad.

I don’t have any problems with attaching different simple and complicated actors to motion controllers, so I’m sure it’s not a bug.

Its not even a controller its a Tracker.

Do you use 4.17? In 4.16 Motion controller component couldn’t detect Trackers properly. And how many Trackers do you use by the way?

And why to use Perception Neuron if you already have Trackers? :slight_smile:

Im in 4.15 I have the tracker converted so that UE4 reads is as a motion controller. I am using the tracker to establish the position of the musical instrument. I am planning to use 2 more trackers on the perception neuron suit as an alternative to haptic gloves since I can’t get my hands on a pair. The Perception Neuron suit sends full body tracking bvh data but needs a tracker to establish its world space location. I am working on getting some screen shots and a video clip so I can post what I am dealing with, and maybe its just something stupid I am doing. I really appreciate the help and the insight there is no one I can go to at my school that even begins to understand this issue. do you think I should try moving into 4.16 or 4.17? Let me get these post together so you can have a proper look at what I am doing.

I think it cound be a problem of components hierarchy or Unreal version. Have you tried to update location of your virtual piano manually in tick event instead of using motion controller component? You can try it before you try to update to 4.17 (update to 4.16 would be useless). At first use GetValidTrackedDeviceIds(type - Other) to find tracker’s Id, then (in tick) use GetTrackedDevicePositionAndOrientation → MakeTransforrm (OutPosition, Out Orientation) → ComposeTransforms (Player Pawn Transform). It gives a transform of Tracker in world space/ You can use in SetActorTransform for your piano actor.

Wait, I was wrong. I used GetValidTrackedDeviceIds with type == Invalid to get Tracker Ids in 4.16. It was changed to Other in 4.17. Don’t know about 4.15. So start with Invalid and check another options if function doesn’t return proper value.

Im working on taking screen shots of my blueprints and getting you a screen capture of what I currently have. The problem make stick out like a sore thumb to you, at least i am hoping it will. I should have them posted in just a few mins. I have played around with GetTrackedDevicePositionandOrientation and had similar results with real time tracking, but it may actually work for simply establishing the position of the keyboard. Thanks for all the help this is definitely giving me some new ideas for solutions to try.

Trackers are tracked very smoothly in my projects. If it’s bad for you event with GetTrackedDevicePositionandOrientation, i d_o recommend to update to 4.17.