Is Finger Collision detection posible?

Hi ;=)

So I have a project giong on where I need to controll the Hand/Fingers
Just like the lucid vr glove, but the differece here is that these glove are using the Steam VR drivers/Oculus Driver where as I am using no drivers.

(Microcontroller) ESP32 —> in to UE

I have been able to controll the hand and the fingers BUT the grabbing is the real deal here.

I watched several video on YT but they all revolve around the steam vr controllers/ some sort of VR gear. Which I don´t have.

So my target is :

  • when grabbing, the object should be grabbed and not slipp of and to finger should ideally not pretude in to the object.
    (I was playing around with friction controll but its really buggy )

  • adding object detection, like the size , so force feedback can be detected.
    (I have tried with Event to Hit but it does not work … )

I would be really happy if someone could help me out with this.
I also happy to go talk in a voice chat at discord or something.
(Note: my knowledge on UE is somewhat slimm but I try my best)

Any idea how I could approuch this problem ?

I suggest you to take a look at this.
Using line tracing from the fingers and apply IK allows you to have a good non clipping fingers setup, but in your case I would do the following:
If 3/4 fingers are hitting the target, you can force the object to a specific pose ( similar to what HL:Alyx does ) so that the fingers are clamping onto the object nicely using IK.
I would not recommend using physics for the grabbing, since is not really reliable.

@Enter_Reality
oh ok thanks I´ll try it out I´v never done IK before , especially finger IK
:sweat_smile:

So …, if I got it right by using IK to snap the fingers on the object when the fingers is getting close to an object.

Then I would see which of the fingers are snapped and then callucting the distance between the snapped finnger and hand. So then I get the force feed back from distance ?
Can things like be done?

Oh and one more thing… How to attach objects to the hands ? (set function ? )

Ik has nothing to do with anything really.

Just cast a ray from a finger that checks collision with an object and adjust the finger position to match the hit location.

The fingers have 3 bones. You can easily move them with a fabrik node or similar to solve the chain position of all the bones so it looks natural.

You can probably use control rig, so that the ray cast and fine tuning happens without you having to deal with repetition over time in BP.

1 Like

@MostHost_LA
So this is my test setup , I have atteched some arrow and some scene to the fingers and cast the lines.

in game ray cast:

view port:

event graph:

OK now I see that the line won´t follow the fingers… sad.

So the solution is to use controll rig to track the fingers to the line ?
(Never use controll rig before … hahahah . I´ll try ma best)

You can cast from a socket on each finger tip, or just the bone itself.

Howver be aware that you end up adjusting an adjusted position since this frame you calculate the position for the next frame, but it probbaly takes longer than a single frame to transition to the object.

You have to do some math magic, or wait for the position to be adjusted before running the adjustment again.

I believe control rig has this built in, though generally, don’t rely on epic made stuff, so you actually learn something :stuck_out_tongue_winking_eye:

@MostHost_LA

ohhhh come on man give me some hope to this hahhaha… I just startet started doin unreal engine like a few weeks ago T-T

So in my testing setup I have been able to stop the fingers from moving when it hits something (gabbable obj).

And let say that the grab state is now “grabed” how do I freez the Object and attach it to fingers ?

To “freeze” the object on “ObjectisGrabbed” you can simply use the AttachToComponent node using Keep Relative, so that the object will be locked in place by using the hand socket as the reference, then detach when the object is no longer grabbed.

@Enter_Reality @MostHost_LA "Keep Relative " does not work some how but " Keep world " works …

I can grab and release objects now yeeeeaaaaa

But I got another problem : When physics is aneble on grab target it wont pick up … have tried to disable physics and grav… but it still wont attach.

Any Idea ?

Maybe you changed the collision profile to get it to simulate physics and its is no longer being seen by the traces?

@MostHost_LA All of my Object and also the hand are on BlockAllDynamic since BlocKAll does not interact with anything, I cant even grab when Black all is on .

Physics works until the blue print tells it to disable it. But if I change the blue print to not disable the physics then it just physics based grabbing BUT the fingers does stop, just some times it will pick it up but mostly not

1 Like

Seems the problem is that you are moving the goal posts.
Try to disable physics as the very first thing off a hit result before any movement can happen / make sure the hand mesh cannot collide with the object and move it too.
Look into collision channels. Learn to use em…

OK now I know why you like epic so much :upside_down_face:

Ok problem found -.-

Error :
Imgur

Fixed :
Imgur

The goal of this test project/setup was just for testing purpeses like :

  • Finger controll
  • Object grabbing
  • Finger stoping when grabed

Next up:

  • Individual finger controll
  • Hand tracking : Yaw,Pitch,Roll
  • Hand tracking in 3d space
  • Glove design
    (Note : no VR gear/driver every thing based on ESP32)

Now it´s sort of going in the right direction :muscle:

But I really thank you for helping me out this far @MostHost_LA @Enter_Reality :saluting_face: as a newbee unreal is really something.

Engenieering a glove is a bit of a different situation.

I can tell you without a doubt what doesn’t work.
Rokoko gloves.

There are possible ways to tackle it and provide tactile feedback as well, but they do become cumbersome to wear.

The bigger problem and why no one does it right is manufacturing.
Every hand is different.
You can’t have something that works perfectly for everyone, so people don’t bother and go for the cheap “one size fits all” solution.

Nonetheless, best of luck with it. Update us at some point next year when you have something :grinning:

@MostHost_LA Yea I know that these kind of things are not easy.
This is suppost to my bachelor project for electronic engineering and software engineering.

So I need a somewhat challenging project to do. Which means that mass producing these glove is not an option. :sweat_smile:

I have never heard of “Rokoko gloves” before, but I´m also trying not to just copy someone works cuz I also want to learn something and I also want to know what the heck I´m doin right now.

Yea sure I can post some update on this project. Gonna an interresting one. :upside_down_face:

Project update. yup still going

Nice!
I would like to do something like this, but using flex sensors…I bought an arduino board, but I don’t have the time to really develop anything, so for me it’ll just be on the software side, rather than hardware.
Keep us updated, I really would like to see where this is going

Look into tactile feedback.

They are bulky as hell, but some guy created a 3d printed system that does the opposite of detection.

It stops your finger so you can actually feel the 3d item you picked up.

Imho since you are doing this anyway, you should combine the 2 systems so that the effect is complete for VR.

Touch an actual item, get the engine to adjust accordingly.
Grab a virtual item, get the glove to tell you by tactitle feedback…

So I am now back to get UE5 running from sketching classes and functions in UE4 so the glove can be finally tested.

The sketches (the messy nodes )from UE4 are now beeing taken apart to fit there own classes and functions (like OOP coding) because everything was done in one class(BP).

I recently run in to a confusing “problem/thing” in this “node based coding”
In a normal coding environment you would create an instance of the other class to use its variables,functions and so on…
C++ :
MyClass myClass;
myClass.myFunction();

you get me.

After watching a lot of tutorials which does not get me goin anywhere.Now after daysssss(yes verly long) of try and error I finally got it. thanks epic games for making it so hard, but ok now i can sleep tight.

@Enter_Reality
The glove is based on modded servos, so that the positioning data can be read and the force feedback can be directly controlled.

@MostHost_LA
Yes there are many things that can be added to or changed to, such as tactile,pressure sensing/Temp-sensing … I´ll see you adding these to the glove :smiley:

If time is on my side I´ll consider adding new stuff on the glove.

More update coming soon.

Here an quick update to this.

I´ve coded a small testing code to test the golve in UE5 :smiley:

And also the glove can find it´s own “zero/home” position :