(X,Y,Z)=(0,0,0)OpenGL-World にあるモデル (地形) を回転させようとしています。+Xは東、-Z北、+Y高度です。-Yデバイスのオイラー角は(0°,0°,0°)、デバイスが北を向いたテーブルの上に置かれている間であるため、ビューが見ています。
問題:
device -y測定角度をに変更するには、デバイスの軸を切り替える必要がありdevice zます。
現在、device x-axis作品を中心に回転しています(結果は を中心に回転していますWorld X-axis)。
しかし、回転は の代わりに回転にdevice yつながり、回転はWorld Yの代わりに回転World -Zにつながります。device zWorld ZWorld Y
今では、これを解決する方法のアイデアが不足しています。ヒントを教えてくれる人はいますか?
(OpenGL) (Device)
^ +Y-axis ^ +z-axis
* *
* *
* * ^ +y-axis (North)
* * *
* * *
* * *
************> + X-axis ************> +x-axis
*
*
v +Z-axis (Minus North)
私がこれまでに試したこと:
- オイラー角の使用
SensorManager.getOrientationと角度の切り替えはうまく機能しますが、ピッチ 90 度近くでジンバル ロックに入ります。だから私は別の解決策(SensorManager回転行列または四元数)を探しています。 SensorManager.remapCoordinateSystemほとんどすべての可能な星座で -> 役に立たない- 回転行列の列/行を
SensorManager.getRotationMatrix-> から変更しても役に立たない