Простое вращение в 3D с помощью мыши во Flash вращениеXYZ в 2 направлениях - PullRequest
1 голос
/ 05 января 2011

У меня есть куб, который я хочу вращать, используя движение мыши.Поэтому, если я переместлю свою мышь влево, она будет вращаться так, как будто повороты X увеличены.Когда я двигаюсь вправо, вращение увеличивается.Перемещение вверх и вниз изменяет вращение Y.

Это выглядит хорошо, если вы изменяете только одно измерение (вращение X или вращение Y).Но если я уже изменил ротацию X, а затем попробую изменить ротацию Y, результаты получаются странными.Если вращение X равно 180, эффекты вращенияY меняются местами.Это в основном довольно непредсказуемо и, конечно, не подходит для пользователя.

Я пытался осмотреться (не удалось), прочитал о кватернионах (не смог понять), попробовал некоторые неожиданные и очень сложные тригонометрические вычисления (сделалдурак из себя) и поэтому я застрял сейчас.Я нашел этот ТАК вопрос Лучший способ перевести движение перетаскивания мышью в трехмерное вращение объекта , но это мне немного не помогает, я не могу понять ни один из ответов, на самом деле.

Полное, работающее решение / алгоритм в AS3 было бы наилучшим, но некоторый псевдокод или просто четкое объяснение будут по достоинству оценены.

1 Ответ

1 голос
/ 05 января 2011

Вы применяете вращение Y к уже повернутому объекту.Таким образом, если вы установите вращение X на 180, а затем установите вращение Y, вы действительно вращаете объект, стоящий «на голове».Если вы хотите применить оба поворота по оси x и y одновременно, лучше всего использовать матрицу .Ссылка, которую вы предоставили, полезна: она объясняет все, как только вы понимаете концепцию матриц.Вы должны прочитать об этом, особенно если вы планируете делать больше 3D в будущем.

А пока просто взгляните на справочную страницу Flash для Matrix3D .Он должен предоставить всю информацию и примеры, необходимые для начала работы.

...