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

ARKIT

S-cubism
November 10, 2017

 ARKIT

S-cubism

November 10, 2017
Tweet

More Decks by S-cubism

Other Decks in Technology

Transcript

  1. What is ARKIT ARKIT is artificial reality api that uses

    gyroscope and accelerometers to measure distance of change between distinct images or objects with camera.
  2. How vision works SLAM (Simultaneous Localization and Mapping) 1.identifies features

    within that image. 2.It then takes another picture, and again identifies the features. 3.It then compares the first image to the second, and does a number of calculations to determine the change in the relationships between features.
  3. Known problems and limitations - Can’t track things with little

    detail - Can’t automatically detect walls for hit detection - Shiny objects cause incorrect measurements - Mapped areas are squares. Not Triangles or advanced shapes
  4. Google Tango (transition to camera only AR Core) Special phone

    with 2nd camera Uses IR to obtain “flight of points”
  5. Microsoft Hololens - Two Kinect-like depth cameras on it (facing

    forward-left and forward-right), - Continually scan the environment of the user. - These cameras create three-dimensional geometric representations of objects in the environment. - IMU (internal measurement unit) accelerometers and gyroscopes
  6. ARKit compatible devices The devices that use A9, A10 and

    A11 chips running IOS11 • iPhone 6s and 6s Plus • iPhone 7 and 7 Plus • iPhone SE • iPad Pro (9.7, 10.5 or 12.9) – both first-gen and 2nd-gen • iPad (2017) • iPhone 8 and 8 Plus • iPhone X
  7. func worldPositionFromScreenPosition ... ... // Two possible tests: (horizontal only)

    sceneView.hitTest(position ...) sceneView.hitTestWithFeatures….. … self.updatePlane(anchor: planeAnchor)
  8. func moveVirtualObjectToPosition …. guard let object = virtualObject, let cameraTransform

    = session.currentFrame?.camera.transform else { return } recentVirtualObjectDistances.removeAll() let cameraWorldPos = SCNVector3.positionFromTransform(cameraTransform) var cameraToPosition = pos - cameraWorldPos // Limit the distance of the object from the camera to a maximum of 10 meters. cameraToPosition.setMaximumLength(10) object.position = cameraWorldPos + cameraToPosition if object.parent == nil { sceneView.scene.rootNode.addChildNode(object) } }