You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ArCore:两种Anchor创建方式的上下文差异及理解正确性确认

ARCore中两种Anchor创建方式的差异解析

好问题!咱们来拆解这两段代码的差异,以及验证你的理解是否正确:

你的理解结论:完全正确!

先给你吃个定心丸,你对两种语句的上下文判断是准确的,下面来详细解释两者的具体区别:

1. 语句2:Anchor anchor = hitResult.createAnchor();

这个方法是从可跟踪平面(Trackable Plane)的上下文创建Anchor:

  • 因为HitResult来自OnTapArPlaneListener,它绑定了你点击到的那个具体的Plane实例
  • 用这个方式创建的Anchor会和该Plane建立关联:当ARCore后续更新这个Plane的位置、尺寸(比如平面扩展)时,Anchor会自动跟着Plane调整自身姿态,始终保持相对于该平面的固定位置
  • 适合需要物体“贴在平面上”的场景,比如放置家具在地面,地面平面扩展后家具位置会自动对齐新的平面范围

2. 语句1:Anchor anchor = arFragment.getArSceneView().getSession().createAnchor(hitResult.getHitPose());

这个方法是直接从Session全局上下文创建Anchor:

  • 它跳过了Trackable Plane的关联,直接基于Session的空间坐标系创建独立的Anchor
  • 这个Anchor不绑定任何Plane或Trackable对象,ARCore会直接在全局空间中维护它的位置,不会因为某个Plane的更新而改变姿态(除非Session的整体空间映射发生全局调整)
  • 适合需要固定空间点的场景,比如标记一个空间中的特定位置,不管周围平面如何变化,这个点始终保持在原地

额外小提醒

你的示例代码里有个小问题:两次定义了同名的Anchor anchor变量,编译会报错,实际使用时需要调整变量名或者合并逻辑哦~

内容的提问来源于stack exchange,提问作者Daniyal Javaid

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 03:56:46