[Plugin] Leap Motion - Event Driven

So…over the network, Player 1’s hand movements affects both character models on my client but not Player 2’s. When Player 2 move their hands, they affect the movement of both characters on their client. Essentially the clients are separate but on the client, both models are being controlled by the same hand. I think the ideal behavior is to have the movements replicated between clients.

Hi ,

Thanks so much for getting this working in OS X.

When I tried to compile the plugin in OS X, and in Windows too, using Unreal Engine 4.7 preview 3, I ran into the following error:

Simply commenting out that line allows it to build.

I know 4.7 preview 3 is not a build you’re targeting; I don’t expect you to resolve this. I just thought I’d bring it to your attention.

**Hi ,

Awesome Plugin, I got it works well and what I’m trying to do is ’ walk through by hand gestures[Palm Pitch and Yaw] in Leap Motion’ ,
Now grab the Physics object using hand fingers and Placing it in desired position.
Is there any reference to this or give some suggestions to do this. I’m Totally newbie to Unreal and blueprint**

Hey
Really enjoying your plugin. Great work there in updating and taking the time to get us through the motions (pun intended :slight_smile:
Have you had a chance to take a look at the new widgets leap has added to their sdk? They are for Unity right now, but do you think that can be applied to UE4 too? They are really cool and really practical for handling inventory or buttons.
Would love your input on that.

Are you testing this on two separate computers? I don’t think leap motion supports multiple devices on a single computer yet.

Thanks for the heads up. XCode seems to like a stricter definition of C++ so some forward declarations may need to be modified in some cases, will take a look at this come 4.7.

There are a couple of ways to do this. If you want to use a rigged model, you can attach collision boxes/capsules to finger/hand bones or sockets. Another way would be to use custom part meshes (with collision assets) of a hand and attaching them to bone positions reported by leap, this is how the non-rigged leap hands are done in Unity.

Then you can cheat a bit by checking if your thumb and index finger are close to each other when you are close to an object and attach that object to the midpoint of those to have a more robust ‘pick up and place’ mechanism.

Ideally for physical collisions though you should use bone/joint velocities instead of directly using positions as otherwise you may apply more force to the interactive objects than you intend to. I haven’t had the chance to implement any collisions assets yet and it may take some time before I have time to do so.

Glad your enjoying it!

Widgets would require some assets which would have to be release essentially under MIT and we currently don’t have any of those. All the tools are there to be able to implement it though and if you make some, make a pull request and they’ll be included in the plugin; simply don’t have the resources to cover everything myself :frowning:

Actually, I’m getting the same error in Windows too. There’s another error that I just encountered when I attempt to build shipping (whether from Windows visual studio, XCode, or packaging from within Unreal Editor), I get the following:


Error	1	error C2719: 'in': formal parameter with __declspec(align('16')) won't be alignedd:\development\ue4projects\secondcentreout\plugins\leapmotion\source\leapmotion\public\animbody\AnimBone.h(31) : error C2719: 'in': formal parameter with __declspec(align('16')) won't be aligned	d:\development\ue4projects\secondcentreout\plugins\leapmotion\source\leapmotion\public\animbody\AnimBone.h	31	1	SecondCentreOut


I hope whatever’s causing these errors will fix itself by 4.7’s official release, but if not, then I hope this at least a little helpful.

Yes, I’m doing this on two separate computers. Two of everything, connecting over LAN. Movements are replicated properly, meaning Player 1 can move and Player 2 sees the him move. I’ll keep digging but it sounds like this should work. Have you tested this scenario yourself? Or anybody else tried this? Perhaps I’m missing some configuration.

How to put the reality of hand display

anyone update to the last update? break something?

Well, in 4.7 it doesn’t compile :(.

c:\projects\unrealengine\engine\intermediate\build\win64\inc\plugins\leapmotion\LeapHand.generated.h(18): error C4099: ‘FMatrix’ : type name first seen using ‘class’ now seen using 'struct’C:\projects\UnrealEngine\Engine\Intermediate\Build\Win64\Inc\Plugins\LeapMotion\LeapHand.generated.h(18) : error C4099: ‘FMatrix’ : type name first seen using ‘class’ now seen using ‘struct’
1>
1> c:\projects\unrealengine\engine\source\runtime\core\public\math\Matrix.h(13) : see declaration of ‘FMatrix’
1> c:\projects\unrealengine\engine\source\runtime\core\public\math\Matrix.h(13) : see declaration of ‘FMatrix’

Strange error too. Matrix.h didn’t change. Could be something honked on my end. Any ideas?

Lord_Pall, you can compile it, simply replace FMatrix as a class.

To elaborate a little more on what iparra said…

The first time you try to compile for a new target it will generate the headers, and the generated headers have the error. You can simply edit the generated headers and change the word “struct” to “class” on the problematic line. However, this does not work if you are packaging from within the editor because the headers are generated anew every time.

This error comes from the implementation of


FMatrix ULeapHand::RotationMatrix(const ULeapFrame *frame)

in


Plugins\LeapMotion\Source\LeapMotion\Private\LeapHand.cpp

If you comment out that whole function, and the function declaration in the header (i.e. Public\LeapHand.h), then the error goes away. Of course that also means you can’t access the hand’s RotationMatrix anymore. For me this is OK (I only want position), but I guess this would be unacceptable for most.

Hi .

Finally I did some what with the help of this link now I can control Plus symbol[Mouse pointer] by left hand and pick the Physics object by LeapLeftPinch and Walkthrough is controlled by right hand. It is very difficult that picking the Physics object at the same time controlling the mouse pointer[Leap Yaw and Pinch gesture] in same left hand. So I planned if that mouse pointer is facing to down direction and it will move automatically if hand will move, is very easy to move on after picking the object.

What I did is


I’m expecting

Needed your help how could I convert that mouse pointer to down direction and also I don’t want camera to follow that mouse pointer
How could we do that Hand alone[Without character attached] for Leap motion.

Cheers…

Hey ,

I just wanted to see if you could give me some direction on what I’m trying to do with your plug in. I want to assign custom functions to basic gestures. I.E. Swiping and rotating an object, pinching to zoom, or controlling the translation of an object by forming a fist and moving it. The goal is to utlize leap motion in showcasing products and having customers interact with it.

I don’t know if there are readily available sources for this, and as a beginner, I sometimes get extremely confused. How should I go about doing this? Where do I start experimenting? Which blueprint are the edits supposed to be done under? If you could give me your opinion as to how to do something similar and tell me the logic behind it I would really be grateful.

Amazing job as always!
Cheers,

Hey ,

Thanks for this amazing plugin !

Can you tell me how to use it with C++ code ? (Listener with events, Controller…)

Cheers,
Beunn

Hi all,

I have been experimenting with the latest Leap Motion SDK, and the VR widgets in Unity.

Here is the link:

http://blog.leapmotion.com/introducing-widgets-fundamental-ui-elements-unity/

Here is a video I recorded in Youtube:
v=KXRe-DidsSI

Hope we could see this kind of things in UE4 soon with Leap Motion. What do you think ??

Cheers.

Hi All,

I am using a blueprint with Pawn as its parent class. I observe that the hand can be moved over a very limited space in the viewport. What is wrong? How to make the movement cover the whole viewport? Please help.

Interesting. I do not have 2 leaps to replicate what you’re doing, but based on my experience with networking you can choose specifically what should replicate and what shouldn’t. You may be doing full actor replication instead of variable replication.

If you use variable replication with hand/finger positions (e.g. AnimBody) then downstream they should affect the 2nd client only as expected. There are various approaches to what information gets updated over a network. A good primer on blueprint networking can be found here: v=TbaOyvWfJE0

You probably want to do an raycast originating from the hand’s position in the negative Z axis. This would achieve what you’re looking for

Already answered earlier.

You probably want to use the Swipe Gesture recognizer in a similar manner to


See the repo for more detailed documentation.

It would be similar to how its shown in the hydra plugin video with the main difference that you would add a leap component instead of a delegate subclass (leap plugin doesn’t have this format) and you would set the interface to receive events via A new, community-hosted Unreal Engine Wiki - Announcements - Epic Developer Community Forums.

These are great things, nothing is stopping you all from adding these kinds of widgets to the plugin, looking forward to seeing these things being tried.

The Passthrough effect seen iparra’s video is being worked on however it is not yet ready for the plugin (need to solve 32bit textures first).

See this post where we discuss how to change the origin of the leap in default mode.

Hi All,

I’m wondering if anyone else is having a problem with gestures? I’m using “Event Hand Grabbed” and it seems like the leap only registers the gesture about half of the time, and only if the hands are located in a very specific location relative to the leap. I’m not sure if it’s the leap itself, or something specific to my project or this plugin. Does anybody else have this problem, or know of a fix for it?

Thanks,

some progress in the finger rotation fix?