Это, вероятно, более предметная область Math, но я надеюсь, что это достаточно просто, что некоторые другие разработчики могут знать.Создайте поворот вокруг переднего вектора
Ситуация: У меня есть самолет. Мне нужно Pitch, Yaw и Roll (поверните вокруг x, y, z) плоскость относительно ориентации плоскости.
Проблема: я могу заставить плоскость модели вращаться, однако вращение является глобальным для модели. Например, когда плоскость обращена вперед, применение CreateRotationZ()
отлично работает, но если модель направлена вверх (шаг 90 градусов), то применение CreateRotationZ()
не вызывает скатывание плоскости (относительно ориентации плоскостей), это вызывает рывок.
Вы знаете, что есть 'CreateRotationX' и' CreateRotationY'? Однако, когда плоскость находится под разными углами, будет немного сложнее математика. Но это будет комбинация из трех методов. – anothershrubery
Да, CreateRotationZ (Yaw), CreateRotationX (Pitch) и CreateRotationY (Roll). Они не работают, хотя они вращаются независимо от ориентации на плоскости, как объяснено. я однако очень близко с помощью: Quaternion гниль = Quaternion.CreateFromAxisAngle (новый Vector3 (0, 0, 1), Ролл) * Quaternion.CreateFromAxisAngle (новый Vector3 (1, 0, 0), Pitch) * Quaternion .CreateFromAxisAngle (новый Vector3 (0,1,0), Yaw); Airframe.Orientation = Matrix.CreateFromQuaternion (rot); Если вы скатываете плоскость вправо, то правильно применяете высоту тона, но рыскание нет. Очень разочаровывает – Neovivacity
Да, вам нужно будет осевать локально на ваш корабль, а не мировые топоры. Матрица вращения вашего корабля будет иметь доступ для доступа (вперед, назад, влево, вправо, вверх и вниз), вы можете вращаться вокруг этих векторов. –