WWDC2017:ARKit初探

一.【Session602】Introducing ARKit:Augmented Reality for iOS

二. 官网API

SceneKit: What’s New
Going Beyond 2D with SpriteKit

session配置

ARSessionConfiguration

if ARWorldTrackingSessionConfiguration.isSupported {
        configuration = ARWorldTrackingSessionConfiguration()
} else {
        configuration = ARSessionConfiguration()
}

//Run your session
session.run(configuration)

//Pause your session
session.pause()

//Resume your session
session.run(session.configuration)

//Change your configuration
session.run(otherConfiguration)

//Reset tracking

ARFrame

捕获图片
跟踪信息
场景信息

ARAnchor 锚

Tracing

World Tracking

坐标和方向
物理距离
关联开始坐标

//Create a session
let mySession = ARSession()

//Set ourselves as the session delegate
mySession.delegate = self

//Create a world tracking configuration
let configuration =  ARWorldTrackingSessionConfiguration()

//Run the session
mySession.run(configuration)

ARCamera

Transform
Tracking state
Camera intrinsics

//计划探测
configuration.planeDetection = .horizontal

ARPlaneAnchor

Transform
Extent
Center

Hit-Testing

Intersect ray with real world
Users scene information
Results sorted by distance

Hit-Test Types

Existing plane using extent
Existing plane
Estimate plane
Feature point

//
let point = CGPoint(x: 0.5, y: 0.5)

let results = frame.hitTest(point, types: [.existingPlane, .estimatedHorizontalPlane])

if let closestResult = results.first {

        let anchor = ARAnchor(transform: closestResult.worldTransform)
        session.add(anchor: anchor)
}

Light Estimation

configuration.isLightEstimationEnabled = true

SceneKit
SpriteKit
Metal

SceneKit
ARSCNView

Custom Rendering 自定义渲染器

func updateRenderer(_ frame: ARFrame){

    drawCameraImage(withPixelBuffer:frame.capturedImage)

    let viewMatrix = simd_inverse(frame.came.transform)
    let prijectionMatrix = frame.camera.prijectionMatrix
    updateCamera(viewMatrix, projectionMatrix) 

    updateLighting(frame.lightEstimate?.ambientIntensity)

    drawGeometry(forAnchors: frame.anchors)

}

Summary

High-level API
Tracking
Scene Understanding
Rendering

ARSession ARSessionConfiguration SceneKit SpriteKit

猜你喜欢

转载自blog.csdn.net/yj_sail/article/details/73535540