in GLScene у нас есть три параметра (RollAngle, PitchAngle и TurnAngle) для вращения вокруг локальной ориентации.на изображении ниже, как я могу вращать куб вокруг глобальной ориентации (оранжевая ось)?
Вам необходимо преобразовать угол поворота оси в углы Эйлера. Вот ссылка, подробно объясняющая этот процесс с помощью кода: http://www.euclideanspace.com/maths/geometry/rotations/conversions/angleToEuler/index.htm
Из статьи:
yaw = atan2(y * sin(angle)- x * z * (1 - cos(angle)) , 1 - (y2 + z2 ) * (1 - cos(angle))) pitch = asin(x * y * (1 - cos(angle)) + z * sin(angle)) roll = atan2(x * sin(angle)-y * z * (1 - cos(angle)) , 1 - (x2 + z2) * (1 - cos(angle)))
РЕДАКТИРОВАТЬ: переименованы переменные в соответствии с соглашением по именам тангажа, рыскания, крена.
Может быть, вы могли бы использовать объект "DummyCube" в качестве родителя.Затем вы можете вращать сначала куб внутри фиктивного куба, а затем куб кубика.
Это грязный чит, но если объект находится в начале координат (0,0,0) и в сцене только один объект, вы можете повернуть камеру (и источник света) вокруг объекта, а не вращатьпредмет.