Вы можете использовать CoreMotion для получения данных от гироскопа. Основной подход состоит в том, чтобы получить CMAttitude.rotationMatrix
и умножить его обратное (транспонировать) на исходную матрицу, которую вы изначально установили. Пример проекта Teapot на developer.apple.com демонстрирует базовый подход к работе с CoreMotion.
Для настоящего приложения дополненной реальности вам необходимо создать модель с использованием OpenGL ES. Я лично нашел v1.1 более надежным на iOS после того, как попробовал GL ES 2.0. Образец чайника также использует GLES 1.1.
Использование гироскопа намного точнее и «плавнее», чем использование магнитометра для получения вращения устройства вокруг своей оси отсчета. Хитрость заключается в том, как изначально откалибровать эталонную матрицу, чтобы получить истинное «направление» устройства и расположить объекты модели GL ES в правильном положении вокруг камеры. После того, как вы достигли этого, вы можете повернуть свою модель в 3D, умножив viewMatrix GL на инверсию CMAttitude.rotationMatrix.
Наконец, если вы намереваетесь поддерживать iPhone 3Gs, не забудьте проверить свойство gyroAvailable
CMMotionManager и предоставить альтернативную реализацию с использованием магнитометра.