Object Tracker
Related documentations |
---|
Map Manager |
Tracker Coordinate System |
Visual SLAM Learning Guide |
The Object Tracker loads the map file and renders 3D object on it.
Please refer Visual SLAM Learning Guide to create a map more precisely while scanning 3D space.
Create Instants
Start / Stop Tracker
Use Tracking Information
Set Map
Add / Replace Map
Change Tracking Mode
Create Instants
>ObjectTrackerViewController.swift
var cameraDevice:MasCameraDevice = MasCameraDevice() var sensorDevice:MasSensorDevice = MasSensorDevice() var trackingManager:MasTrackerManager = MasTrackerManager()
Start / Stop Tracker
To start / stop Tracker after loading the map, refer to the following code.
>ObjectTrackerViewController.swift
@objc func resumeAR() { ... trackingManager.start(.TRACKER_TYPE_OBJECT) } @objc func pauseAR() { trackingManager.stopTracker() ... }
Use Tracking Information
To use the Tracking information, refer to the following code.
You must use Convert Matrix for Metal.('metalMatrixConverter')
>ObjectTrackerViewController.swift
func draw(in view: MTKView) { ... let trackingState:MasTrackingState = trackingManager.updateTrackingState() let result:MasTrackingResult = trackingState.getTrackingResult() let backgroundImage:MasTrackedImage = trackingState.getImage() var backgroundProjectionMatrix:matrix_float4x4 = cameraDevice.getBackgroundPlaneProjectionMatrix() let metalMatrixConverter:matrix_float4x4 = getScaleMatrix(1.0, y: -1.0, z: 1.0) backgroundProjectionMatrix = backgroundProjectionMatrix * metalMatrixConverter let projectionMatrix:matrix_float4x4 = cameraDevice.getProjectionMatrix() if let cameraQuad = backgroundCameraQuad { cameraQuad.setProjectionMatrix(projectionMatrix: backgroundProjectionMatrix) cameraQuad.draw(commandEncoder: commandEncoder, image: backgroundImage) } let trackingCount:Int32 = result.getCount() for i in stride(from: 0, to: trackingCount, by: 1) { let trackable:MasTrackable = result.getTrackable(i) let poseMatrix:matrix_float4x4 = trackable.getPose() * metalMatrixConverter textureCube.setProjectionMatrix(projectionMatrix: projectionMatrix) textureCube.setPoseMatrix(poseMatrix: poseMatrix) textureCube.setTranslation(x: 0.0, y: 0.0, z: -0.15) textureCube.setScale(x: 0.3, y: 0.3, z: 0.3) textureCube.draw(commandEncoder: commandEncoder) } ... }
Set Map
By calling function addTrackerData to register the map file and calling function loadTrackerData, Space can be tracked. To set a map, refer to the following code.
>ObjectTrackerViewController.swift
func startEngin() { ... trackingManager.addTrackerData(objectTrackerMapPath) trackingManager.loadTrackerData() }
Add / Replace Map
Create a map file refer to [Map Manager].
Copy the received map file to the desired path.
If you have an existing map file, call function 'addTrackerData' and function 'loadTrackerData' after calling trackingManager.removeTrackerData()
Change Tracking Mode
2 Tracking Modes of Object Tracker:
JITTER_REDUCTION_ACTIVATION, JITTER_REDUCTION_DEACTIVATION
- JITTER_REDUCTION_ACTIVATION: Default Setting. Jitter reduction.
trackingManager.setTrackingOption(.JITTER_REDUCTION_ACTIVATION)
- JITTER_REDUCTION_DEACTIVATION: Disable the jitter reduction option.
trackingManager.setTrackingOption(.JITTER_REDUCTION_DEACTIVATION)