use or create gestures
There are two ways to add gesture recognition to your unity project. The first: Find the Kinectmanager component, which is attached to the Maincamera in the example. There are two list properties in the component "Player1 gestures" (gestures from player 1) "Player2 gestures" (gestures from player2). These two lists have gestures that can be detected during the entire game run. The second is to implement user-specific gestures in a programmatic way. You need to implement the Kinectgestures.gesturelistenerinterface interface to add gestures or handle any specified gestures. Here's an example: Kinectscripts/extras/simplegesturelistener. The simple description is as follows:
Userdetected () for initiating gesture detection;
Userlost () is used to clean up variables or resource usage. You do not need to remove the gestures added in userdetected (). These will be cleared automatically before calling Userlost ().
Gestureinprogress () is called when a gesture starts but has not been terminated or canceled.
Gesturecompleted () is called at the end of a gesture. You can add your own code here to handle gestures
Gesturecancelled () call when the gesture is canceled
Identify gestures
The following gestures can be smoothly identified:
raiserighthand/raiselefthand– the left or right hand over the shoulder and hold it for at least one second
psi– hands over their shoulders and hold them for at least a second.
stop– hands drooping.
wave– the left or right hand to swing back and forth
swipeleft– the right hand to the left.
swiperight– left hand to the right.
swipeup/swipedown– left or right hand up/down
click– left or right hand in the appropriate position for at least 2.5 seconds.
righthandcursor/lefthandcursor– false gestures used to make the cursor move with the hand
zoomout– elbow downward, left and right palms together (seeking Buddha gestures), and then slowly separated.
zoomin– elbow down, two palms together at least 0.7 meters, then slowly close together
wheel– English Original description is not clear, is the zoomout/in gesture, but in the time of movement is before and after rather than around.
jump– at least 10 centimeters in hip joint center in 1.5 seconds
Squat-in 1.5 seconds the hip center drops at least 10 centimeters
push– to push the left or right hand outward within 1.5 seconds.
Pull-the left or right hand to the lira within 1.5 seconds
Add your gestures
Here's a look at the process of adding gesture recognition to Kinect, you need to have a basic knowledge of C # and learn a little bit about the basic workflow of the Kinect sensor. In the Kinect's coordinate system, it provides the three-dimensional coordinates of the tracked object, measured in meters.
To add a user-defined recognition gesture, first you need to open the Assets/kinectscripts/kinectgestures.cs script file and then:
1. Find the enumeration of gestures and add the name of the gesture you want to define after this enumeration
2. Find the Checkforgesture () function, here is a very long switch () statement, each of the gestures enumeration of gestures need to be handled here using case statements. Therefore, you need to add a case statement here to handle your newly added gestures.
3, of course, you can look at Raiselefthand, Raiserighthand, swipeleft or swiperight how these are handled as examples of learning.
4. As you can see, there is also a switch statement inside each handle gesture to detect and change the current state of the gesture. Each State is represented by a number (0,1,2,3 ...), and its state changes according to the data stored in the GESTUREDATA structure. This data structure body is created for each gesture that needs to be recognized in the scene.
5, the initial state of a gesture is 0, in this state, the program needs to identify whether the gesture started. To do this, it needs to check and store the position of the joint, usually the left or the left hand. If the position of a joint matches the beginning of a gesture, the state value of the gesture is added one. In the next state, it needs to check if the joint has reached the desired position (or the desired distance is moved). This check needs to be done in a certain amount of time and we usually set it to 1-1.5 seconds.
6, if the joint is detected in the set time to achieve the desired position (or move the ideal distance), then the gesture is considered to be successful, otherwise, as the gesture is canceled, the status will be set to 0, and start again.
Kinect Help document translation of two gestures