Download

Attaching component to a hand controller finger (tip) ?

I am pretty new to developing in Unreal, moving from mostly art and animation background. I am currently working on a project where I’d like to be able to press UI buttons with my virtual hands. here is my problem:

How can I attach a collision sphere component to a tip of index finger? (I am using Valve Index controllers)

I tried sockets (both on component spawn and on tick with BP), tried pulling pose and transform data - no idea where I am going wrong about it, but just can’t so figure out where does that info live.

At the very basic level I want to get the location of right index finger tip, in either local or world space. Someone, please help, I’ve been at it for 3 days now with no results. (and yes, I googled and googled, watched ton of tutorials, found nothing that matched my problem).

Adding a socket to the hand mesh should be the simplest way. Make sure the socket is parented to one of the index finger bones.

Calling GetSocketLocation on the hand mesh should get you the world-space position.

It’s also possible to directly add the component in the motion controller Blueprint. Just add a component on the hand mesh and set the Parent Socket in the details panel.

There is a Widget Interaction Component made just for this purpose. Setting the interaction distance to be as long as the finger tip, and clicking the mouse button on the OnHoveredWidgetChanged event should let you use menus with the finger.

@Rectus_SA thank you so much for your reply. I am gonna try these right away.

I wonder if I am messing something up, since I am working off the demo project from Valve Index GitHub, and in all my blueprints I am seeing the Epic skeletal hand, instead of the index glove, when inside the BP.

I guess it’s likely I will keep coming back with questions like a bad penny, but rest assured I will try to exhaust options on my end before the next request

…10 minutes later…

@Rectus_SA IT WORKS!
I now understand what I was doing wrong. The Epic BP_MotionController had the default Mannequin hand in it and I kept using its bone structure as the reference. I was afraid of swapping it for another (Valve) mesh not to break anything - but apparently, it was all safe. What helped me the most was your THIRD screenshot, where I noticed you had a SK_Glove in your BP_MotionController

Oh, what a relief. I can now move forward with the project.

Once again, huge thanks!