如何在OpenGL iOS中根据设备位置设置CMRotationMatrix

时间:2015-01-30 11:10:41

标签: ios opengl-es accelerometer core-motion

我正在使用app开发一个具有coremotion功能的OpenGL对象,该功能将在设备移动时旋转对象。我正在使用设备运动的cmrotationmatrix来计算旋转。 它在设备运动时效果很好,并且当设备在桌子上平放时也可以直线显示。但是如果我在开始时改变设备的角度则显示弯曲。因此可以使物体在任何角度都可以直线显示。装置。如果有人找到解决方案,请回复。

  CMDeviceMotion *deviceMotion = self.motionManager.deviceMotion;
  float deviceOrientationRadians = 0.0f;
  deviceOrientationRadians = M_PI_2;
  GLKMatrix4 baseRotation = 
      GLKMatrix4MakeRotation(deviceOrientationRadians, 0.0f, 0.0f, 1.0f);
  CMRotationMatrix a = deviceMotion.attitude.rotationMatrix;
  deviceMotionAttitudeMatrix
    = GLKMatrix4Make(a.m11, a.m21, a.m31, 0.0f,
                     a.m12, a.m22, a.m32, 0.0f,
                     a.m13, a.m23, a.m33, 0.0f,
                     0.0f,  0.0f,  0.0f,  1.0f);

   deviceMotionAttitudeMatrix = 
      GLKMatrix4Multiply(baseRotation, deviceMotionAttitudeMatrix);

0 个答案:

没有答案