Driving a vehicle with steamvr hands, best approach?

I’m having a hard time figuring this out and I couldn’t find much discussion on so hopefully this will help others. I would like to have a vehicle that is operated mainly with the motion controllers interacting with the inside of the vehicle itself (player must move the hand models and push buttons, flip switches, or grab handles to move the vehicle). Let’s also say that the vr chaperone area will be moved to other vehicles at some point and the variables of the vehicle will change (speed, steering, additional controls for the vehicle). I’m thinking that a player controller blueprint wouldn’t be used for this? Initially I thought that I would be possessing the vehicle, but if most of the controls are physically on the vehicle and need to be manually operated by the Pawn that the player is already possessing then what would be the best approach? All the tutorials out there are about possessing a pawn and converting your controller inputs directly to actions, this is a bit different and possibly new which would explain my difficulty in finding material on the subject. If anyone knows of any material you have seen on the subject or have the knowledge I would love to hear it.

Additionally I’m hoping this is doable with blueprints!

I have the same interest. Any opinion ?

As far as I know, you could just pass all inputs from your Motion Controller Pawn to vehicle blueprint via interfaces. It works, I did something like that with recreating a control panel for some industrial machinery (it had analog sticks), so I just passed SteamVR TouchPad axis values to drive animation for the sticks (and pass that further to maniplate machinery). I’m sure, that this “layered cake” of multiple interface calls could be a serious CPU bottleneck down the road, but for now it works fine.

To determine what stick to manipulate, I’ve used a simple overlap detection between collision sphere placed around touchpad on MotionController model, and sphere collision on analog stick of the virtual control panel. And I’m still haven’t implemented two controller input. Kinda have a vague idea, but haven’t thought it out yet.

But be cautious! Trying to detect intersections between two small collisions, that move erraticaly(hands aren’t precise tool afterall) may result in severe crash/error. When there is ambiguity in detecting collision, engine might think it’s dealing with infinite loop and game will crash with said message.

Another thing that I’m struggling with right now, is how to make fast reacting and naturally moving rotating object. Like a steering wheel in your case, or a crank in mine. I just can’t wrap my head around math for this thing. The best I’ve accomplished was sluggish movement, that infinitely slows down as it approaches 90 degrees. It approaches that blasted gimbal lock it seems, but never reaches it.