我正在开发增强现实应用程序。我使用 open GL ES 2.0 增强了 3d 模型。现在,我的问题是当我移动设备时,3d 模型应该根据设备移动速度移动。就像这个应用程序一样:https ://itunes.apple.com/us/app/augment/id506463171?l=en&ls=1&mt=8 。我已经使用 UIAccelerometer 来实现这一点。但是,我做不到。我应该使用 UIAccelerometer 还是任何其他框架来实现它?
3 回答
它是复杂的算法,而不仅仅是加速度计。您最好使用任何第三方框架,例如 Vuforia、Metaio。那会节省很多时间。
下载并检查一些示例应用程序。这正是你想要的。
https://developer.vuforia.com/resources/sample-apps
您可以使用 Unity3D 加载您的 3D 模型并导出 XCODE 项目。或者你可以使用 open GL ES。
从您的评论中,我是否了解您希望将模型锚定在真实世界的位置?如果是这样,那么最简单的方法是为您的模型提供 GPS 位置并读取设备的 GPS 位置。实际上有很多关于位置跟踪主题的研究,但目前 GPS 是您最好的(并且可能是唯一的)选择,而无需进入高级位置跟踪解决方案。
由于我的帐户太新,我无法添加评论。我还将添加一个警告,不要尝试使用加速度计数据定位设备。由于加速度与位置的双重积分,您会得到太多的误差(参见基于陀螺仪和加速度计的室内定位系统)。
- 我肯定会使用 Vuforia 来完成这项任务。
关于您的评论:
我正在使用 Vuforia 框架来增强原生 iOS 中的 3d 模型。没关系。但是,我想在移动设备时移动 3d 模型。它没有在任何示例代码中提供。
好吧,它没有在任何示例代码中提供,但这并不一定意味着它不可能或太难。
我会这样做(在 Android、C++ 上工作,但无论如何它在 iOS 上必须非常相似):
- 找到您的 renderFrame 函数
只需在实际 DrawElements 之前进行翻译:
QCARUtils::translatePoseMatrix(xMOV, yMOV, zMOV, &modelViewProjectionScaled.data[0]);
运动数据将由一个函数准备,该函数从加速度计读取它们作为时间和加速度......
我真正发现的挑战是找到正确的校准以正确调整传感器 API 的输出,这是一个完全不同且与 AR/Vuforia 无关的问题。在这里,我猜你在各种设备方面比 Android 开发者有巨大的优势......