(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 z
World Z
World 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
-> から変更しても役に立たない