public override void render(float elapsedTime) { Device d3dDevice = GuiController.Instance.D3dDevice; TgcKinectSkeletonData data = tgcKinect.update(); if (data.Active) { tgcKinect.DebugSkeleton.render(data.Current.KinectSkeleton); Vector3 headPos = TgcKinectUtils.toVector3(data.Current.KinectSkeleton.Joints[JointType.Head].Position); Vector3 centerPos = TgcKinectUtils.toVector3(data.Current.KinectSkeleton.Joints[JointType.HipCenter].Position); float length = Vector3.Length(headPos - centerPos); BigLogger.log("Length", length); BigLogger.log("HipCenter", data.Current.CenterPos); BigLogger.log("RightHandPos", data.Current.RightHandPos); BigLogger.log("LefttHandPos", data.Current.LefttHandPos); BigLogger.renderLog(); } GuiController.Instance.UserVars["tracking"] = data.Active.ToString(); center.render(); bounds.render(); }
private void cerrarCajon(Vector3 pos) { //Proyectar posicion del gesto a 2D Vector2 pos2D = TgcKinectUtils.projectPoint(pos); float minDist = float.MaxValue; CajonFocus cajonMasCerca = null; //Buscar el cajon que esté mas cerca foreach (CajonFocus c in cajones) { //Que este abierto if (c.CurrentState == CajonFocus.State.Opened) { //Ver distancia en 2D float dist = Vector2.Length(pos2D - c.getScreenCenter()); if (dist < minDist) { minDist = dist; cajonMasCerca = c; } } } //Ver si encontramos uno suficientemente cerca if (cajonMasCerca != null && minDist < CAJON_MIN_DIST_GESTO) { cajonMasCerca.close(); } }
/// <summary> /// Devuelve el centro del BoundingBox de todo el conjunto de meshes del cajon proyectado a la pantalla. /// </summary> public Vector2 getScreenCenter() { //Mover el centro del conjunto si esta abierto Vector3 pos = conjuntoCenter; if (currentState == State.Opened || currentState == State.Opening) { pos = getMovementVec() * conjunto.Max; } return(TgcKinectUtils.projectPoint(pos)); }
public static void log(string text, SkeletonPoint p) { BigLogger.log(text, TgcKinectUtils.toVector3(p)); }