Я работаю над приложением, которое рендерит трехмерный мир и хотел бы реализовать вращение сцены, как это делает Blender. Вы можете увидеть это в видео здесь: https://youtu.be/ILqOWe3zAbk?list=PLa1F2ddGya_-UvuAqHAksYnB0qL9yWDO6&t=66 (я не говорю о взаимодействии с gyzmo, но о том, как камера вращается, когда пользователь тащит мышь)
Я реализовал вращение трекбола, но у меня есть два аспекта, которые меня беспокоят:
- сцена не вращается достаточно (или достаточно быстро),
- вращение останавливается, когда вы приближаетесь к краю window.
Для первой точки простое умножение угла поворота не решает проблему. Фактически это создает еще одну: когда угол выходит за пределы 1 радиана, то повороты ужасно резкие, даже небольшое изменение курсора мыши создает разрывы (скачки) в повороте. Я пробовал разные факторы, чтобы умножить угол, но я не получил хороших результатов: как только вы достигнете 1 радиан, появляются разрывы.
Во втором пункте, я предполагаю, что это ожидаемое поведение трекбола метода, но в настройках Blender'а вы можете ясно видеть, что он использует метод трекбола для поворота представления.
Я опубликую некоторый код, если мне нужно, но, поскольку он работает, как и ожидалось, до тех пор, пока абсолютное значение угол поворота ниже 1 радиана, я думаю, проблема в том, что Blender использует вариацию трекбола.