ARKit和Vuforia – 标记识别
我正在开发一个iOS应用程序,我需要识别一个标记(很可能是QR码),并使用ARKit将一些3D内容放在它上面。
我正在考虑Vuforia和ARKit的组合。
是否有可能只使用Vuforia来识别标记并获得它的位置,然后将这些数据“传递”给ARKit?
- 我需要识别标记以select相应的3D内容。
- 我需要获得只有标记的位置,才能放置3D内容,之后我想使用ARKit进行跟踪。
可能吗?
是否有另一种可用于ARKit的标记识别解决scheme?
Q1:您可以处理标记的识别(在Vuforia中称为图像目标)创build一个脚本:
public class CustomTrackableEventHandler : MonoBehaviour, ITrackableEventHandler { ... public void OnTrackableStateChanged( TrackableBehaviour.Status previousStatus, TrackableBehaviour.Status newStatus) { if (newStatus == TrackableBehaviour.Status.DETECTED || newStatus == TrackableBehaviour.Status.TRACKED || newStatus == TrackableBehaviour.Status.EXTENDED_TRACKED) { OnTrackingFound(); // **** Your own logic here **** } else { OnTrackingLost(); } } }
然后你可以用这个脚本replaceDefaultTrackableEventHandler。
问题2:我需要获取标记的位置,以便在其中放置3D内容,之后我想使用ARKit进行跟踪。
您可以添加一个空的游戏对象作为标记的子项(ImageTarget),层次结构为:
YourMarker(ImageTarget) |__EmptyPlaceHolder
当标识被识别时,你可以通过编程获得它的位置:
var placeHolder = GameObject.Find("EmptyPlaceHolder"); if(placeHolder != null){ Debug.Log(placeHolder.transform.position); // all the location, localPosition, quaternion etc will be available to you }