Skeleton.Positionの示す座標とその遷移について
About
「サンプルプログラム」を作っていて、もしかして「Skeleton.Position」と「JointTyep.HipCenter」が示す座標が同じなんじゃないかなぁと思いたった(実際には違ったのだが後述)。そこでサンプルプログラムをちょこっと変えて、それぞれが示す座標を可視化して試験してみました。
Result
青が「Skeleton.Position」赤が「HipCenter」黄が「Spine」です。映ってるユーザが傾いていることを考慮しなくとも明らかにずれていることが分かります。Kinectでは「Skeleton.Position」の方は7人まで対応するので、そもそも算出方法が異なるハズ…。恐らく高速ではあるが詳細は無視する様なアルゴリズムなんだと思います。
面白いのはこっからで、そういったアルゴリズムのせいなのか、ユーザが近くにいる場合と遠くにいる場合とで「Skeleton.Position」の相対的な位置が変わります。ユーザが近くにいれば、「HipCenter」などと比べて上の方に来ますし、ユーザが遠ければ下の方に来ます。動画等は特に載せませんが、その間の距離に立てば丁度「HipCenter」と「Spine」の中央付近に来ます。細かいことは良く分かりませんが、検出したユーザの映っている領域の内、丁度中間の座標を 「Skeleton.Position」としているのかもしれません。