Beispiel #1
0
        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();
        }
Beispiel #2
0
        public override void render(float elapsedTime)
        {
            TgcModifiers modifiers = GuiController.Instance.Modifiers;
            Vector2      size      = (Vector2)modifiers.getValue("size");
            Vector3      position  = (Vector3)modifiers.getValue("position");

            collider.Center = position;
            collider.Radius = size.X;
            collider.Length = size.Y;

            if (TgcCollisionUtils.testSphereCylinder(collisionableSphere, collider))
            {
                collisionableSphere.setRenderColor(collisionColor);
            }
            else
            {
                collisionableSphere.setRenderColor(noCollisionColor);
            }

            if (TgcCollisionUtils.testAABBCylinder(collisionableAABB, collider))
            {
                collisionableAABB.setRenderColor(collisionColor);
            }
            else
            {
                collisionableAABB.setRenderColor(noCollisionColor);
            }

            if (TgcCollisionUtils.testCylinderCylinder(collisionableCylinder, collider))
            {
                collisionableCylinder.setRenderColor(collisionColor);
            }
            else
            {
                collisionableCylinder.setRenderColor(noCollisionColor);
            }


            collider.render();
            collisionableSphere.render();
            collisionableAABB.render();
            collisionableCylinder.render();
        }
Beispiel #3
0
        public override void render(float elapsedTime)
        {
            Device d3dDevice = GuiController.Instance.D3dDevice;

            //Velocidad de movimiento 2D
            tgcKinect.Hands2dSpeed = new Vector2((float)GuiController.Instance.Modifiers["speedX"], (float)GuiController.Instance.Modifiers["speedY"]);

            //Actualizar estado de kinect
            TgcKinectSkeletonData data = tgcKinect.update();

            if (data.Active)
            {
                //Render de esqueleto debug
                tgcKinect.DebugSkeleton.render(data.Current.KinectSkeleton);


                //Debug de pos de manos
                bool showValues = (bool)GuiController.Instance.Modifiers["showValues"];
                if (showValues)
                {
                    BigLogger.log("RightHandPos", data.Current.RightHandPos);
                    BigLogger.log("LefttHandPos", data.Current.LefttHandPos);
                    BigLogger.renderLog();
                }



                //Dibujar cursores
                rightHandPointer.Position = data.Current.RightHandPos;
                leftHandPointer.Position  = data.Current.LefttHandPos;
                GuiController.Instance.Drawer2D.beginDrawSprite();
                rightHandPointer.render();
                leftHandPointer.render();
                GuiController.Instance.Drawer2D.endDrawSprite();
            }


            //Dibujar limites de escena
            center.render();
            bounds.render();
        }
        public override void render(float elapsedTime)
        {
            Device d3dDevice = GuiController.Instance.D3dDevice;

            //Tomar tracking de kinect
            TgcKinectSkeletonData data = tgcKinect.update();

            if (data.Active)
            {
                //Render de esqueleto
                tgcKinect.DebugSkeleton.render(data.Current.KinectSkeleton);

                //Analizar gestos
                Gesture gesture;
                if (gestureAnalizer.analize(data, out gesture))
                {
                    switch (gesture.Type)
                    {
                    //Gesto de abrir cajon
                    case GestureType.OpenZ:
                        //Buscar si fue cerca de algun cajon valido
                        foreach (GestureLocker cajon in cajones)
                        {
                            if (cajon.validateGesture(gesture))
                            {
                                cajon.open();
                                break;
                            }
                        }
                        break;

                    //Gesto de cerrar cajon
                    case GestureType.CloseZ:
                        //Buscar si fue cerca de algun cajon valido
                        foreach (GestureLocker cajon in cajones)
                        {
                            if (cajon.validateGesture(gesture))
                            {
                                cajon.close();
                                break;
                            }
                        }
                        break;
                    }
                }
            }


            //Dibujar cajones
            foreach (GestureLocker l in cajones)
            {
                l.update();
                l.HandleSphere.render();
                l.Mesh.render();
                l.Mesh.BoundingBox.render();
            }

            //Dibujar BoundingSphere de manos del esqueleto
            data.Current.RightHandSphere.render();
            data.Current.LeftHandSphere.render();

            //Dibujar mueble
            mueble.render();


            center.render();
            sceneBounds.render();
        }
