开发环境
Unity:2021.1.14flc1
导入Package:
AR Foundation:4.1.7
ARCore XR Plugin:4.1.7
ARAnchors(AR锚点)
锚的一个典型用例是在物理世界中放置虚拟内容。
你可以将虚拟对象锚定到特定的可追踪对象,以确保即使设备四处移动,您的虚拟对象与可追踪对象之间的关系也能保持稳定。这意味着,当你将虚拟 Android 小雕像放置在桌面上,如果 ARFoundation稍后调整与桌面相关联的几何平面的姿势,那么 Android 小雕像仍会出现在桌子顶部。
对可跟踪类型有疑惑的可以参考ARFoundation入门——AR射线检测(Android)中对TrackableType类型的介绍
增加或删除锚点
要添加新的锚,只需使用AddComponent将ARAnchor组件添加到任何游戏对象。也可以间接创建锚点,例如通过加载包含已保存锚点的ARWorldMap。
使现有的内容成为锚点:
void AnchorContent(Vector3 position, GameObject content)
{
// Add an anchor to your content
content.AddComponent<ARAnchor>();
}
将预制件实例化为锚点:
void AnchorContent(Vector3 position, GameObject prefab)
{
// Create an instance of the prefab
var instance = Instantiate(prefab, position, Quaternion.identity);
// Add an ARAnchor component if it doesn't have one already.
if (instance.GetComponent<ARAnchor>() == null)
{
instance.AddComponent<ARAnchor>();
}
}
也可以创建附着到平面的定位。AttachAnchor方法可以做到这一点,将锚定附着到平面的典型用例是在平面上放置虚拟内容。建议使用AttachAnchor创建锚点,然后将你的内容作为锚点的子对象。
public ARAnchor AttachAnchor(ARPlane plane, Pose pose);
要移除锚,就销毁ARAnchor组件(或其游戏对象)。
public bool RemoveAnchor(ARAnchor anchor)
一些说明
对ARFoundation的使用学习可以参考unity官网的文档:http://docs.unity3d.com/Packages/com.unity.xr.arfoundation@4.1/manual/index.html。也可以到ARCore的官网:https://developers.google.cn/ar对这部分SDK的功能和环境配置有个更好的了解。
(两个网站的中文翻译我觉得都挺令人头疼的,看不懂的部分地方建议可以用英文文档理解一下。)