私はlibgdxを使用してAndroid用の基本的な3Dゲームを開発していますが、コンパスから提供される3つの回転角度(方位角-Zを中心とした回転、ロール-Yを中心とした回転、ピッチ-Xを中心とした回転)を指定すると、カメラの向きを正しく設定できません。 。次のコードで、仮想カメラを期待どおりにZ軸とX軸に適切に向けることができるという点で、わずかな成功を収めました。(角度は度[-180,180])
camera.direction.x = 0;
camera.direction.y = 0;
camera.direction.z = 1;
camera.up.x = -1;
camera.up.y = 0;
camera.up.z = 0;
camera.rotate(azimuth,0,0,1);
camera.rotate(roll,0,1,0);
camera.rotate(pitch,1,0,0);
私もこれである程度の成功を収めましたが、カメラのアップベクトルを方向付けません。(このバージョンでは、角度はラジアンに変換されています)
float x,y,z;
roll = (float) (roll + Math.PI/2.0);
x = (float) (Math.cos(azimuth) * Math.cos(roll));
y = (float) (Math.sin(azimuth) * Math.cos(roll));
z = (float) (Math.sin(roll));
Vector3 lookat = new Vector3(x,y,z);
camera.lookAt(lookat.x, lookat.y, lookat.z);
誰かがこれらの3つの角度から仮想カメラを適切に向ける方法に光を当てることができますか?
また、電話の上部が左側に、下部が右側になるように、電話を横向きモードにしようとしています。したがって、カメラのデフォルトの方向(すべての回転は0で、電話の上部は北を向いています)は、カメラが地面を向いており(正のZ)、上を東に向けています(負のX)。