프로젝트

일반

사용자정보

통계
| 개정판:

t1 / TFDContents / Assets / KinectScripts / Samples / JointOrientationView.cs @ 3

이력 | 보기 | 이력해설 | 다운로드 (1.84 KB)

1
using UnityEngine;
2
using System.Collections;
3
//using Windows.Kinect;
4

    
5

    
6
public class JointOrientationView : MonoBehaviour 
7
{
8
	[Tooltip("Index of the player, tracked by this component. 0 means the 1st player, 1 - the 2nd one, 2 - the 3rd one, etc.")]
9
	public int playerIndex = 0;
10

    
11
	[Tooltip("The Kinect joint we want to track.")]
12
	public KinectInterop.JointType trackedJoint = KinectInterop.JointType.SpineBase;
13

    
14
	[Tooltip("Whether the joint view is mirrored or not.")]
15
	public bool mirroredView = false;
16

    
17
	[Tooltip("Smooth factor used for the joint orientation smoothing.")]
18
	public float smoothFactor = 5f;
19

    
20
	[Tooltip("GUI-Text to display the current joint rotation.")]
21
	public GUIText debugText;
22
	
23
	private Quaternion initialRotation = Quaternion.identity;
24

    
25
	
26
	void Start()
27
	{
28
		initialRotation = transform.rotation;
29
		//transform.rotation = Quaternion.identity;
30
	}
31
	
32
	void Update () 
33
	{
34
		KinectManager manager = KinectManager.Instance;
35
		
36
		if(manager && manager.IsInitialized())
37
		{
38
			int iJointIndex = (int)trackedJoint;
39

    
40
			if(manager.IsUserDetected(playerIndex))
41
			{
42
				long userId = manager.GetUserIdByIndex(playerIndex);
43
				
44
				if(manager.IsJointTracked(userId, iJointIndex))
45
				{
46
					Quaternion qRotObject = manager.GetJointOrientation(userId, iJointIndex, !mirroredView);
47
					qRotObject = initialRotation * qRotObject;
48
					
49
					if(debugText)
50
					{
51
						Vector3 vRotAngles = qRotObject.eulerAngles;
52
						debugText.text = string.Format("{0} - R({1:000}, {2:000}, {3:000})", trackedJoint, 
53
						                                       vRotAngles.x, vRotAngles.y, vRotAngles.z);
54
					}
55

    
56
					if(smoothFactor != 0f)
57
						transform.rotation = Quaternion.Slerp(transform.rotation, qRotObject, smoothFactor * Time.deltaTime);
58
					else
59
						transform.rotation = qRotObject;
60
				}
61
				
62
			}
63
			
64
		}
65
	}
66
}