我正在使用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);