ARKit 和 Vuforia - 标记识别
ARKit and Vuforia - marker recognition
我正在开发一个 iOS 应用程序,我需要识别一个标记(很可能是二维码)并使用 ARKit 在其上放置一些 3D 内容。
我在考虑 Vuforia 和 ARKit 的组合。
是否可以只使用Vuforia来识别标记并获取其位置,然后"pass"将此数据传给ARKit?
- 我需要识别标记才能select 对应的 3D 内容。
- 我只需要获取标记的位置,以便在那里放置 3D 内容,之后我想使用 ARKit 进行跟踪。
可能吗?
是否有其他可与 ARKit 一起使用的标记识别解决方案?
Q1:
您可以处理标记的识别(在 Vuforia 中称为图像目标)
创建脚本:
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();
}
}
}
然后你可以用这个脚本替换 DefaultTrackableEventHandler。
Q2:我需要获取marker only的位置,以便放置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
}
我正在开发一个 iOS 应用程序,我需要识别一个标记(很可能是二维码)并使用 ARKit 在其上放置一些 3D 内容。
我在考虑 Vuforia 和 ARKit 的组合。
是否可以只使用Vuforia来识别标记并获取其位置,然后"pass"将此数据传给ARKit?
- 我需要识别标记才能select 对应的 3D 内容。
- 我只需要获取标记的位置,以便在那里放置 3D 内容,之后我想使用 ARKit 进行跟踪。
可能吗?
是否有其他可与 ARKit 一起使用的标记识别解决方案?
Q1: 您可以处理标记的识别(在 Vuforia 中称为图像目标) 创建脚本:
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();
}
}
}
然后你可以用这个脚本替换 DefaultTrackableEventHandler。
Q2:我需要获取marker only的位置,以便放置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
}