【发布时间】:2019-05-28 21:34:04
【问题描述】:
应用信息:
我正在开发一个基于 ArCore (NDK) 的 Android 应用程序,以在真实的相机源上增强某些对象(从搅拌器工具生成)。现在我可以将对象绘制为 anchors,它会随着相机位置的变化而放大/缩小。
我正在使用 ArSession_acquireNewAnchor API 来托管距离相机大约几英寸的锚点,如下所示。
ArPose_create(ar_session_, nullptr, &camera_pose);
ArPose_getPoseRaw(ar_session_, camera_pose, raw_camera_pose);
ArAnchor *anchor = nullptr;
if (ArSession_acquireNewAnchor(ar_session_, raw_camera_pose, &anchor)!=AR_SUCCESS) {
LOGE("Anchor is not successfully acquired");
}
启动应用程序并将设备保持在同一方向后,可以看到上面的锚点。
问题陈述:
当摄像头位置/方向发生变化时,这些锚点不会按预期显示。请帮助 - PFB 问题的图示。
我的观察:
-
当我根据相机姿势获取锚点时,我假设锚点的方向和姿势属性仅基于相机姿势,即当相机移动(平移)时,锚点也会相应移动 - 我的理解是否正确?
ArSession_acquireNewAnchor(ar_session_, raw_camera_pose, &anchor)
-
使用 hitResult 基于锚点获取后,一切正常,即当设备在适当位置(触摸坐标)从一个方向更改为另一个方向时出现锚对象 - 但是我的用例不依赖于触摸输入事件。我需要在给定场景的预定义位置坐标上实现相同的效果。
if(ArHitResult_acquireNewAnchor(ar_session_, ar_hit_result, &anchor)!= AR_SUCCESS) { LOGE("不成功"); 返回; }
请注意,这是使用 ArCore NDK 开发的。
【问题讨论】:
标签: android augmented-reality arcore projection-matrix