Russian Qt Forum

Qt => 2D и 3D графика => Тема начата: Solange от Ноябрь 21, 2012, 07:38



Название: Cutting planes и libQGLViewer-2.3.11
Отправлено: 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();


Название: Re: Cutting planes и libQGLViewer-2.3.11
Отправлено: Disa от Ноябрь 21, 2012, 10:41
А можно "посмотреть" на плоскости отсечения (как происходит перспективное преобразование)?

Зачем два раза?
Код
C++ (Qt)
glPopMatrix();
glPopMatrix();
 


Название: Re: Cutting planes и libQGLViewer-2.3.11
Отправлено: Solange от Ноябрь 21, 2012, 11:03
Опечатка) В коде присутствует один раз


Название: Re: Cutting planes и libQGLViewer-2.3.11
Отправлено: Igors от Ноябрь 21, 2012, 12:36
Видно, что отрезается передняя часть объекта.
А почему бы ей не отрезаться если в результате масштабирования камера оказалась внутри объекта?  Убедитесь что с _zoomFactor = 1 все норм, дальше плавно меняйте и смотрите. Еще лучше интерактивно, от колесика мыши


Название: Re: Cutting planes и libQGLViewer-2.3.11
Отправлено: Solange от Ноябрь 21, 2012, 13:58
Видно, что отрезается передняя часть объекта.
А почему бы ей не отрезаться если в результате масштабирования камера оказалась внутри объекта?  Убедитесь что с _zoomFactor = 1 все норм, дальше плавно меняйте и смотрите. Еще лучше интерактивно, от колесика мыши
Спасибо за Ваш комментарий!
Если коэффициент масштабирования приравнять к единице, тогда объект не приблизится к камере, и проблема не проявится.
Если двигать камеру по отношению к объекту, проблема остается таже. Раньше zooming был реализован именно так, приближением камеры, а не масштабированием.
Если установить расстояние от камеры до ближней плоскости отсечения равным нулю, то теоретически отсекаться ничего не должно. И в libQGLViewer есть такая функция, только проблема ей почему то не решается


Название: Re: Cutting planes и libQGLViewer-2.3.11
Отправлено: Igors от Ноябрь 21, 2012, 14:20
Напр человеческий глаз тоже перспективная камера. Если Вы залезли внутрь объекта (неважно каким образом) - заднюю (к Вам) стенку Вы напрямую не увидите, это нормально.

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