私は、拡張現実感アプリケーションのようなものを作っています.iOSデバイスの動きに関係なく、私は、iPhoneのサイドワードを傾けてその番号を壊すことが分かるまで、CMDeviceMotion.attitude.pitchでうまくセットアップしたと思っていました。だから、私はpARk *のコードからいくつかのコードを取りました。そして今、私は垂直アクセスの周りの回転を切り離そうとしています。私が描いているシーンは、ユーザが向いている見出しが気にならず、数字は常に視聴者から一定の距離だけ描かれます。私は、垂直軸の回転成分を計算すると、それを反転して回転行列からそれを掛けることができるので、ユーザが見出しを変えてもOpenGLの図を維持すると思います。CoreMotionの姿勢のrotationMatrixから水平回転を分離して削除します
CMDeviceMotion *d = motionManager.deviceMotion;
if (d != nil) {
CMRotationMatrix r = d.attitude.rotationMatrix;
transformFromCMRotationMatrix(cameraTransform, &r);
mat4f_t projectionCameraTransform;
multiplyMatrixAndMatrix(projectionCameraTransform, projectionTransform, cameraTransform);
GLKMatrix4 rotMatrix = GLKMatrix4Make(projectionCameraTransform[0],
projectionCameraTransform[1],
projectionCameraTransform[2],
projectionCameraTransform[3],
projectionCameraTransform[4],
projectionCameraTransform[5],
projectionCameraTransform[6],
projectionCameraTransform[7],
projectionCameraTransform[8],
projectionCameraTransform[9],
projectionCameraTransform[10],
projectionCameraTransform[11],
projectionCameraTransform[12],
projectionCameraTransform[13],
projectionCameraTransform[14],
projectionCameraTransform[15]);
}
は、私は、OpenGLでいつものようにrotMatrixを使用します。
は、ここに私のコードです。
思考、提案?前もって感謝します。
*実空間でいくつかのポイントを設定し、ユーザーの位置とそれらの相対方向を計算し、それらを画面上に描画して、その位置に向かって水平線を浮かべるようにします。
ロール/ピッチ/ヨーではなく、attitude.rotationMatrixを使用してください。 rotationMatrixでは、「ほぼ垂直」の位置に問題はありません。 –
attitude.rotationMatrixは私の元の質問の3行目です。それを違う方法で使う方法を提案できれば、完全な答えでそれをしてください。私はそれを試してみます。 – Craig