Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Realidad Aumentada más allá de Glass

Realidad Aumentada más allá de Glass

En esta presentación aprenderás los pasos básicos para crear aplicaciones de realidad aumentada en Android usando el Metaio SDK, disponible tanto para ordenadores, dispositivos móviles y tablets como para wearables que lleven android.

Fernando F. Gallego

July 11, 2014
Tweet

More Decks by Fernando F. Gallego

Other Decks in Programming

Transcript

  1. Metaio https://www.youtube.com/watch?v=Jz3XlqcfQ Tecnologías habilitadoras •  AREngine •  Thermal Touch 12

    Años De experienicia en realidad aumentada y computer vision Optimizado Para dispositivos de última generación El Mejor en su clase Software para Profesionales •  Metaio Suite •  Metaio Creator •  Metaio SDK •  Metaio Cloud La más grande distribución de AR •  Cada catálogo de IKEA •  Victoria’s Secret •  Manuales de vehículos Audi
  2. ¿Qué es Realidad Aumentada? • Visualización de datos sobre el mundo

    real • Interfaz de usuario • Cámara, pantalla, sensores de movimiento y orientación • Tiempo real • ¡No confundir con Realidad Virtual! (Oculus Rift no es realidad aumentada) #arwearables
  3. Casos de Uso de Realidad Aumentada Macro Micro Exterior Objetos

    Humanos Interior Navegación (Ciudad, Centro comercial) Información virtual (POI en la Ciudad & Edificios, Dispositivos, Cara/Cuerpo) Diseño (arquitectura, interior, objetos 3D) Enseñanza / Educación (visualización, guías visuales) Juegos (Juegos de área extensa, Juegos en televisión, …) Traducción (texto, signos, menús,..) Probador virtual (compra online) Interfaz Virtual (domótica, dispositivos)
  4. Metaio SDK •  Desarrollo de aplicaciones con Realidad Aumentada • 

    Multiplataforma –  Android –  iOS –  Windows –  MacOS •  Wearables con cámara y pantalla –  Google Glass –  EPSON Moverio BT-200 –  Vuzix #arwearables
  5. HTML5 layer (GUI) Interfaz Javascript (AREL) AREL Metaio SDK (3D

    renderer, tracking, camera capturing/drawing)
  6. Tipos de Tracking #arwearables Markerless Tracking Instant/SLAM Fiducial SensorBased 3D

    (3DMap) . 2D/Extended 2D 2D Gravity 2D Gravity + SLAM 3D SLAM QR-/Barcode ID Marker Picture Marker GPS Orientation LLA Marker Dummy 3D (Edge based) Face
  7. Contenidos #arwearables 2D Geometry 3D (*.fbx, *.md2, *.obj) Billboard (text,

    image, …) Radar Image (*.jpg, *.png) Video (*.3G2) 360°View
  8. ¡Hola Mundo! - Java // Getting a file path for

    tracking configuration XML file! String trackingConfigFile = AssetsManager.getAssetPath(getApplicationContext(), "TutorialHelloWorld/ Assets/TrackingData_MarkerlessFast.xml");! ! // Assigning tracking configuration! boolean result = metaioSDK.setTrackingConfiguration(trackingConfigFile); ! MetaioDebug.log("Tracking data loaded: " + result); ! ! // Getting a file path for a 3D geometry! String metaioManModel = AssetsManager.getAssetPath(getApplicationContext(), "TutorialHelloWorld/Assets/ metaioman.md2"); " " "! if (metaioManModel != null) ! {! "// Loading 3D geometry! "IGeometry geometry = metaioSDK.createGeometry(metaioManModel);! "if (geometry != null) ! "{! " "// Set geometry properties! " "geometry.setScale(4f);! "}! "else! " "MetaioDebug.log(Log.ERROR, "Error loading geometry: "+metaioManModel);! }!
  9. Google Glass Image source: http://www.google.com/glass/ •  Pantalla 640x360 hdpi • 

    Cámara 5MP •  2GB RAM (último modelo) •  Gyro 3 ejes + Accelerómetro 3 ejes + Brújula 3 ejes •  Sin GPS (ubicación del dispositivo) •  Touchpad, micrófono •  Wifi, Bluetooth LE
  10. Google Glass •  Pros: –  Manos libres –  Pantalla siempre

    visible –  Vista en primera persona –  Translúcido •  Contras: –  Sin pantalla táctil o cursor –  Calentamiento –  Look and feel no es estándar –  Pantalla pequeña –  Poca batería •  Cómo afecta: –  Libertad para manipular objetos –  No distrae –  Mas inmersivo –  Apagar la cámara •  Cómo solucionar: –  GestureDetector para el touchpad –  J –  Guías de estilo –  Eliminar funcionalidad innecesaria –  Batería externa
  11. Google Glass – Leer como un teclado direccional https://developers.google.com/glass/develop/gdk/touch @Override!

    public boolean onKeyDown(int keycode, KeyEvent event) {! if (keycode == KeyEvent.KEYCODE_DPAD_CENTER) {! // user tapped touchpad, do something! return true;! } else if (keycode == KeyEvent.KEYCODE_CAMERA) {! // camera button! return true;! } else if (keycode == KeyEvent.KEYCODE_BACK) {! // back button! return true;! }! ...! super.onKeyDown(keyCode, event);! }!
  12. Google Glass - GestureDetector https://developers.google.com/glass/develop/gdk/touch GestureDetector gestureDetector = new GestureDetector(context);!

    //Create a base listener for generic gestures! gestureDetector.setBaseListener(new GestureDetector.BaseListener() {! @Override! public boolean onGesture(Gesture gesture) {! if (gesture == Gesture.TAP) {! // do something on tap! return true;! }! return false;! }! });! gestureDetector.setFingerListener(new GestureDetector.FingerListener() {! @Override! public void onFingerCountChanged(int previousCount, int currentCount) {! // do something on finger count changes! }! });! gestureDetector.setScrollListener(new GestureDetector.ScrollListener() {! @Override! public boolean onScroll(float displacement, float delta, float velocity) {! // do something on scrolling! }! });! •  LONG_PRESS •  SWIPE_DOWN •  SWIPE_LEFT •  SWIPE_RIGHT •  SWIPE_UP •  TAP •  THREE_LONG_PRESS •  THREE_TAP •  TWO_LONG_PRESS •  TWO_SWIPE_DOWN •  TWO_SWIPE_LEFT •  TWO_SWIPE_RIGHT •  TWO_SWIPE_UP •  TWO_TAP
  13. GoogleGlass - Crosshair •  Aproximación: –  Añadir un punto de

    mira en el centro y simular clicks •  Ideal: Tocar los objetos virtuales directamente con el dedo. –  Cámara 3D (profundidad) –  Metaio Thermal Touch (huella de calor)
  14. Google Glass - Voz •  Triggers –  Para lanzar la

    app mediante “Ok glass” o el menú. •  Comandos limitados para publicar •  Necesita "com.google.android.glass.permission.DEVELOPMENT” para comandos propios •  Contextual –  Para abrir un menú dentro de la aplicación mediante “Ok glass” •  Escucha libre –  Mediante el RecognizerIntent.ACTION_RECOGNIZE_SPEECH de Android –  startActivityForResult •  Escucha activa –  Tipo “Google Now” pero sin soporte en android https://developers.google.com/glass/develop/gdk/voice
  15. EPSON Moverio BT-200 https://moverio.epson.biz/ •  Pantalla 960x540 mdpi •  Cámara

    5MP •  1GB RAM •  Gyro 3 ejes + Accelerómetro 3 ejes + Brújula 3 ejes •  GPS •  Touchpad externo •  Wifi, Bluetooth 3.0 •  Android 4.0.4 •  Miracast
  16. EPSON Moverio •  Pros: –  Pantalla siempre visible –  Vista

    estéreo en primera persona –  Translúcido –  Android 4.x –  Touchpad externo •  Contras: –  Touchpad externo en una mano –  Pantalla en línea de visión •  Cómo afecta: –  No distrae –  Mas inmersivo con imágenes en 3D –  Apagar la cámara –  Entorno familiar –  Se puede interactuar •  Cómo solucionar: –  Sin solución –  Casos de uso que no requieran moverse
  17. EPSON Moverio BT-200 - Fullscreen •  No tiene modo inmersivo

    de Android KitKat •  Window flag propio para quitar la Navigation Bar WindowManager.LayoutParams winParams = window.getAttributes();! winParams.flags |= WindowManager.LayoutParams.FLAG_SMARTFULLSCREEN;! winParams.flags |= 0x80000000;! window.setAttributes(winParams);!
  18. EPSON Moverio BT-200 – Stereo •  Librería de Moverio con

    funcionalidades •  Activar modo 2D/3D DisplayControl dc = new DisplayControl(this);! dc.setMode(DisplayControl.DISPLAY_MODE_3D,true);!
  19. EPSON Moverio BT-200 – Stereo •  Activar stereo rendering en

    Metaio SDK en Java metaioSDK.setStereoRendering(true);! // Enable see through mode (e.g. on glasses)! metaioSDK.setSeeThrough(true);! metaioSDK.setSeeThroughColor(0, 0, 0, 255);! •  O con AREL arel.Scene.setStereoRendering(true);! // Enable see through mode (e.g. on glasses)! arel.Scene.setSeeThrough(true);! arel.Scene.setSeeThroughColor(new arel.Vector4D(0, 0, 0, 255));!
  20. EPSON Moverio BT-200 – Moverio SDK •  Alternar entre el

    sensor del mando o de las gafas SensorControl sc = new SensorControl(this);! ! sc.setMode(SensorControl.SENSOR_MODE_CONTROLLER);! sc.setMode(SensorControl.SENSOR_MODE_HEADSET);! !
  21. Vuzix M-100 http://www.vuzix.com/developer/ •  Pantalla 852x480 small ldpi •  Cámara

    HD •  1GB RAM •  Gyro 3 ejes + Accelerómetro 3 ejes + Brújula 3 ejes •  GPS •  micrófono •  Wifi, Bluetooth 4.0 •  Android 4.0.4
  22. Vuzix M-100 •  Pros: –  Ajustable –  Manos libres – 

    Control con gestos en 3D •  Contras: –  ldpi, LDPI!!! –  4 botones en el lateral •  Cómo afecta: –  Fuera de la línea de visión –  Permite movilidad –  Interactuar con objetos con las manos •  Cómo solucionar: –  L –  Aplicación en smartphone como control remoto
  23. Wearables para usar con SmartGlasses - Myo •  Myo – 

    Lee impulsos electromagnéticos de los músculos –  Entrenar con gestos –  Sensores de movimiento https://www.thalmic.com/en/myo/
  24. Wearables para usar con SmartGlasses - Nod https://hellonod.com/ •  Sensores

    •  Touchpad •  Gestos •  Puntero •  Emulador
  25. Wearables para usar con SmartGlasses - Remotte Bluetooth Low-Energy Touchpad

    Accelerometer Gyroscope Temperature sensor Barometer 15 programable leds 2 programable buttons Buzzer Vibrator
  26. Gradle •  Usar flavors para cada wearable –  Incluir librerías

    propias –  Introducir constante en el BuildConfig productFlavors { glass { applicationId "com.metaio.junaio.glass" minSdkVersion 19 targetSdkVersion 19 buildConfigField "String", "TYPE", "\"GLASS\"" dependencies { compile files('libs/gdk.jar') } } ... }