Russian Qt Forum

Qt => OpenGL => Тема начата: spirits25 от Апрель 16, 2013, 12:56



Название: [РЕШЕНО] Расчёт bounding box для QGLSceneNode
Отправлено: spirits25 от Апрель 16, 2013, 12:56
Всем доброго времени суток.

Есть 3D сфера, которая является объектом QGLSceneNode. Мне необходимо посчитать какая часть этой сферы видна, то есть не обрезается ни границами экрана, ни скрыты за передней часть сферы. То есть то, что действительно видит пользователь.

У QGLSceneNode есть метод boundingBox, но для сферы он выдаёт постоянно одно и то же значение, даже если границы экрана обрезают большую часть:
Код:
QBox3D((-0.5, -0.496453, -0.5) - (0.5, 0.496453, 0.5))
Как я понял он выдаёт лишь видимую часть сферы относительно самой сферы (видимая пользователю часть), но она не меняется при вращении сферы.

В доках прочитал:
Цитировать
Returns a bounding box for the portion of the geometry referenced by this scene node

Может кто знает как узнать видимую пользователем часть QGLSceneNode стандартными средствами Qt?
Спасибо.


Название: Re: Расчёт bounding box для QGLSceneNode
Отправлено: Igors от Апрель 17, 2013, 11:19
Ф-ции не знаю, по-народному переводить вертексы в координаты экрана и там отсекаться. Ну ладно, не буду лезть с "многочисленными советами"  :)


Название: Re: Расчёт bounding box для QGLSceneNode
Отправлено: spirits25 от Апрель 17, 2013, 11:53
Ф-ции не знаю, по-народному переводить вертексы в координаты экрана и там отсекаться. Ну ладно, не буду лезть с "многочисленными советами"  :)

Благодаря этим многочисленным советам, я порой начинаю понимать что и как делать=)


Название: Re: Расчёт bounding box для QGLSceneNode
Отправлено: spirits25 от Апрель 17, 2013, 11:56
Ф-ции не знаю, по-народному переводить вертексы в координаты экрана и там отсекаться. Ну ладно, не буду лезть с "многочисленными советами"  :)

Я вот только не знаю, как мне узнать, какие вертексы видны, а какие скрыты. и как их перевести в координаты экрана тоже пока не понятно, хотя не думал об этом.


Название: Re: Расчёт bounding box для QGLSceneNode
Отправлено: Igors от Апрель 17, 2013, 14:15
Ищите где-то около gluProject, должно быть.


Название: Re: Расчёт bounding box для QGLSceneNode
Отправлено: spirits25 от Апрель 18, 2013, 12:17
Ищите где-то около gluProject, должно быть.

Немного не по заданной теме, но решение я нашёл.

Решил следующим образом - я могу посчитать сколько километров в одной пикселе или в одном тайле (в тайле 256 пикселей). Зная своё расстояние от центра я могу посчитать сколько это тайлов=)


Название: Re: Расчёт bounding box для QGLSceneNode
Отправлено: Igors от Апрель 18, 2013, 16:50
Немного не по заданной теме, но решение я нашёл.

Решил следующим образом - я могу посчитать сколько километров в одной пикселе или в одном тайле (в тайле 256 пикселей). Зная своё расстояние от центра я могу посчитать сколько это тайлов=)
Для перспективного изображения пиксели имеют "разный размер". Напр далеко стоящая точка охватывает гораздо большее расстояние


Название: Re: Расчёт bounding box для QGLSceneNode
Отправлено: spirits25 от Апрель 19, 2013, 10:50
Для перспективного изображения пиксели имеют "разный размер". Напр далеко стоящая точка охватывает гораздо большее расстояние
Полностью согласен, но на больших "зумах" эта разница быстро уменьшается. Даже при четвёртом увеличении http://tile.openstreetmap.org/4/8/7.png (http://tile.openstreetmap.org/4/8/7.png) это уже не так критически сказывается=)