Avec Windows Phone 7.5 (Mango) le développeur a maintenant accès au flux vidéo de la caméra, et à l'intégralité des capteurs de mouvements disponible sur le téléphone. Dans cette session nous expliquerons les concepts mathématiques de base, ainsi que les APIs Silverlight et XNA qu'il faut connaitre pour ajouter des vues "augmentées" dans vos applications, avec comme exemples d'applications: - détecter des tags ou des codes barres, et éventuellement afficher des informations par dessus - superposer des informations géolocalisées sur la vue caméra - incruster des objets en 3d dans une vidéo Cette session est une introduction et ne demande donc qu'une connaissance de base du développement, les principes étant applicables pour la plupart sur d'autres plateformes, mobiles ou non.
2. Initiation à la réalité
augmentée dans Windows
Phone 7.5 (mango)
7/2/2012
Pierre Cauchois (@pierreca)
Stéphane Sibué (Softélite)
Fabien Décret (Adénéo)
3. Agenda
Les usages de la réalité augmentée
Les APIs utiles
Le mode viewfinder en détail
Le mode « détection de tags » en détail
Les toolkits pour vous aider
4. Usages de la réalité augmentée
Découverte de points d’intérêt
Orientation, guidage « naturel »
Affichage d’informations complémentaires
Suite à une détection de tag / d’objet
Informations géolocalisées
Jeux
8. Les transformations successives
Camera /
Model World Projection Screen
View
space space space space
space
World View Projection Viewport
Matrix Matrix Matrix
9. Les APIs utiles
Se localiser (GPS) : GeoCoordinateWatcher
Comprendre l’orientation du téléphone: Motion
Afficher le flux de la caméra : PhotoCamera
Projeter un objet sur l’écran : les RenderTransform (Silverlight)
et les Matrix (XNA)
10. Se localiser (GPS++)
GeoCoordinateWatcher gcw = new GeoCoordinateWatcher(GeoPositionAccuracy.High);
gcw.MovementThreshold = 10;
gcw.StatusChanged += new EventHandler<GeoPositionStatusChangedEventArgs>(gcw_StatusChang
ed);
gcw.PositionChanged += new EventHandler<GeoPositionChangedEventArgs<GeoCoordinate>>(gcw_
PositionChanged);
gcw.Start();
void gcw_StatusChanged(object sender, GeoPositionStatusChangedEventArgs e)
{
// Do something!
}
void gcw_PositionChanged(object sender, GeoPositionChangedEventArgs<GeoCoordinate> e)
{
// Do something!
}
11. Comprendre l’orientation du téléphone
Motion motion = new Motion();
motion.TimeBetweenUpdates = TimeSpan.FromMilliseconds(66); // 15 FPS
motion.CurrentValueChanged += new EventHandler<SensorReadingEventArgs<MotionReading>>(mo
tion_CurrentValueChanged);
try
{
motion.Start();
}
catch (Exception ex)
{
MessageBox.Show("Impossible de démarrer l'API Motion! " + ex.Message);
}
12. Afficher la caméra à l’écran
<Rectangle>
<Rectangle.Fill>
<VideoBrush x:Name="viewfinderBrush" />
</Rectangle.Fill>
</Rectangle>
PhotoCamera camera = new PhotoCamera(CameraType.Primary);
viewfinderBrush.SetSource(camera);
15. Vous voulez développer une appli Windows Phone ? Inscrivez-vous !
Profitez d’un programme d’accompagnement pour développeurs, à la carte et sans engagement
– Un guide vous contacte et vous accompagne personnellement
– Il met à votre disposition des ressources : accès gratuits* Marketplace, prêts/dons* de téléphone…
– Il vous propose du coaching technique et design
– Il vous aide à rendre visible votre application en ligne et à des événements
*Dans la limite des quantités disponibles