Почему функции моего панорамирования в Pyqt/Moderngl ведут себя странно [закрыто]Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Почему функции моего панорамирования в Pyqt/Moderngl ведут себя странно [закрыто]

Сообщение Anonymous »

Я строю 3D Viewport в Moderngl и Pyqt5. Я использую Qglwidget для рендеринга контекста ModernGL. Прямо сейчас я пытаюсь выяснить, почему мой подход панорамирования не работает должным образом, кажется, что панорамирование в нисходящем представлении работает, но в остальном он неправильно рассчитывается на основе ориентации Viewport. < /P>
Для общей навигации я использовал подход Arcballutil, основанный на 3D -зрителях. self.center - 3D -массив, представляющий x, y, z координаты камеры.

Код: Выделить всё

self.center = np.zeros(3)
< /code>
self.center
затем объединяется с общим преобразованием аркибола, тогда все это записано в матрицу вида вершин -шейдера (все в методе Paintgl )

Код: Выделить всё

self.arc_ball.Transform[3, :3] = -self.arc_ball.Transform[:3, :3].T @ self.center
self.view_matrix.write((orthographic * lookat * self.arc_ball.Transform).astype('f4'))
< /code>
As far as the panning goes, it is all written in the mouseMoveEvent
Функция для перевода Viewport на основе координат x, y. self.camera_zoom - это фактическая сумма увеличения точки зрения, позволяющую правильную скорость панорамирования на основе шкалы Viewport.

Код: Выделить всё

        elif event.buttons() & Qt.MouseButton.MiddleButton:
# Panning logic
x_movement = event.x() - self.prev_x
y_movement = event.y() - self.prev_y

self.center[0] -= x_movement * (self.camera_zoom / 10)
self.center[1] += y_movement * (self.camera_zoom / 10)

self.prev_x = event.x()
self.prev_y = event.y()

self.update()
< /code>
Both self.prev_x
и self.prev_y рассчитываются в функции MousePressevent .

Код: Выделить всё

        elif event.buttons() & Qt.MouseButton.MiddleButton:
self.setCursor(Qt.CursorShape.ClosedHandCursor)
self.prev_x = event.x()
self.prev_y = event.y()
< /code>
I tried to use self.center[2] += y_movement * (self.camera_zoom / 10)
для панорамирования в координате Z камеры, и это только помогло.

Подробнее здесь: https://stackoverflow.com/questions/794 ... have-weird
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Почему функции моего панорамирования в Pyqt/Moderngl ведут себя странно
    Anonymous » » в форуме Python
    0 Ответы
    11 Просмотры
    Последнее сообщение Anonymous
  • GLM :: камера на основе кват ведут себя странно
    Anonymous » » в форуме C++
    0 Ответы
    9 Просмотры
    Последнее сообщение Anonymous
  • GLM :: камера на основе кват ведут себя странно
    Anonymous » » в форуме C++
    0 Ответы
    10 Просмотры
    Последнее сообщение Anonymous
  • Почему панорамирование в моей сцене Pyqt/Moderngl работает неправильно? [закрыто]
    Anonymous » » в форуме Python
    0 Ответы
    15 Просмотры
    Последнее сообщение Anonymous
  • Глобальные функции ведут себя неправильно с Python Unittests
    Anonymous » » в форуме Python
    0 Ответы
    61 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»