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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Cutting planes и libQGLViewer-2.3.11  (Прочитано 3326 раз)
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.103 секунд. Запросов: 22.