20 / 20 / 3
Регистрация: 14.06.2012
Сообщений: 95
|
||||||
1 | ||||||
Вращение сцены мышью15.04.2013, 16:33. Показов 7450. Ответов 12
Метки нет (Все метки)
Всем доброго времени суток.
Сижу, тренирусь в OpenGL. Сделал 3D фигуру, написал перемещение по сцене стрелками ("вращение камеры" влево/вправо и движение вперёд/назад относительно угла поворота). Работает всё хорошо, но загорелся идеей делать вращение мышью. Суть алгоритма: • Ждём сообщение WM_MOUSEMOVE • Получаем текущие координаты курсора мыши (GetCursorPos) • Если курсор в центре - возвращаем 0 • Иначе забираем HIWORD и LOWORD из lParam и считаем смещение координат курсора относительно центра экрана • Добавляем это смещение в угол поворота Выглядит это примерно так:
Вся проблема в том, что вращение работает, но происходит это рывками. То есть бывает не при каждом движении мыши, и, вообщем, не плавно (слишком большой шаг вращения). Такое ощущение, что камера будто тупит, плохо слушается пользователя. Игрался с делением (там где деление на 10) - ставил больше, меньше... убрать не вариант, так как вращение получается слишком сильное. Какие есть варианты решения этой проблемы?
0
|
15.04.2013, 16:33 | |
Ответы с готовыми решениями:
12
Вращение сцены мышью Вращение сцены Выбор объектов сцены мышью GLUT, вращение сцены с помощью мыши или клавиатуры |
Модератор
3387 / 2159 / 352
Регистрация: 13.01.2012
Сообщений: 8,378
|
|
16.04.2013, 09:22 | 2 |
наверное потому что координаты целые. а вообще вращать курсором на мой вкус не правильно. вращать надо матрицей.
1
|
20 / 20 / 3
Регистрация: 14.06.2012
Сообщений: 95
|
||||||
16.04.2013, 20:06 [ТС] | 3 | |||||
Рывки из-за нецелых координат имеют немного другой характер, но за это спасибо) немножко изменил код и всё стало вертеться плавно:
Добавлено через 14 минут В оконном режиме частью окна считаются границы (от этого и неровное смещение по OY; верхняя граница больше нижней) - фиксится легко игрой с координатами. Все проблемы решены. Спасибо =)
1
|
1 / 1 / 0
Регистрация: 30.03.2014
Сообщений: 10
|
||||||
07.06.2014, 01:00 | 7 | |||||
IIARTEMII, подскажите а как вы решили проблему с оконным режимом? Что вы делали с centerY?? Как получили правильное значение centerX и centerY? в полноэкранном режиме легко получаю с помощью
0
|
Модератор
3387 / 2159 / 352
Регистрация: 13.01.2012
Сообщений: 8,378
|
|
07.06.2014, 06:16 | 8 |
для оконного режима все точно так же. просто hwnd вашего окна подставьте
1
|
20 / 20 / 3
Регистрация: 14.06.2012
Сообщений: 95
|
|
07.06.2014, 08:57 [ТС] | 9 |
Никита Александ, это было так давно) если я правильно помню, то в оконном режиме я учитывал границы окна, иначе неправильно смещался обзор или плыл по сторонам, даже когда мышь в центре (больше связано с осью OY, так как вернхняя граница больше нижней, а с OX при равных границах всё остаётся так же, как и в полноэкранном режиме)
0
|
1 / 1 / 0
Регистрация: 30.03.2014
Сообщений: 10
|
|
08.06.2014, 16:38 | 10 |
Так подождите у меня одно и тоже окно,когда я переключаюсь из фуллскрина в оконный режим,я удаляю фуллскрин-окно и пересоздаю его же только оконным,hWnd одно и тоже и там и там
Добавлено через 2 минуты а подскажите как вы учитывали? как вы получали размеры границ окна в оконном режиме?
0
|
Модератор
3387 / 2159 / 352
Регистрация: 13.01.2012
Сообщений: 8,378
|
|
08.06.2014, 16:45 | 11 |
что-то я чувствую что я что-то упускаю)
размер и в том и в другом случае лично я брал через одну и ту же функцию GetWindowRect и все было в порядке
0
|
1 / 1 / 0
Регистрация: 30.03.2014
Сообщений: 10
|
||||||
08.06.2014, 17:08 | 12 | |||||
Вот собственно как я делаю:
0
|
20 / 20 / 3
Регистрация: 14.06.2012
Сообщений: 95
|
||||||
08.06.2014, 21:43 [ТС] | 13 | |||||
Никита Александ, Вариант 1: создать окно без границ и считать как в полноэкранном режиме;
вариант 2: гляньте реестр и WindowMetrics, если мне не изменяет память, то параметр CaptionHeight. Формат точно не назову, но там что-то связанное с дюймами. Получите значение, переведите параметр в пиксели - решайте что делать при вычислении позиции курсора. Добавлено через 27 минут Никита Александ, я тут немножко наговнокодил:
0
|
08.06.2014, 21:43 | |
08.06.2014, 21:43 | |
Помогаю со студенческими работами здесь
13
Вращение фигуры мышью Вращение камеры мышью Вращение призмы мышью [GLUT] Вращение камеры мышью Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |