Kinect:获取/释放
本文关键字:释放 获取 Kinect | 更新日期: 2023-09-27 17:50:41
我是Kinect编程的初学者。然而,我读了关于它的不同教程和文本。此外,我还在编写代码示例("Controls base - wpf")。不幸的是,没有一个资源能教我如何以我理解的方式抓取和发布代码。
我想创建动态的KinectTileButtons。当程序运行时,用户应该能够将按钮放置到他喜欢的位置。玩家用手作为光标。例如:在左上角有一个按钮b1。当用户的手不在b1时,按钮不会改变他的位置。如果用户的手放在按钮上,并且他做出了"GRAB"手势,按钮的位置就像他的手的位置一样(可变位置)。当他释放时,按钮的位置是恒定的,直到用户下一次抓住按钮时才会改变。
我非常感谢任何建议,建议或代码示例,因为我真的不知道我应该如何继续解决这个问题。
提前感谢derpate
你应该做的是改变按钮在窗口上的位置。我会有一些全局的bool
来表示它们在抓取和保持。然后我将在更新中添加一个条件,将标签移动到手的位置。下面是一些伪代码:
bool grabbing = false;
bool selected = false;
var button;
var handElement;
Start()
{
button = window.Button;
handElement = window.handElement;
...
sensor.Start();
}
Update() //all frames ready
{
using (SkeletonFrame sf = e.OpenSkeletonFrame())
{
... //get skeleton and position
... //tell if grabbing
if (/*however you do the grab gesture*/)
grabbing = true;
if (selected && grabbing)
{
button.X = handElement.X;
button.Y = handElement.Y;
}
}
}
Button_OnClick()//or whatever it is called for the Kinect UI control
{
selected = true;
}
对不起的伪代码,我只是没有工作与Kinect UI之前,我不想有一半伪代码的元素,我不知道,但我知道它有像OnClick()
的事件,当它被持有,我不知道你的意思是"GRAB"手势,但我假设你知道如何实现它,如果你知道它是什么。好运!
也知道这只适用于一个按钮。如果你经常这样做,我建议你上一门课……比如:
class MoveableButton : KinectButton//again, don't know the exact name of this
{
private int X, Y;
private bool selected = false, grabbing = false;
public void Selected()
{
selected = true;
}
public void Grabbed()
{
grabbing = true;
}
public void LetGo()
{
grabbing = false;
selected = false;
}
public void Update(UIElement hand)
{
if (selected && grabbing)
{
this.X = hand.X;
this.Y = hand.Y;
}
}
}
然后你会在特定的帧中调用适当的方法,我将有一个数组来循环Update