У меня есть модель в Unity, которую я хочу вращать, используя кватернион, заданный IMU.Чтобы изменить ориентацию, мне нужно установить начальную ориентацию объекта Quaternion (= Qreset) на ориентацию IMU (= Qimu) и с тех пор вычислить разницу между Qreset и Qimu, чтобы получить новую ориентацию.Это работает, однако всякий раз, когда я устанавливаю начальную ориентацию (Qreset), ориентация объекта в Unity всегда изменяется (на X: -180,4, Y: 21,08, Z: 21,08).Я не знаю, почему это происходит.Как мне изменить это, чтобы ориентация объекта при сбросе всегда была 0,0,0.Это мой код:
void Update() {
if (Input.GetKeyDown(KeyCode.Space))
{
Qreset = Qimu;
}
transform.rotation = Qreset * Quaternion.inverse(Qimu);
}
void Splitstring(string msg)
{
string[] values = msg.Split('+');
Qimu.x = float.Parse(values[1]);
Qimu.y = float.Parse(values[2]);
Qimu.z = float.Parse(values[3]);
Qimu.w = float.Parse(values[0]);
}