#directx #quaternions
Вопрос:
Я пробовал много раз, но не могу получить желаемый результат.
моя логика вращения такова.
- если мышь переместится влево или вправо, затем поверните рыскание. если мышь перемещается вверх или вниз, поверните шаг.
- Мышь может перемещаться в диагональном направлении. так что в этом случае я получу два четвертьфинала. (тангаж и рыскание)
- Я не знаю, как составить эти два кватерниона.
когда я использую только один поворот или рыскание, это работает так, как я хочу. но если я использую два поворота по тангажу и рысканию, то в результате получается что-то неправильное.
Я перепробовал множество способов составления кватернионов.. но я не могу достичь того результата, которого хочу.
Ответ №1:
Внедрение 3D-камер-удивительно сложная проблема. Полное обсуждение выходит за рамки этой темы, но есть несколько основных типов, на которые вы можете обратить внимание:
- Простая камера «взгляда» похожа на то, что вы описываете. Взгляните на этот учебник для примера реализации.
- Другой распространенной камерой является камера «орбита» для изучения 3D-сцены. На GitHub есть пример реализации: OrbitCamera.h / OrbitCamera.cpp.
- Камера «свободного полета»-еще одна распространенная модель камеры для перемещения по 3D-сцене. Это немного сложнее исправить, и, как правило, используются кватернионы, чтобы избежать блокировки карданного подвеса и других проблем.