如何在ARCore中通过Frame获取平移与旋转信息?
获取ARCore Frame的平移与旋转信息
Hey there! I get where you're coming from—API changes can be confusing at first. Let's break this down clearly:
其实你之前的代码逻辑方向是对的,getTranslation()和getRotationQuaternion()从始至终都是Pose类的方法,只是旧版本的API文档可能没那么明确标注归属,现在更新后把它们的归属清晰归到了Pose下而已。而arFrame.getPose()本身就会返回一个有效的Pose实例,你只需要基于这个实例调用对应的方法就行。
如果你的ARCore版本更新后原有代码报错,大概率是方法签名的细微调整,以下是符合当前API规范的正确实现:
示例代码
// 先获取当前Frame对应的Pose对象 Pose framePose = arFrame.getPose(); // 定义存储平移数据的数组(至少需要3个元素) float[] translation = new float[3]; // 提取平移信息,第二个参数是数组的起始偏移量 framePose.getTranslation(translation, 0); // 定义存储旋转四元数的数组(至少需要4个元素) float[] rotation = new float[4]; // 提取旋转四元数信息 framePose.getRotationQuaternion(rotation, 0);
额外提醒
- 务必确保你是在AR会话的更新回调(比如
onUpdate(FrameTime frameTime)方法)内获取arFrame,此时的Frame才是有效且包含最新姿态数据的。 - 若使用较新的ARCore版本,还可以尝试Pose类提供的便捷方法(比如直接获取
Vector3格式的平移数据),但核心逻辑始终是:通过Frame拿到Pose实例,再从Pose中提取姿态信息。
内容的提问来源于stack exchange,提问作者Anuj
相关产品推荐
相关产品推荐

