使用Kinect选择框架元素(像椭圆或矩形)

时间:2012-11-03 11:50:35

标签: c# wpf kinect picking nui

我(字面意思)想要使用Kinect的NUI捕获框架元素。假设我的网格(或画布)上有一个椭圆,我应该可以使用我的程序选择一个椭圆。

为了做到这一点,我认为我必须确定元素的确切位置,比如Unity中的Transform.Position,但我在WPF中找不到这样的东西。

这是我的XAML代码,

<Grid VerticalAlignment="Stretch" HorizontalAlignment="Stretch">
    <my:KinectSensorChooser HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Name="kinectSensorChooser1" />
    <my:KinectColorViewer Stretch="Fill" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"  Name="kinectColorViewer1" Kinect="{Binding Path=Kinect, ElementName=kinectSensorChooser1}" />
    <Ellipse Height="114"  Name="ellipse1" Stroke="Black" Fill="Black" VerticalAlignment="Top" Width="120" />
</Grid>

所以我的问题是在网格上找到那个元素。拥有Cursor或代表用户手的任何元素都不是问题。但在那之后,我将不得不检测我的光标和这些元素之间的碰撞以及困扰我的部分。像ElementHover或ElementPicked这样的事件也会有所帮助,但我想我必须自己编写类似的东西。

顺便说一句,这是一个“工程教育软件”项目,旨在为昂贵或危险的实验等工程练习开发虚拟环境。

1 个答案:

答案 0 :(得分:2)

SDK v1.6 Toolkit中提供的Microsoft的几个示例提供了如何确定屏幕上对象的位置并使用代表玩家手的自定义光标与它们进行交互的示例。

我建议查看提供的几个示例,以便清楚地了解交互是如何工作的。该工具包位于与办公室Kinect for Windows SDK相同的位置。

http://www.microsoft.com/en-us/kinectforwindows/develop/developer-downloads.aspx

<强> ShapeGame

此示例生成从窗口顶部落下的随机形状(其中一些是椭圆形)。这些形状与Kinect生成的骨架相互作用。您将看到如何获取窗口中元素的位置以及与骨架相关的位置。

<强> BasicInteractions

这个例子做了几件有用的事情。它显示了如何根据手的位置生成自定义光标。它还会创建一个ContentControl,可以连接到Kinect事件(例如手动输入,悬停和退出事件)。它以这样的方式构建,因为它是ContentControl,任何东西都可以放在里面 - 无论是单个椭圆还是复杂的布局。