Beispiel #5
0
        public override void render(float elapsedTime)
        {
            Device d3dDevice = GuiController.Instance.D3dDevice;


            TgcKinectSkeletonData data = tgcKinect.update();

            if (data.Active)
            {
                //render esqueleto kinect
                tgcKinect.DebugSkeleton.render(data.Current.KinectSkeleton);


                //Analizar gestos
                Gesture gesture;
                if (gestureAnalizer.analize(data, out gesture))
                {
                    switch (gesture.Type)
                    {
                    //Gesto de abrir cajon
                    case GestureType.OpenZ:
                        abrirCajon(gesture.Pos);
                        break;

                    //Gesto de cerrar cajon
                    case GestureType.CloseZ:
                        cerrarCajon(gesture.Pos);
                        break;
                    }
                }
            }


            foreach (TgcMesh m in _meshes)
            {
                m.render();
            }


            if (GuiController.Instance.D3dInput.keyPressed(Microsoft.DirectX.DirectInput.Key.Z))
            {
                foreach (CajonFocus cajon in cajones)
                {
                    cajon.open();
                }
            }
            if (GuiController.Instance.D3dInput.keyPressed(Microsoft.DirectX.DirectInput.Key.X))
            {
                foreach (CajonFocus cajon in cajones)
                {
                    cajon.close();
                }
            }


            foreach (CajonFocus cajon in cajones)
            {
                cajon.update();
                cajon.render();
            }



            /*
             * foreach (FocusSet c in _conjuntos)
             * {
             *  //c.animate();
             *  //c.Render();
             * }
             */



            center.render();
            bounds.render();
        }
        public override void render(float elapsedTime)
        {
            TgcModifiers modifiers = GuiController.Instance.Modifiers;
            Vector2      size      = (Vector2)modifiers.getValue("size");
            Vector3      position  = (Vector3)modifiers.getValue("position");

            collider.Center = position;
            collider.Radius = size.X;
            collider.Length = size.Y;

            collider.updateValues();

            if (TgcCollisionUtils.testSphereCylinder(collisionableSphere, collider))
            {
                collisionableSphere.setRenderColor(collisionColor);
            }
            else
            {
                collisionableSphere.setRenderColor(noCollisionColor);
            }

            if (TgcCollisionUtils.testAABBCylinder(collisionableAABB, collider))
            {
                collisionableAABB.setRenderColor(collisionColor);
            }
            else
            {
                collisionableAABB.setRenderColor(noCollisionColor);
            }

            if (TgcCollisionUtils.testCylinderCylinder(collisionableCylinder, collider))
            {
                collisionableCylinder.setRenderColor(collisionColor);
            }
            else
            {
                collisionableCylinder.setRenderColor(noCollisionColor);
            }

            if (pickingTimeLeft > 0)
            {
                pickingTimeLeft -= elapsedTime;
            }
            else
            {
                collider.setRenderColor(noCollisionColor);
            }

            if (GuiController.Instance.D3dInput.buttonPressed(TgcViewer.Utils.Input.TgcD3dInput.MouseButtons.BUTTON_LEFT))
            {
                TgcPickingRay pickingRay = new TgcPickingRay();
                pickingRay.updateRay();
                if (TgcCollisionUtils.testRayCylinder(pickingRay.Ray, collider))
                {
                    pickingTimeLeft = PICKING_TIME;
                    collider.setRenderColor(pickingColor);
                }
            }

            collider.render();
            collisionableSphere.render();
            collisionableAABB.render();
            collisionableCylinder.render();
        }
        public override void Render()
        {
            PreRender();

            var velocidadCaminar = 50f * ElapsedTime;

            //Calcular proxima posicion de personaje segun Input
            var d3dInput = TgcD3dInput.Instance;
            var moving   = false;
            var movement = new Vector3(0, 0, 0);

            //Adelante
            if (d3dInput.keyDown(Key.W))
            {
                movement.Z = velocidadCaminar;
                moving     = true;
            }

            //Atras
            if (d3dInput.keyDown(Key.S))
            {
                movement.Z = -velocidadCaminar;
                moving     = true;
            }

            //Derecha
            if (d3dInput.keyDown(Key.D))
            {
                movement.X = velocidadCaminar;
                moving     = true;
            }

            //Izquierda
            if (d3dInput.keyDown(Key.A))
            {
                movement.X = -velocidadCaminar;
                moving     = true;
            }
            //Salto
            if (d3dInput.keyDown(Key.Space))
            {
                movement.Y = velocidadCaminar;
                moving     = true;
            }
            //Agachar
            if (d3dInput.keyDown(Key.LeftControl))
            {
                movement.Y = -velocidadCaminar;
                moving     = true;
            }
            //Si hubo desplazamiento
            if (moving)
            {
                //Aplicar movimiento
                box.move(movement);
            }
            //Hacer que la camara siga al personaje en su nueva posicion
            camaraInterna.Target = box.Position;

            //Detectar colision con triangulo
            if (TgcCollisionUtils.testTriangleAABB(triangle[0].Position, triangle[1].Position, triangle[2].Position,
                                                   box.BoundingBox))
            {
                box.BoundingBox.render();
                triagleAABB.render();
            }
            //Detectar colision con el otro AABB
            if (TgcCollisionUtils.testAABBAABB(box.BoundingBox, box2.BoundingBox))
            {
                box.BoundingBox.render();
                box2.BoundingBox.render();
            }
            //Detectar colision con la esfera
            if (TgcCollisionUtils.testSphereAABB(sphere, box.BoundingBox))
            {
                box.BoundingBox.render();
                sphere.setRenderColor(Color.Red);
            }
            else
            {
                sphere.setRenderColor(Color.Yellow);
            }

            //Detectar colision con la obb
            if (TgcCollisionUtils.testObbAABB(obb, box.BoundingBox))
            {
                box.BoundingBox.render();
                obb.setRenderColor(Color.Red);
            }
            else
            {
                obb.setRenderColor(Color.Yellow);
            }

            //Dibujar
            box.render();
            box2.render();
            sphere.render();
            obb.render();

            //triangulo
            D3DDevice.Instance.Device.Transform.World = Matrix.Identity;
            D3DDevice.Instance.Device.VertexFormat    = CustomVertex.PositionColored.Format;
            D3DDevice.Instance.Device.DrawUserPrimitives(PrimitiveType.TriangleList, 1, triangle);

            PostRender();
        }
