本文整理汇总了C#中KinectManager.GetJointPosition方法的典型用法代码示例。如果您正苦于以下问题:C# KinectManager.GetJointPosition方法的具体用法?C# KinectManager.GetJointPosition怎么用?C# KinectManager.GetJointPosition使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类KinectManager
的用法示例。
在下文中一共展示了KinectManager.GetJointPosition方法的8个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: Start
// Use this for initialization
void Start()
{
// キネクトマネージャーの取得
manager = KinectManager.Instance;
// リズムカウントの配列を初期化
rhythmTimes = new Queue<float>(rhythmCalcNum);
float initRhythm = 60.0f / initBPM;
for (int i = 0; i < rhythmTimes.Count; i++) {
rhythmTimes.Enqueue(initRhythm);
}
checkObjectPosY = new Queue<float>(checkObjectPosYNum);
// チェックオブジェクトの高さ検出に関する初期化
// 初期位置で配列を埋める
long userId = manager.GetUserIdByIndex (0);
Vector3 pos = manager.GetJointPosition (userId, (int)checkBodyType);
}
示例2: Update
// Update is called once per frame
void Update()
{
km = KinectManager.Instance;
string trackedJointsString = "Tracked Joints:";
if (km != null) {
if (km.IsUserDetected()) {
uint userId = km.GetPlayer1ID();
/*trackedJointsString += "\nchecking joints";
if(km.IsJointTracked(userId, (int)rightHand))
trackedJointsString += "\nRight hand";
if(km.IsJointTracked(userId, (int)rightWrist))
trackedJointsString += "\nRight wrist";
if(km.IsJointTracked(userId, (int)centreHip))
trackedJointsString += "\nCentre Hip";
if(km.IsJointTracked(userId, (int)leftShoulder))
trackedJointsString += "\nLeft shoulder";
if(km.IsJointTracked(userId, (int)centreShoulder))
trackedJointsString += "\nCentre shoulder";
if(km.IsJointTracked(userId, (int)rightShoulder))
trackedJointsString += "\nRight shoulder";
trackedJointsString += "\ndone checking joints";*/
if (km.IsJointTracked(userId, (int)rightHand) && km.IsJointTracked(userId, (int)rightShoulder))
wristVector = km.GetJointPosition(userId, (int)rightHand) - km.GetJointPosition(userId, (int)rightShoulder);
if (km.IsJointTracked(userId, (int)rightShoulder) && km.IsJointTracked(userId, (int)leftShoulder))
shouldersVector = km.GetJointPosition(userId, (int)rightShoulder) - km.GetJointPosition(userId, (int)leftShoulder);
if (km.IsJointTracked(userId, (int)centreShoulder) && km.IsJointTracked(userId, (int)centreHip))
backVector = km.GetJointPosition(userId, (int)centreShoulder) - km.GetJointPosition(userId, (int)centreHip);
//GramSchmidt Orthonormal Space
Vector3 e2 = backVector.normalized;
Vector3 e1 = (shouldersVector - Vector3.Dot (shouldersVector,e2) * e2).normalized;
wristVectorInPlane = new Vector2(Vector3.Dot(e1, wristVector), Vector3.Dot(e2, wristVector));
}
}
trackedJointsText.text = trackedJointsString;
CheckPointingTopRight();
}
示例3: GetUserBoneLength
private bool GetUserBoneLength(KinectManager manager, KinectInterop.JointType baseJoint, KinectInterop.JointType endJoint, float scaleFactor, ref float length)
{
length = 0f;
if(manager && manager.IsJointTracked(currentUserId, (int)baseJoint) &&
manager.IsJointTracked(currentUserId, (int)endJoint))
{
Vector3 vPos1 = manager.GetJointPosition(currentUserId, (int)baseJoint);
Vector3 vPos2 = manager.GetJointPosition(currentUserId, (int)endJoint);
length = (vPos2 - vPos1).magnitude * scaleFactor;
return true;
}
return false;
}
示例4: GetUserBodyHeight
private bool GetUserBodyHeight(KinectManager manager, float scaleFactor, ref float height)
{
height = 0f;
if(manager && manager.IsJointTracked(currentUserId, (int)KinectInterop.JointType.HipLeft) &&
manager.IsJointTracked(currentUserId, (int)KinectInterop.JointType.HipRight) &&
manager.IsJointTracked(currentUserId, (int)KinectInterop.JointType.ShoulderLeft) &&
manager.IsJointTracked(currentUserId, (int)KinectInterop.JointType.ShoulderRight))
{
//Vector3 posHipCenter = manager.GetJointPosition(currentUserId, (int)KinectInterop.JointType.SpineBase);
Vector3 posHipLeft = manager.GetJointPosition(currentUserId, (int)KinectInterop.JointType.HipLeft);
Vector3 posHipRight = manager.GetJointPosition(currentUserId, (int)KinectInterop.JointType.HipRight);
Vector3 posHipCenter = (posHipLeft + posHipRight) / 2;
Vector3 posShoulderLeft = manager.GetJointPosition(currentUserId, (int)KinectInterop.JointType.ShoulderLeft);
Vector3 posShoulderRight = manager.GetJointPosition(currentUserId, (int)KinectInterop.JointType.ShoulderRight);
Vector3 posShoulderCenter = (posShoulderLeft + posShoulderRight) / 2;
height = (posShoulderCenter.y - posHipCenter.y) * scaleFactor;
return true;
}
return false;
}
示例5: FixedUpdate
// Update is called once per frame
void FixedUpdate()
{
// show pause screen and return if isPaused
if (isPaused)
{
overlay.waitingForPlayer.SetActive(false);
overlay.pauseScreen.SetActive(true);
begin = false;
Cursor.visible = true;
return;
}
else
Cursor.visible = false;
overlay.pauseScreen.SetActive(false);
// setup kinect & return if no user found
manager = KinectManager.Instance;
long userID = manager ? manager.GetUserIdByIndex (0) : 0;
if (userID == 0)
{
overlay.waitingForPlayer.SetActive(true);
begin = false;
return;
}
begin = true;
overlay.waitingForPlayer.SetActive(false);
// set joints
bottomSpine = manager.GetJointPosition (userID, 0);
bottomHead = manager.GetJointPosition (userID, 2);
leftShoulder = manager.GetJointPosition (userID, 4);
leftHand = manager.GetJointPosition (userID, 6);
rightShoulder = manager.GetJointPosition (userID, 8);
rightHand = manager.GetJointPosition (userID, 10);
leftHip = manager.GetJointPosition (userID, 12);
leftKnee = manager.GetJointPosition (userID, 13);
leftFoot = manager.GetJointPosition (userID, 15);
rightHip = manager.GetJointPosition (userID, 16);
rightKnee = manager.GetJointPosition (userID, 17);
rightFoot = manager.GetJointPosition (userID, 19);
xBottom = bottomSpine.x;
// Horizontal movement
HorizontalMovement();
// Forward movement
MoveForward();
// Calculate leg angles
CalcAngles();
// Calculate lowest foot
LowestFoot();
}
示例6: Update
// Update is called once per frame
void Update()
{
kinect = KinectManager.Instance;
if (!kinectInterpreter.useGamepad) {
isDraggingLeft = false;
isDraggingRight = false;
isDraggingUp = false;
isDraggingDown = false;
if (canDrag && HandIsGrabbing (kinect)) {
if (!wasDragging) {
dragStartPos = (Vector2)(kinect.GetJointPosition (userId, (int)handJoint));
controller.OnHandClosed (userId);
}
wasDragging = true;
Vector2 dragVector = (Vector2)(kinect.GetJointPosition (userId, (int)handJoint)) - dragStartPos;
float dragTan = Mathf.Abs (dragVector.x / dragVector.y);
if (dragTan < tan15 || dragTan > tan75) {
int steps = Mathf.FloorToInt (dragVector.magnitude / dragStepDistance);
if (steps > 0) {
steps = Mathf.Min (steps, maxDragSteps);
if (Time.time - lastDragTime > dragBaseRepeatTime / steps) {
lastDragTime = Time.time;
if (dragVector.x > dragVector.y && dragVector.x > -(dragVector.y)) {
isDraggingRight = true;
} else if (dragVector.x < dragVector.y && dragVector.x < -(dragVector.y)) {
isDraggingLeft = true;
} else if (dragVector.y > dragVector.x && dragVector.y > -(dragVector.x)) {
isDraggingUp = true;
} else if (dragVector.y < dragVector.x && dragVector.y < -(dragVector.x)) {
isDraggingDown = true;
}
}
}
}
} else if (wasDragging) {
wasDragging = false;
controller.OnHandOpened (userId);
}
} else {
wasDragging = HandIsGrabbing (kinect);
isDraggingLeft = Input.GetAxis("Horizontal" + kinectInterpreter.gamepad) > 0f;
isDraggingRight = Input.GetAxis("Horizontal" + kinectInterpreter.gamepad) < 0f;
isDraggingUp = Input.GetAxis("Vertical" + kinectInterpreter.gamepad) > 0f;
isDraggingDown = Input.GetAxis("Vertical" + kinectInterpreter.gamepad) < 0f;
}
}
示例7: GetJointPosition
// gets the joint position in space
private Vector3 GetJointPosition(KinectManager manager, int joint)
{
Vector3 vPosJoint = Vector3.zero;
if(manager.IsJointTracked(currentUserId, joint))
{
if(foregroundCamera)
{
// get the background rectangle (use the portrait background, if available)
Rect backgroundRect = foregroundCamera.pixelRect;
PortraitBackground portraitBack = PortraitBackground.Instance;
if(portraitBack && portraitBack.enabled)
{
backgroundRect = portraitBack.GetBackgroundRect();
}
// get the color overlay position
vPosJoint = manager.GetJointPosColorOverlay(currentUserId, joint, foregroundCamera, backgroundRect);
}
else
//if(vPosJoint == Vector3.zero)
{
vPosJoint = manager.GetJointPosition(currentUserId, joint);
}
}
return vPosJoint;
}
示例8: Update
// Update is called once per frame
void Update()
{
initText.text = noUser + straightKnees + inRange + groundedFeet;
manager = KinectManager.Instance;
long userID = manager ? manager.GetUserIdByIndex (0) : 0;
if (userID == 0)
{
noUser = "No User Detected\n";
return;
}
else
noUser = "\n";
// Joints
bottomSpine = manager.GetJointPosition (userID, 0);
bottomHead = manager.GetJointPosition (userID, 2);
leftHip = manager.GetJointPosition (userID, 12);
leftKnee = manager.GetJointPosition (userID, 13);
leftFoot = manager.GetJointPosition (userID, 15);
rightHip = manager.GetJointPosition (userID, 16);
rightKnee = manager.GetJointPosition (userID, 17);
rightFoot = manager.GetJointPosition (userID, 19);
LegAngles();
LowestFoot();
// check distance from the sensor
if (bottomSpine.z > 2.0f)
{
inRange = "Too far!\n";
distanceBool = false;
}
else if (bottomSpine.z < 1.25f)
{
inRange = "Too close!\n";
distanceBool = false;
}
else
{
distanceBool = true;
inRange = "\n";
}
// check for straight legs
if ((leftLegAngle < 165.0f) || (rightLegAngle < 165.0f) || (leftUp < 155.0f) || (rightUp < 155.0f))
{
straightKnees = "Stand up straight!\n";
angleBool = false;
}
else
{
angleBool = true;
straightKnees = "\n";
}
// check for feet on ground
if (Mathf.Abs (leftFoot.y - rightFoot.y) > 0.05f)
{
groundedFeet = "Keep both feet grounded!\n";
groundedBool = false;
}
else
{
groundedBool = true;
groundedFeet = "\n";
}
if (distanceBool && angleBool && groundedBool && !coroutineStarted)
{
coroutineStarted = true;
StartCoroutine(InitCount());
}
}