Je prévois de développer un projet basé sur le gyroscope comme la rotation d'une texture opengl en utilisant les données du gyroscope , y a-t-il un exemple de code publié à partir de Apple sur le gyroscope ou tout tutoriel sur l'intégration du gyroscope avec openGL ... J'ai recherché sur google je n'ai rien trouvé sauf guide de mouvement de base et guide de gestion des événements .
Mise à jour: veuillez me faire savoir si un échantillon est disponible.
Pour obtenir des mises à jour du gyroscope, vous devez créer un objet motion manager et éventuellement (mais recommandé) un objet d'attitude de référence
Donc, dans votre définition d'interface, vous ajoutez:
CMMotionManager *motionManager;
CMAttitude *referenceAttitude;
Selon les documents, vous ne devez créer qu'un seul de ces gestionnaires par application. Je recommande de rendre le motionManager accessible via un singleton, mais c'est un travail supplémentaire que vous pourriez ne pas avoir à faire si vous instanciez votre classe une seule fois.
Ensuite, dans votre méthode init, vous devez allouer l'objet motion manager comme ceci;
motionManager = [[CMMotionManager alloc] init];
referenceAttitude = nil;
Lorsque vous souhaitez activer les mises à jour de mouvement, vous pouvez créer une méthode enableMotion ou simplement l'appeler à partir de la méthode init. Ce qui suit stockera l'attitude initiale de l'appareil et amènera l'appareil à continuer d'échantillonner le gyroscope et à mettre à jour sa propriété d'attitude.
-(void) enableMotion{
CMDeviceMotion *deviceMotion = motionManager.deviceMotion;
CMAttitude *attitude = deviceMotion.attitude;
referenceAttitude = [attitude retain];
[motionManager startDeviceMotionUpdates];
}
Pour les applications de réalité virtuelle, l'utilisation du gyroscope et d'OpenGL est assez simple. Vous devez obtenir l'attitude gyroscopique actuelle (rotation), puis la stocker dans une matrice compatible OpenGL. Le code ci-dessous récupère et enregistre le mouvement actuel de l'appareil.
GLfloat rotMatrix[16];
-(void) getDeviceGLRotationMatrix
{
CMDeviceMotion *deviceMotion = motionManager.deviceMotion;
CMAttitude *attitude = deviceMotion.attitude;
if (referenceAttitude != nil) [attitude multiplyByInverseOfAttitude:referenceAttitude];
CMRotationMatrix rot=attitude.rotationMatrix;
rotMatrix[0]=rot.m11; rotMatrix[1]=rot.m21; rotMatrix[2]=rot.m31; rotMatrix[3]=0;
rotMatrix[4]=rot.m12; rotMatrix[5]=rot.m22; rotMatrix[6]=rot.m32; rotMatrix[7]=0;
rotMatrix[8]=rot.m13; rotMatrix[9]=rot.m23; rotMatrix[10]=rot.m33; rotMatrix[11]=0;
rotMatrix[12]=0; rotMatrix[13]=0; rotMatrix[14]=0; rotMatrix[15]=1;
}
Selon ce que vous voulez en faire, vous devrez peut-être l'inverser, ce qui est très facile. L'inverse d'une rotation n'est que sa transposition, ce qui signifie l'échange des colonnes et des lignes. Donc, ce qui précède devient:
rotMatrix[0]=rot.m11; rotMatrix[4]=rot.m21; rotMatrix[8]=rot.m31; rotMatrix[12]=0;
rotMatrix[1]=rot.m12; rotMatrix[5]=rot.m22; rotMatrix[9]=rot.m32; rotMatrix[13]=0;
rotMatrix[2]=rot.m13; rotMatrix[6]=rot.m23; rotMatrix[10]=rot.m33; rotMatrix[14]=0;
rotMatrix[3]=0; rotMatrix[7]=0; rotMatrix[11]=0; rotMatrix[15]=1;
Si vous voulez les angles de lacet, de tangage et de roulis, vous pouvez y accéder facilement en utilisant
attitude.yaw
attitude.pitch
attitude.roll
Je cherchais un exemple de code comme un projet très simple. Après plusieurs jours de recherche, je l'ai finalement trouvé. Voilà, les gars!
http://cs491f10.wordpress.com/2010/10/28/core-motion-gyroscope-example/
CoreMotion est la façon d'obtenir des données de gyroscope. Regardez CMGyrodata pour les données brutes ou utilisez les propriétés d'attitude et de taux de rotation de DeviceMotion.
Je recommanderais de regarder la session WWDC "Device Motion" si vous êtes un développeur enregistré Apple développeur.
Voici quelques exemples de code Apple pour le framework CoreMotion: http://developer.Apple.com/library/ios/#samplecode/pARk/Introduction/Intro.html#//Apple_ref/doc/uid/DTS4001108
Et l'ancien UIAccelerometer (mais il contient un bon exemple de code pour travailler avec OpenGL): http://developer.Apple.com/library/ios/#samplecode/GLGravity/Listings/Classes_GLGravityView_m.html#// Apple_ref/doc/uid/DTS40007327-Classes_GLGravityView_m-DontLinkElementID_6