Your SlideShare is downloading. ×
Greenfoot & Kinect
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Greenfoot & Kinect

1,444
views

Published on

Introducción a manipular de Kinect usando Greenfoot.

Introducción a manipular de Kinect usando Greenfoot.

Published in: Education

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,444
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
12
Comments
0
Likes
1
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Greenfoot & KinectEduardo H. Calvillo Gámez
  • 2. Primeros Pasos Configurar Greenfoot para que se comunique con Kinect  http://www.greenfoot.org/doc/kinect/index.html Ejecutar kinectserver y dejarlo corriendo mientras se compila y ejecuta el programa
  • 3. Primeros Pasos Obtener el escenario básico para Kinect  Clase KinectWorld – subclase de World  Clases  Joint  KinectClient  Point3D  UserData  ZIP en página web del curso O agregar manualmente cada clase
  • 4. Clases Revisar API  Doble clic sobre clase  Cambiar a ver documentación KinectWorld  Métodos para que nuestro mundo pueda interactuar con Kinect Joint  Clase para identificar coyunturas del esqueleto KinectClient  Realiza la interacción entre Kinect y Greenfoot Point3D  Un punto en 3D UserData  Clase que almanacena los datos del usuario frente a la cámara
  • 5. Ejercicio 1Utilizando la cámara
  • 6. Lo Básico Necesitamos obtener lo que este monitoreando la cámara y desplegarlo en el mundo Revisando la API de Greenfoot básica, necesitamos una imagen para desplegar en el mundo. Clase KinectWorld  Método getThumbnail()
  • 7. Instrucciones Crear un escenario nuevo  Kinect1 Crear una subclase de Actor que se llame “Foto”  Las clases de tipo Actor son los que aparecen e interactúan en el mundo  Sin imagen Cuando la clase actúe  Nos traemos la imagen que este captando la cámara  getWorld().getThumbnail()  Necesitamos hacer un casting para que el mundo que nos traigamos reconozca los métodos de la subclase y no de la clase padre  ((KinectWorld)getWorld).getThumbnail()  Y se lo asignamos a una imagen de tipo GreenfootImage  La asignamos a la clase al Actor
  • 8. Códigopublic void act(){ GreenfootImage img = ((KinectWorld)getWorld()).getThumbnail(); setImage(img); }
  • 9. Instrucciones (2) No interactuamos directamente con la clase KinectWorld Creamos una subclase  Kinect1World  Sin imagen  Creamos un objeto de tipo Foto  Agregamos el objeto al centro del mundo
  • 10. Código (2)public Kinect1World() { Foto f = new Foto(); addObject(f,getWidth()/2,getHeight()/2); }
  • 11. Ejercicio 2Agregando más actores
  • 12. Clase Etiqueta (Label) Todo lo que aparece en el mundo de greenfoot debe de ser una imagen El texto lo debemos convertir a una imagen La clase Etiqueta, que nosotros tenemos que implementar, hace el trabajo  Disponible por comunidad Revisar API de GreenfootImage  Constructor
  • 13. Instrucciones Crear una subclase de Actor  Label Copiar el código que se muestra a continuación  Modificar al gusto
  • 14. Código (3) public Label(String text){ setText(text, 20);}public void setText(String text, int size){ setImage(new GreenfootImage( text, size, java.awt.Color.BLACK, new java.awt.Color(0,0,0)));}
  • 15. Instrucciones (4) En el mundo Kinect1World  Agregar un objeto de tipo Etiqueta Los objetos tienen precedencia en el orden que los ponemos en la pantalla como una Pila  El que ponemos primero, se queda atrás.
  • 16. Código (4)Label l = new Label("Hecho por EHCG");addObject(l, 100,100);
  • 17. Instrucciones (5) Crear una nueva subclase de Actor  Pingu con la imagen de Tux  Su única acción es dar vueltas Quitar el objeto de tipo Foto del mundo Implementar el método act() en Kinect1World La primera línea tiene que ser  super.act(); para que se actualice el mundo de Kinect
  • 18. Instrucciones (5.2) Cambiar el fondo a negro  getBackground().setColor(java.awt.Color.BLACK);  getBackground().fill(); Agregar objetos de tipo Pingu en posiciones al azar  int x // contiene un número al azar del tamaño del fondo;  addObject (new Pingu(), x, 100); Agregar la silueta del usuario de Kinect  getCombinedUserImage();
  • 19. Código (5)GreenfootImage userImage = getCombinedUserImage(); userImage.scale(getWidth(), getHeight()); getBackground().drawImage(userImage, 0, 0);
  • 20. Instrucciones (6) Editar Pingu para que se mueva por el mundo Agregar una propiedad a Pingu, si es 1 esta vivo, si es 0, esta muerto y no se mueve. En el Mundo Kinect1World  Agregar una propiedad privada de tipo imagen, donde vamos a guardar la imagen que esta detectando el Kinect.  Asignar un método para obtener la imagen
  • 21. Instrucciones (6.2) Checar si los Pingus chocan con el usuario, si chocan, borrarlos. El usuario es una imagen, entonces únicamente se checa si tenemos alguna intersección Y tenemos que checar el alfa del color sea mayor a 0.
  • 22. Código (6) En act()  if (!colision(x,y)){  getWorld().removeObject(this);  }
  • 23. Código (6.2)Kinect1World mundo = (Kinect1World)getWorld(); GreenfootImage imagenUsuario = mundo.getImagenGuardada();if (imagenUsuario!=null){ if ( ix < imagenUsuario.getWidth() && iy < imagenUsuario.getHeight() && imagenUsuario.getColorAt(ix, iy).getAlpha() > 0 )

×