Advertisement
Guest User

Untitled

a guest
Oct 14th, 2017
117
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.72 KB | None | 0 0
  1. /*==============================================================================
  2. Copyright (c) 2016 PTC Inc. All Rights Reserved.
  3.  
  4. Copyright (c) 2015 Qualcomm Connected Experiences, Inc. All Rights Reserved.
  5. * ==============================================================================*/
  6. using UnityEngine;
  7. using UnityEngine.UI;
  8. using System.Collections;
  9. using System.Collections.Generic;
  10. using System.Linq;
  11. using Vuforia;
  12. using MovementEffects;
  13.  
  14. public class UDTEventHandler : MonoBehaviour, IUserDefinedTargetEventHandler {
  15.  
  16.  
  17. /// Can be set in the Unity inspector to reference a ImageTargetBehaviour that is instanciated for augmentations of new user defined targets.
  18. public ImageTargetBehaviour ImageTargetTemplate;
  19.  
  20.  
  21. UserDefinedTargetBuildingBehaviour mTargetBuildingBehaviour;
  22.  
  23. ObjectTracker mObjectTracker;
  24.  
  25. // DataSet that newly defined targets are added to
  26. DataSet mBuiltDataSet;
  27.  
  28. // Currently observed frame quality
  29. ImageTargetBuilder.FrameQuality mFrameQuality = ImageTargetBuilder.FrameQuality.FRAME_QUALITY_NONE;
  30.  
  31.  
  32.  
  33. public void Start() {
  34.  
  35. mTargetBuildingBehaviour = GetComponent<UserDefinedTargetBuildingBehaviour>();
  36.  
  37. if (mTargetBuildingBehaviour) {
  38. mTargetBuildingBehaviour.RegisterEventHandler(this);
  39. Debug.Log("Registering User Defined Target event handler.");
  40. }
  41.  
  42. }
  43.  
  44.  
  45. /// Called when UserDefinedTargetBuildingBehaviour has been initialized successfully
  46. public void OnInitialized() {
  47.  
  48. mObjectTracker = TrackerManager.Instance.GetTracker<ObjectTracker>();
  49.  
  50. if (mObjectTracker != null) {
  51. // Create a new dataset
  52. mBuiltDataSet = mObjectTracker.CreateDataSet();
  53. mObjectTracker.ActivateDataSet(mBuiltDataSet);
  54. }
  55.  
  56. }
  57.  
  58.  
  59. /// Updates the current frame quality
  60. public void OnFrameQualityChanged(ImageTargetBuilder.FrameQuality frameQuality) {
  61. Debug.Log("Frame quality changed: " + frameQuality.ToString());
  62. mFrameQuality = frameQuality;
  63. }
  64.  
  65.  
  66. /// Takes a new trackable source and adds it to the dataset
  67. /// This gets called automatically as soon as you 'BuildNewTarget with UserDefinedTargetBuildingBehaviour
  68. public void OnNewTrackableSource(TrackableSource trackableSource) {
  69.  
  70. // Deactivates the dataset first
  71. mObjectTracker.DeactivateDataSet(mBuiltDataSet);
  72.  
  73. // Get predefined trackable and instantiate it
  74. ImageTargetBehaviour imageTargetCopy = (ImageTargetBehaviour)Instantiate(ImageTargetTemplate);
  75. imageTargetCopy.gameObject.name = "ImageTarget";
  76.  
  77. // Add the duplicated trackable to the data set and activate it
  78. mBuiltDataSet.CreateTrackable(trackableSource, imageTargetCopy.gameObject);
  79.  
  80. // Activate the dataset again
  81. mObjectTracker.ActivateDataSet(mBuiltDataSet);
  82.  
  83. // Extended Tracking with user defined targets only works with the most recently defined target.
  84. // If tracking is enabled on previous target, it will not work on newly defined target.
  85. // Don't need to call this if you don't care about extended tracking.
  86. //StopExtendedTracking();
  87. // mObjectTracker.Stop();
  88. // mObjectTracker.ResetExtendedTracking();
  89. // mObjectTracker.Start();
  90.  
  91. // Make sure TargetBuildingBehaviour keeps scanning...
  92. //mTargetBuildingBehaviour.StartScanning();
  93.  
  94. }
  95.  
  96.  
  97.  
  98. /// Instantiates a new user-defined target and is also responsible for dispatching callback to
  99. /// IUserDefinedTargetEventHandler::OnNewTrackableSource
  100. public void BuildNewTarget() {
  101.  
  102. if (mFrameQuality == ImageTargetBuilder.FrameQuality.FRAME_QUALITY_MEDIUM || mFrameQuality == ImageTargetBuilder.FrameQuality.FRAME_QUALITY_HIGH) {
  103.  
  104. // create the name of the next target.
  105. // the TrackableName of the original, linked ImageTargetBehaviour is extended with a continuous number to ensure unique names
  106. string targetName = ImageTargetTemplate.TrackableName;
  107.  
  108. // generate a new target:
  109. mTargetBuildingBehaviour.BuildNewTarget(targetName, ImageTargetTemplate.GetSize().x);
  110.  
  111. } else {
  112. Debug.Log("Cannot build new target, due to poor camera image quality");
  113. }
  114.  
  115. }
  116.  
  117.  
  118. /* /// This method only demonstrates how to handle extended tracking feature when you have multiple targets in the scene
  119. /// So, this method could be removed otherwise
  120. private void StopExtendedTracking(){
  121.  
  122. // If Extended Tracking is enabled, we first disable it for all the trackables
  123. // and then enable it only for the newly created target
  124. bool extTrackingEnabled = mTrackableSettings && mTrackableSettings.IsExtendedTrackingEnabled();
  125.  
  126. if (extTrackingEnabled)
  127. {
  128. StateManager stateManager = TrackerManager.Instance.GetStateManager();
  129.  
  130. // 1. Stop extended tracking on all the trackables
  131. foreach (var tb in stateManager.GetTrackableBehaviours()){
  132.  
  133. var itb = tb as ImageTargetBehaviour;
  134.  
  135. if (itb != null){
  136. itb.ImageTarget.StopExtendedTracking();
  137. }
  138.  
  139. }
  140.  
  141. // 2. Start Extended Tracking on the most recently added target
  142. List<TrackableBehaviour> trackableList = stateManager.GetTrackableBehaviours().ToList();
  143. ImageTargetBehaviour lastItb = trackableList[LastTargetIndex] as ImageTargetBehaviour;
  144.  
  145. if (lastItb != null){
  146. if (lastItb.ImageTarget.StartExtendedTracking ()) {
  147. Debug.Log ("Extended Tracking successfully enabled for " + lastItb.name);
  148. }
  149. }
  150.  
  151. }
  152.  
  153. }*/
  154.  
  155. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement