Russian Qt Forum
Мая 06, 2025, 13:27 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Cutting planes и libQGLViewer-2.3.11  (Прочитано 3535 раз)
Solange
Гость
« : Ноября 21, 2012, 07:38 »

Коллеги, порошу помощи в борьбе с cutting planes.

Во вложениях нормальная сцена, и сцена масштабированная с glScalef.
Видно, что отрезается передняя часть объекта.

Возможно это связано с используемой библиотекой libQGLViewer-2.3.11. Исправить проблему штатными средствами библиотеки не удалось (либо не на те методы смотрю).

Буду признательна за любой совет!

Код отрисовки предельно прост:
Код:
	glMatrixMode(GL_MODELVIEW);
glPushMatrix();
glPushAttrib(GL_ALL_ATTRIB_BITS);

glEnable(GL_NORMALIZE);

glScalef(_zoomFactor, _zoomFactor , _zoomFactor);

// Draw scene
_pGraphicsModel->draw_scene();

glPopMatrix();
« Последнее редактирование: Ноября 21, 2012, 11:03 от Solange » Записан
Disa
Гость
« Ответ #1 : Ноября 21, 2012, 10:41 »

А можно "посмотреть" на плоскости отсечения (как происходит перспективное преобразование)?

Зачем два раза?
Код
C++ (Qt)
glPopMatrix();
glPopMatrix();
 
Записан
Solange
Гость
« Ответ #2 : Ноября 21, 2012, 11:03 »

Опечатка) В коде присутствует один раз
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #3 : Ноября 21, 2012, 12:36 »

Видно, что отрезается передняя часть объекта.
А почему бы ей не отрезаться если в результате масштабирования камера оказалась внутри объекта?  Убедитесь что с _zoomFactor = 1 все норм, дальше плавно меняйте и смотрите. Еще лучше интерактивно, от колесика мыши
Записан
Solange
Гость
« Ответ #4 : Ноября 21, 2012, 13:58 »

Видно, что отрезается передняя часть объекта.
А почему бы ей не отрезаться если в результате масштабирования камера оказалась внутри объекта?  Убедитесь что с _zoomFactor = 1 все норм, дальше плавно меняйте и смотрите. Еще лучше интерактивно, от колесика мыши
Спасибо за Ваш комментарий!
Если коэффициент масштабирования приравнять к единице, тогда объект не приблизится к камере, и проблема не проявится.
Если двигать камеру по отношению к объекту, проблема остается таже. Раньше zooming был реализован именно так, приближением камеры, а не масштабированием.
Если установить расстояние от камеры до ближней плоскости отсечения равным нулю, то теоретически отсекаться ничего не должно. И в libQGLViewer есть такая функция, только проблема ей почему то не решается
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #5 : Ноября 21, 2012, 14:20 »

Напр человеческий глаз тоже перспективная камера. Если Вы залезли внутрь объекта (неважно каким образом) - заднюю (к Вам) стенку Вы напрямую не увидите, это нормально.

Если установить расстояние от камеры до ближней плоскости отсечения равным нулю, то теоретически отсекаться ничего не должно.
Это работает только для того что перед камерой, но не позади ее. Просто используйте изометрию (glOrtho), там этой проблемы нет
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.028 секунд. Запросов: 20.