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.
Tras una breve introducción para explicar qué es la realidad aumentada, nos meteremos de lleno con el SDK, mostrándote paso por paso cómo empezar con él. Los asistentes aprenderán a distinguir entre los diferentes tipos de tracking, esencial para desarrollar cualquier proyecto de Realidad Aumentada y todos los tipos de contenidos que se pueden mostrar, así como la arquitectura y cómo funciona.
Después pasaremos a la integración de la realidad aumentada en aplicaciones con algunos ejemplos, centrándonos tanto en multiplataforma con AREL (javascript) como nativo en Android.
Seguidamente repasaremos las distintas gafas inteligentes para las que puedes desarrollar apps de Realidad Aumentada, empezando por Google Glass y continuando con las Epson Moverio BT-200 y las Vuzix M100, explicando las diferencias de hardware de cada una, así como la forma de interactuar con estos dispositivos ya que son bastante diferentes entre sí. Tras explicar cómo es la integración de tu app de realidad aumentada en ellas, por último, conoceremos otros dispositivos que usados en combinación con las smart glasses, pueden usarse para interactuar con los objetos virtuales y así hacer tu proyecto más inmersivo.
3. 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
4. ¿Qué es la Realidad Aumentada?
Droidcon Madrid 2014
5. ¿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
6. Casos de Uso de Realidad Aumentada
Macro Micro
Exterior Objetos HumanosInterior
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)
21. 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
22. Google Glass - Detección
if (Build.BRAND.equalsIgnoreCase("Google")
&& Build.PRODUCT.contains("glass"))
{
isWearable = Wearable.GLASS;
}
23. 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
–
– Guías de estilo
– Eliminar funcionalidad innecesaria
– Batería externa
24. 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);
}
25. 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
28. 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)
29.
30. 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
32. 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
34. 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);
35. 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);
36. 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));
37. 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);
39. 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:
–
– Aplicación en smartphone como control
remoto
40. 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/
41. Wearables para usar con SmartGlasses - Nod
https://hellonod.com/
• Sensores
• Touchpad
• Gestos
• Puntero
• Emulador
42. Wearables para usar con SmartGlasses - Remotte
Bluetooth Low-Energy
Touchpad
Accelerometer
Gyroscope
Temperature sensor
Barometer
15 programable leds
2 programable buttons
Buzzer
Vibrator
43. 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')
}
}
...
}
Render: pintar las imágenes en pantalla
Tracking: reconocer el objeto y seguir su posición en el espacio, averiguar la posición de la cámara en función de lo que se “ve”
Captura: Obtener las imágenes desde la cámara
JS never comes alone => GUI in HTML
Android 4.4+ => Chromium
- AREL: interfaz javascript (libreria)
- XML contenidos estáticos, puede generarse con una librería PHP o directamente XML
A la hora de conceptualizar tu aplicación hay que definir qué tipo de tracking necesitamos para el proyecto
Display
High resolution display is the equivalent of a 25 inch high definition screen from eight feet away. Actually 640x360 for development purposes.
Camera
Photos - 5 MP
Videos - 720p
Audio
Bone Conduction Transducer
Connectivity
Wifi - 802.11b/g
Bluetooth
Storage
12 GB of usable memory, synced with Google cloud storage. 16 GB Flash total.
Battery
One day of typical use. Some features, like video calls and video recording, are more battery intensive. On AR around 15-30 minutes.
Charger
Included Micro USB cable and charger.
Processor
TEXAS INSTRUMENTS OMAP4430 processor running at an unspecified frequency and is paired with about 682MB RAM (out of a likely 1GB).
Sensors
Invensense MPU6050 = 3axis gyro + 3 axis accelerometer.
Asahi Kasei AKM8975 = 3axis geomagnetic sensor(compass).
Wink sensor
Proximity sensor
No GPS, location taken from wifi or paired device
Interaction
Touchpad on right side
Voice commands
Wink?
Camera button
Triggers: ok glass, recognize this -> abre el modo escaneo y detecta el objeto para mostrarte informacion
Contextual: Juego hundir la flota con AR -> ok glass, F5, para disparar en esa posición
Escucha libre: complicado, escribir texto o reconocer comandos propios. Implementar asistente virtual, requiere gramáticas y nociones avanzadas
Escucha activa: como “ok google” en Nexus 5 para buscar o abrir google now