Azure Object Anchors检测模型时能否获取原始对象原点
Azure Object Anchors 模型原点问题解答
核心结论
- 模型转换为
.ou格式时,转换服务会自动执行坐标归一化优化,不会保留原始输入模型的自定义原点,统一以计算出的模型包围盒几何中心作为转换后模型的坐标原点。这也是测试中两个仅原点设置不同的同网格模型,检测返回的坐标完全一致的根本原因。 - AOA 0.22.0版本的公开API未提供获取原始模型自定义原点的接口,所有检测返回的位姿数据均基于转换后归一化的坐标系计算。
属性注释翻译
LogicalCenter属性的官方说明原文翻译如下:
对象几何结构不一定恰好位于其包围盒的正中心。因此需要注意,所有需要相对检测对象放置的可视化内容,必须以接口实际返回的坐标为基准放置,才能达到预期效果。
现象原因
测试用到的两个glb模型仅原始原点位置存在差异,在转换阶段会被服务做统一标准化处理:
- 自动计算模型网格的轴对齐包围盒
- 将包围盒中心点设为
.ou模型的新坐标原点 - 重算所有网格顶点相对新原点的坐标值,原始模型自带的原点偏移会被直接丢弃,不会存入转换后的模型文件。
因此只要模型网格形状完全一致,无论原始原点设置在体积中心、网格边角甚至网格外部,检测时返回的TrackObject.LogicalCenter、TrackObject.TrackedObjectState.Location数值都会完全相同。
适配方法
如果业务场景需要对齐原始模型的自定义原点,可通过提前记录固定偏移的方式实现:
- 转换模型前,在本地加载原始模型,计算其网格包围盒中心点和自定义原点的偏移向量,将该值作为固定配置存入项目
- 运行时检测到对象、拿到AOA返回的位姿后,在位姿上手动叠加提前记录的固定偏移,即可得到对应原始原点的空间位置。
内容的提问来源于stack exchange,提问作者Merichbier
相关产品推荐
相关产品推荐

