早上好,
我在StackOverFlow上搜寻了约一个小时,并找到了许多与创建增强现实应用程序相关的示例代码(主要是github),这些应用程序显示第二个位置相对于您当前位置的位置(例如纽约)。
然而,我注意到这些示例代码都没有使用iPhone 4提供的陀螺仪功能,这会给最终用户带来更平滑的体验。
是否有人知道是否存在这样的示例代码?
谢谢,
查理
早上好,
我在StackOverFlow上搜寻了约一个小时,并找到了许多与创建增强现实应用程序相关的示例代码(主要是github),这些应用程序显示第二个位置相对于您当前位置的位置(例如纽约)。
然而,我注意到这些示例代码都没有使用iPhone 4提供的陀螺仪功能,这会给最终用户带来更平滑的体验。
是否有人知道是否存在这样的示例代码?
谢谢,
查理
CMMotionManager
实例方法startDeviceMotionUpdatesToQueue:withHandler:
或startGyroUpdatesToQueue:withHandler:
[CMMotionManagerObject startDeviceMotionUpdatesToQueue:[NSOperationQueue currentQueue] withHandler:^ (CMDeviceMotion *devMotion, NSError *error)
{
CMAttitude *currentAttitude = devMotion.attitude;
xRotation = currentAttitude.roll*180/M_PI;
yRotation = currentAttitude.pitch*180/M_PI;
zRotation = currentAttitude.yaw*180/M_PI;
}];
startGyroUpdatesToQueue:withHandler:
,您可以通过属性gyroData
获取结果。CMAttitude.rotationMatrix
并将其逆矩阵(转置)乘以一个参考矩阵,该参考矩阵最初由您设置。developer.apple.com上的Teapot示例项目展示了使用CoreMotion的基本方法。gyroAvailable
属性,并使用磁力计提供替代实现。很遗憾,我没有任何代码示例。
所有AR应用程序共同的问题是需要找出设备的方向。您可以使用atan2和加速度计来完成此操作,但它具有难以置信的噪声(如Apple的AccelerometerGraph示例项目中所示)。如果您尝试使用自适应低通滤波器修复它,则会减少噪声,但响应速度也会降低。
陀螺仪没有噪音,但误差累积得足够快,以至于您必须经常使用加速度计重置位置。它似乎对旋转对象很好,但不适用于替换罗盘。