SkeletonFrameReady コールバックには、foreach
アクティブなスケルトンをステップ実行するためのループ (または類似のもの) が含まれている可能性があります。また、それらが積極的に追跡されているかどうかも確認する必要があります。
foreach (Skeleton skeleton in _skeletons) {
// some extra setup stuff here...
if (skeleton.TrackingState != SkeletonTrackingState.Tracked)
return;
// the Kinect is actively tracking the skeleton at this point
...
}
この時点でやりたいことはZ
、人の位置を確認することです。参照として使用する関節を選択します。頭、腰、または脊椎をお勧めします。位置が希望の位置にある場合はZ
、引き続きスケルトンを操作します。
foreach (Skeleton skeleton in _skeletons) {
....
if (skeleton.TrackingState != SkeletonTrackingState.Tracked)
return;
if (skeleton.Joints[JointType.Spine].Position.Z < _minValue || skeleton.Joints[JointType.Spine].Position.Z > _maxValue)
return;
// if you reach this point, the person is standing a certain distance from the Kinect. Not too close, not too far away.
}
位置の範囲を確認する必要がありますZ
。狭い範囲でもかまいませんが、Kinect がユーザーを無視せずに少し移動できる十分なスペースをユーザーに与える必要があります。
更新:Position
からプロパティを使用することもできますSkeleton
。Kinect の FOV 内のスケルトン全体の計算されたポイントへの単一の x/y/z 参照があります。