在我的Xamarin.Android应用程序中,我从设备的地磁旋转矢量复合传感器获取 X、Y、Z 轴的方向数据,并使用SensorManager.GetOrientation()方法进行处理。我想将此方向数据应用于UrhoSharp的场景中 CameraNode 的Rotation属性。换句话说,我想使用设备“方向”传感器来控制场景的相机。
到目前为止我在SensorChanged事件处理程序中所做的事情:
// app -> an instance of Urho.SimpleApplication
public void OnSensorChanged(SensorEvent e) {
if (e.Sensor.Type == SensorType.GeomagneticRotationVector) {
var rm = new float[9];
SensorManager.GetRotationMatrixFromVector(rm, e.Values.ToArray());
var ov = new float[3];
SensorManager.GetOrientation(rm, ov);
app.Pitch = (Urho.MathHelper.RadiansToDegrees(ov[0]) + 360) % 360; // map [-Pi...+Pi] to [0...360]
app.Yaw = (Urho.MathHelper.RadiansToDegrees(ov[1]) + 360) % 360; // map [-Pi/2...+Pi/2] to [0...360]
app.CameraNode.Rotation = new Urho.Quaternion(app.Pitch, app.Yaw, 0);
}
}
但不幸的是,它没有按预期工作,相机总是看向错误的方向。任何的想法?