Kinect meets ミブリ・テブリ
Transcript of Kinect meets ミブリ・テブリ
Kinect meets ミブリ・テブリ
2013/1/25 Kinect 開発合宿なかにし @ignote a.k.a. もや
し
スケルトントラッキング
スケルトンのポジション
• スケルトン20 点の座標
頭~肩~腰肘~手首~指先膝~かかと~つま先
Kinect for Windows 固有
• 着座モード腰から下をトラッキングしない
• 近距離モードリビングではなく、PC 利用想定
いよいよアレ
まるPoint h = GetDisplayPosition(
joints[ JointType.Head ], depthFrame );Point sl = GetDisplayPosition(
joints[ JointType.ShoulderLeft ], depthFrame );Point sr = GetDisplayPosition(
joints[ JointType.ShoulderRight ], depthFrame );Point el = GetDisplayPosition(
joints[ JointType.ElbowLeft ], depthFrame );Point er = GetDisplayPosition(
joints[ JointType.ElbowRight ], depthFrame );Point hl = GetDisplayPosition(
joints[ JointType.HandLeft ], depthFrame );Point hr = GetDisplayPosition(
joints[ JointType.HandRight ], depthFrame );
bool lHandIn = hl.X > el.X;bool lHandUp = hl.Y < h.Y;bool lElbowOut = el.X < sl.X;bool lElbowUp = el.Y < sl.Y;
bool rHandIn = hr.X < er.X;bool rHandUp = hr.Y < h.Y;bool rElbowOut = er.X > sr.X;bool rElbowUp = er.Y < sr.Y;
return ( lHandIn && lHandUp && lElbowOut && lElbowUp &&rHandIn && rHandUp && rElbowOut && rElbowUp );
まる - 詳説 1Point h = GetDisplayPosition(
joints[ JointType.Head ], depthFrame );Point sl = GetDisplayPosition(
joints[ JointType.ShoulderLeft ], depthFrame );Point sr = GetDisplayPosition(
joints[ JointType.ShoulderRight ], depthFrame );Point el = GetDisplayPosition(
joints[ JointType.ElbowLeft ], depthFrame );Point er = GetDisplayPosition(
joints[ JointType.ElbowRight ], depthFrame );Point hl = GetDisplayPosition(
joints[ JointType.HandLeft ], depthFrame );Point hr = GetDisplayPosition(
joints[ JointType.HandRight ], depthFrame );
bool lHandIn = hl.X > el.X;bool lHandUp = hl.Y < h.Y;bool lElbowOut = el.X < sl.X;bool lElbowUp = el.Y < sl.Y;
bool rHandIn = hr.X < er.X;bool rHandUp = hr.Y < h.Y;bool rElbowOut = er.X > sr.X;bool rElbowUp = er.Y < sr.Y;
return ( lHandIn && lHandUp && lElbowOut && lElbowUp &&rHandIn && rHandUp && rElbowOut && rElbowUp );
bool lHandIn = hl.X > el.X;
まる - 詳説 2Point h = GetDisplayPosition(
joints[ JointType.Head ], depthFrame );Point sl = GetDisplayPosition(
joints[ JointType.ShoulderLeft ], depthFrame );Point sr = GetDisplayPosition(
joints[ JointType.ShoulderRight ], depthFrame );Point el = GetDisplayPosition(
joints[ JointType.ElbowLeft ], depthFrame );Point er = GetDisplayPosition(
joints[ JointType.ElbowRight ], depthFrame );Point hl = GetDisplayPosition(
joints[ JointType.HandLeft ], depthFrame );Point hr = GetDisplayPosition(
joints[ JointType.HandRight ], depthFrame );
bool lHandIn = hl.X > el.X;
bool lHandUp = hl.Y < h.Y;bool lElbowOut = el.X < sl.X;bool lElbowUp = el.Y < sl.Y;
bool rHandIn = hr.X < er.X;bool rHandUp = hr.Y < h.Y;bool rElbowOut = er.X > sr.X;bool rElbowUp = er.Y < sr.Y;
return ( lHandIn && lHandUp && lElbowOut && lElbowUp &&rHandIn && rHandUp && rElbowOut && rElbowUp );
bool lHandUp = hl.Y < h.Y;
まる - 詳説 3Point h = GetDisplayPosition(
joints[ JointType.Head ], depthFrame );Point sl = GetDisplayPosition(
joints[ JointType.ShoulderLeft ], depthFrame );Point sr = GetDisplayPosition(
joints[ JointType.ShoulderRight ], depthFrame );Point el = GetDisplayPosition(
joints[ JointType.ElbowLeft ], depthFrame );Point er = GetDisplayPosition(
joints[ JointType.ElbowRight ], depthFrame );Point hl = GetDisplayPosition(
joints[ JointType.HandLeft ], depthFrame );Point hr = GetDisplayPosition(
joints[ JointType.HandRight ], depthFrame );
bool lHandIn = hl.X > el.X;bool lHandUp = hl.Y < h.Y;
bool lElbowOut = el.X < sl.X;bool lElbowUp = el.Y < sl.Y;
bool rHandIn = hr.X < er.X;bool rHandUp = hr.Y < h.Y;bool rElbowOut = er.X > sr.X;bool rElbowUp = er.Y < sr.Y;
return ( lHandIn && lHandUp && lElbowOut && lElbowUp &&rHandIn && rHandUp && rElbowOut && rElbowUp );
bool lElbowOut = el.X < sl.X;
まる - 詳説 4Point h = GetDisplayPosition(
joints[ JointType.Head ], depthFrame );Point sl = GetDisplayPosition(
joints[ JointType.ShoulderLeft ], depthFrame );Point sr = GetDisplayPosition(
joints[ JointType.ShoulderRight ], depthFrame );Point el = GetDisplayPosition(
joints[ JointType.ElbowLeft ], depthFrame );Point er = GetDisplayPosition(
joints[ JointType.ElbowRight ], depthFrame );Point hl = GetDisplayPosition(
joints[ JointType.HandLeft ], depthFrame );Point hr = GetDisplayPosition(
joints[ JointType.HandRight ], depthFrame );
bool lHandIn = hl.X > el.X;bool lHandUp = hl.Y < h.Y;bool lElbowOut = el.X < sl.X;
bool lElbowUp = el.Y < sl.Y;
bool rHandIn = hr.X < er.X;bool rHandUp = hr.Y < h.Y;bool rElbowOut = er.X > sr.X;bool rElbowUp = er.Y < sr.Y;
return ( lHandIn && lHandUp && lElbowOut && lElbowUp &&rHandIn && rHandUp && rElbowOut && rElbowUp );
bool lElbowUp = el.Y < sl.Y;
ばつPoint h = GetDisplayPosition(
joints[ JointType.Head ], depthFrame );Point sp = GetDisplayPosition(
joints[ JointType.Spine ], depthFrame );Point el = GetDisplayPosition(
joints[ JointType.ElbowLeft ], depthFrame );Point er = GetDisplayPosition(
joints[ JointType.ElbowRight ], depthFrame );Point hl = GetDisplayPosition(
joints[ JointType.HandLeft ], depthFrame );Point hr = GetDisplayPosition(
joints[ JointType.HandRight ], depthFrame );
bool lheight = h.Y < hl.Y && hl.Y < sp.Y;bool rheight = h.Y < hr.Y && hr.Y < sp.Y;
bool lHandIn = hl.X > el.X;bool rHandIn = hr.X < er.X;
return ( lheight && rheight && lHandIn && rHandIn );
Point h = GetDisplayPosition( joints[ JointType.Head ], depthFrame );
Point sp = GetDisplayPosition( joints[ JointType.Spine ], depthFrame );
Point el = GetDisplayPosition( joints[ JointType.ElbowLeft ], depthFrame );
Point er = GetDisplayPosition( joints[ JointType.ElbowRight ], depthFrame );
Point hl = GetDisplayPosition( joints[ JointType.HandLeft ], depthFrame );
Point hr = GetDisplayPosition( joints[ JointType.HandRight ], depthFrame );
bool lheight = h.Y < hl.Y && hl.Y < sp.Y;bool lHandIn = hl.X > el.X;
bool rheight = h.Y < hr.Y && hr.Y < sp.Y;bool rHandIn = hr.X < er.X;
return ( lheight && rheight && lHandIn && rHandIn );
ばつ - 詳説 1
bool lheight = h.Y < hl.Y && hl.Y < sp.Y;
ばつ - 詳説 2Point h = GetDisplayPosition(
joints[ JointType.Head ], depthFrame );Point sp = GetDisplayPosition(
joints[ JointType.Spine ], depthFrame );Point el = GetDisplayPosition(
joints[ JointType.ElbowLeft ], depthFrame );Point er = GetDisplayPosition(
joints[ JointType.ElbowRight ], depthFrame );Point hl = GetDisplayPosition(
joints[ JointType.HandLeft ], depthFrame );Point hr = GetDisplayPosition(
joints[ JointType.HandRight ], depthFrame );
bool lheight = h.Y < hl.Y && hl.Y < sp.Y;
bool lHandIn = hl.X > el.X;
bool rheight = h.Y < hr.Y && hr.Y < sp.Y;bool rHandIn = hr.X < er.X;
return ( lheight && rheight && lHandIn && rHandIn );
bool lHandIn = hl.X > el.X;
簡単でしょ?
アカウント間違えました(´ ・ _ ・` )
Kinect やろうぜ!