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

ARCore is magic

ARCore is magic

ARCore is the Google library that allows to build new augmented reality experiences that seamlessly blend the digital and physical worlds. We will see all the features supported by ARCore through the development of a "Magic" App

Michelantonio Trizio

October 06, 2018
Tweet

More Decks by Michelantonio Trizio

Other Decks in Technology

Transcript

  1. About me GDG Bari community lead Computer Science Engineer CTO

    @ Wideverse Android Developers Italy Member
  2. 5 Intro Augmented Reality AR can bring anything to you.

    It adds computer-generated information and objects to your everyday world.
  3. 12 Who can run ARCore Applications Proprietary and Confidential ARCore

    is compatible with 100+ million devices (and growing!) ARCore Overview Supported in China too!
  4. 14 Motion Tracking Proprietary and Confidential As your mobile device

    moves through the world, ARCore combines visual data from the device’s camera and IMU to compute the position and orientation of the phone. Image ARCore Overview
  5. 15 Environment Understanding Proprietary and Confidential ARCore understands the physical

    structure of the environment, detecting horizontal surfaces, like tables and desks, and makes these surfaces available to your app as planes. Image ARCore Overview
  6. 16 Lighting Estimation Proprietary and Confidential ARCore can detect information

    about the lighting of its environment so you can render your virtual objects under the same conditions as the environment around them. Image ARCore Overview
  7. Augmented Images You’ve wanted to have the ability to trigger

    AR experiences off of real-world images Image ARCore Overview
  8. Anatomy of an app ➔ ARCore Device ➔ Environmental Light

    ➔ Plane Detector ➔ Plane Visualizer ➔ Our custom Controller ➔ Event system ➔ 2D Canvas ➔ Buttons
  9. Session if (Session.Status != SessionStatus.Tracking) { const int lostTrackingSleepTimeout =

    15; Screen.sleepTimeout = lostTrackingSleepTimeout; } else { Screen.sleepTimeout = SleepTimeout.NeverSleep; }
  10. Plane Session.GetTrackables<DetectedPlane>(m_NewPlanes, TrackableQueryFilter.New); for (int i = 0; i <

    m_NewPlanes.Count; i++) { GameObject planeObject = Instantiate(DetectedPlanePrefab, Vector3.zero, Quaternion.identity, transform); planeObject.GetComponent<DetectedPlaneVisualizer>().Initialize(m_NewPlanes[i]); }