Beispiel #8
0
        public override void render(float elapsedTime)
        {
            Device d3dDevice = GuiController.Instance.D3dDevice;

            //Tomar tracking de kinect
            TgcKinectSkeletonData data = tgcKinect.update();

            if (data.Active)
            {
                //Render de esqueleto
                tgcKinect.DebugSkeleton.render(data.Current.KinectSkeleton);

                if (Vector3.Length(data.Current.CenterPos - sceneCenter) <= 30f)
                {
                    sceneCenterBox.Color = Color.Red;
                    sceneCenterBox.updateValues();

                    //Analizar gestos
                    Gesture gesture;
                    if (gestureAnalizer.analize(data, out gesture))
                    {
                        switch (gesture.Type)
                        {
                        case GestureType.OpenLeft:
                            if (door.validateGesture(gesture))
                            {
                                door.open();
                            }
                            break;

                        case GestureType.OpenRight:
                            if (door.validateGesture(gesture))
                            {
                                door.close();
                            }
                            break;
                        }
                    }
                }
                else
                {
                    sceneCenterBox.Color = Color.Blue;
                    sceneCenterBox.updateValues();
                }
            }



            //Dibujar puerta
            door.update();
            door.Mesh.render();

            //Dibujar BoundingSphere de manos del esqueleto
            data.Current.RightHandSphere.render();
            data.Current.LeftHandSphere.render();

            //Dibujar mueble
            mueble.render();

            sceneBounds.render();
            sceneCenterBox.render();
        }
        public override void Render()
        {
            PreRender();

            var size     = (Vector2)Modifiers.getValue("size");
            var position = (Vector3)Modifiers.getValue("position");

            collider.Center = position;
            collider.Radius = size.X;
            collider.Length = size.Y;

            collider.updateValues();

            if (TgcCollisionUtils.testSphereCylinder(collisionableSphere, collider))
            {
                collisionableSphere.setRenderColor(collisionColor);
            }
            else
            {
                collisionableSphere.setRenderColor(noCollisionColor);
            }

            if (TgcCollisionUtils.testAABBCylinder(collisionableAABB, collider))
            {
                collisionableAABB.setRenderColor(collisionColor);
            }
            else
            {
                collisionableAABB.setRenderColor(noCollisionColor);
            }

            if (TgcCollisionUtils.testCylinderCylinder(collisionableCylinder, collider))
            {
                collisionableCylinder.setRenderColor(collisionColor);
            }
            else
            {
                collisionableCylinder.setRenderColor(noCollisionColor);
            }

            if (pickingTimeLeft > 0)
            {
                pickingTimeLeft -= ElapsedTime;
            }
            else
            {
                collider.setRenderColor(noCollisionColor);
            }

            if (TgcD3dInput.Instance.buttonPressed(TgcD3dInput.MouseButtons.BUTTON_LEFT))
            {
                var pickingRay = new TgcPickingRay();
                pickingRay.updateRay();
                if (TgcCollisionUtils.testRayCylinder(pickingRay.Ray, collider))
                {
                    pickingTimeLeft = PICKING_TIME;
                    collider.setRenderColor(pickingColor);
                }
            }

            collider.render();
            collisionableSphere.render();
            collisionableAABB.render();
            collisionableCylinder.render();

            PostRender();
        }