ARKit: Augmented Reality made simpleMaurizio Moriconi
CODEMOTION MILAN - SPECIAL EDITION 10 – 11 NOVEMBER 2017
Augmented Reality (AR)Virtual Reality + Reality Reality
Uso della camera o di occhiali per “aumentare” la realtà con oggetti 3D virtuali
Requisiti ARKit• iPhone SE• iPhone 6s• iPhone 6s Plus• iPhone 7• iPhone 7 Plus• iPhone 8• iPhone 8 Plus• iPhone X• iPad 2017• iPad Pro 9.7 pollici• iPad Pro 10.5 pollici• iPad Pro 12.9 pollici
Tracking
• Tracciamento in real time della posizione del dispositivo nel mondo reale!
• Visual-inertial odometry (VIO)
• Nessun setup “esterno” (no marker)
ARSessionFramework basato su sessione, che gira a 60 frames al secondo!
La sessione può essere lanciata, messa in pausa, reimpostata:
• ARSessionObserver per gestire i cambi di stato della sessione
• ARSessionDelegate per ricevere i frames catturati e aggiornamenti sugli anchor
ARConfigurationTre configurazioni:
• AROrientationTrackingConfiguration
• ARWorldTrackingConfiguration
• ARFaceTrackingConfiguration
Abilita anche la light estimation, e il plane detection
ARFrameLa sessione cattura dei frame che contengono
• l’immagine catturata
• informazioni sul tracking
• informazioni sulla scena: tracking points e condizioni di luce
ARAnchorUn anchor è punto posizionato ed orientato nel mondo reale.
ARKit si occupa di mantenere fissa la posizione e l’orientamento di un anchor se l’utente muove la camera.
E’ necessario aggiungere gli anchor nella ARSession.
Feature PointsPunti estratti dall’analisi dei frames!
Possibili problematiche nell’estrazione:
• Poca luce• Poche “texture”• Movimenti veloci
Plane detectionDa un insieme di feature points è possibile ricostruire un piano.
Per ora solo orizzontale :(
Se è abilitato il planeDetection in automatico vengono aggiunti degli ARPlaneAnchor!
E’ possibile fare plane merging!
Hit TestingIntercetta un punto nella scena reale
Utilizza le informazioni della scena
I risultati sono ordinati per distanza (dal più “vicino” al più “lontano”)
Ci sono diversi tipi di Hit-test
Light estimationSi attiva dalla configurazione (lightEstimationEnabled)
E’ possibile riconoscere:
• ambientIntensity (1000 neutrale)
• ambientColorTemperature (6500 luce “bianca”)