live direct or indirect view of a physical, real-world environment whose elements are augmented (or supplemented) by computer-generated sensory input such as sound, video, graphics or GPS data. -> It’s important to understand the “context”.
and took a picture, CC BY-SA 3.0, https://commons.wikimedia.org/w/index.php?curid=23501409 Virtual objects Context: - exact, realtime location and direction of the mobile device - camera characteristics - 3D model of the virtual objects - 3D model of the real objects - Light model of the real world
and direction of the mobile device - camera characteristics - 3D model of the virtual objects - 3D model of the real objects - Light model of the real world
and direction of the mobile device - camera characteristics - 3D model of the virtual objects - 3D model of the real objects - Light model of the real world
and direction of the mobile device - camera characteristics - 3D model of the virtual objects - 3D model of the real objects - Light model of the real world
and direction of the mobile device - camera characteristics - 3D model of the virtual objects - 3D model of the real objects - Light model of the real world
and direction of the mobile device - camera characteristics - 3D model of the virtual objects - 3D model of the real objects - Light model of the real world
detects the range from the device to surfaces within 0.5 – 4 meters • It generates a point cloud which can be used to generate a mesh or enhance AR-Apps DEMO
exact, realtime location and direction of the mobile device - camera characteristics - 3D model of the virtual objects - 3D model of the real objects - Light model of the real world
Tango recognizes or “learns” significant “markers” of an areas and exports them into an ADF (“Area Description File”) • A Tango app may load an ADF file and try to match visible markers against the ADF file • After “matching” on an ADF file, Tango can determine it’s position in local ADF coordinates
light = new DirectionalLight(1, 0.2, -1); light.setColor(1, 1, 1); light.setPower(0.8f); light.setPosition(3, 2, 4); getCurrentScene().addLight(light); // Set-up a material: green with application of the light and // instructions. Material material = new Material(); material.setColor(0xff009900); try { Texture t = new Texture("instructions", R.drawable.instructions); material.addTexture(t); } catch (ATexture.TextureException e) { e.printStackTrace(); } material.setColorInfluence(0.1f); material.enableLighting(true); material.setDiffuseMethod(new DiffuseMethod.Lambert()); // Build a Cube and place it initially in the origin. mObject = new Cube(CUBE_SIDE_LENGTH); mObject.setMaterial(material); mObject.setPosition(0, 0, -3); mObject.setRotation(Vector3.Axis.Z, 180); getCurrentScene().addChild(mObject);
calculations are hard - 3D is tricky sometimes - which API to choose? - Motion Tracking works really well - ”closed” APIs make life hard - Environments change more then we recognize - Automated Testing is nearly impossible / debugging is tricky It is a LOT of fun….