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

ARKit中如何创建可跟踪自定义锚点 实现移动3D对象内容绑定

ARKit自定义可跟踪锚点实现方案

ARKit 6.0及以上版本支持自定义实现符合ARTrackable协议的锚点,无需依赖VNHandPoseRequest等系统预置的视觉检测能力,即可实现对人手、肢体、宠物、动态物体等任意目标的3D点位跟踪,完全匹配你的需求场景。

实现步骤

  • 自定义锚点类
    你需要创建继承自ARAnchor、同时遵守ARTrackable协议的自定义锚点类,必须实现isTracked属性存储跟踪状态,同时可自定义属性存储你的模型输出的目标信息,示例代码如下:
    class CustomDynamicAnchor: ARAnchor, ARTrackable {
        // 标记当前锚点是否处于有效跟踪状态
        var isTracked: Bool = false
        // 存储自定义跟踪目标的关联信息,可按需扩展
        var targetId: String
        
        init(transform: simd_float4x4, targetId: String) {
            self.targetId = targetId
            super.init(transform: transform)
        }
        
        required init?(coder: NSCoder) {
            fatalError("init(coder:) has not been implemented")
        }
    }
    
  • 初始化添加锚点
    当你的自有模型输出目标对象的初始精确3D位置时,生成对应CustomDynamicAnchor实例,调用arView.session.add(anchor:)方法将锚点加入当前AR会话即可。
  • 实时更新跟踪状态
    在ARSession的每帧回调session(_:didUpdateFrame:)中,结合你的目标跟踪模型的实时输出结果更新锚点:
    • 若模型检测到目标仍在视野内,将最新的3D变换值赋值给锚点的transform属性,同时将isTracked设为true,绑定的SceneKit节点会自动同步锚点位置
    • 若目标丢失,将isTracked设为false,可自行选择隐藏对应渲染节点
  • 绑定SceneKit渲染节点
    实现ARSCNViewDelegate的renderer(_:nodeFor:)代理方法,当识别到锚点类型为你自定义的CustomDynamicAnchor时,返回需要展示的SceneKit节点即可,ARKit会自动维持节点与锚点的变换同步。

注意事项

  • 自定义ARTrackable锚点的位置精度完全由你的自有跟踪模型决定,ARKit不会做额外的位置修正,可根据需求对模型输出的3D坐标做平滑滤波处理,减少渲染抖动
  • AR会话使用默认的ARWorldTrackingConfiguration即可,无需开启额外的人体、动物检测相关配置项
  • 若需要跟踪多个不同目标,可通过自定义锚点的targetId属性区分不同跟踪对象。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 13:57:01