OpenGL подходит произвольной формы - PullRequest
0 голосов
/ 29 ноября 2010

Я новичок в opengl.В качестве учебного упражнения я начал вручную создавать некоторые базовые фигуры, а затем перешел к написанию универсального средства просмотра файлов .off.

Мой вопрос заключается в том, как "подгонять" "окно" под модели произвольного размера.я пытался «отступить» от модели, переводя в направлении -z некоторый фактор, основанный на диапазоне координат x, y или z, и это работает, как правило, но не всегда и кажется неправильным подходом,извините за цитаты, как я сказал, что я новичок и мне не хватает какой-то терминологии.

это происходит на платформе Android с использованием OpenGLES 1.0, если это имеет значение.

может кто угодноуказать мне лучшую практику для достижения этой цели?спасибо.

Ответы [ 2 ]

1 голос
/ 29 ноября 2010

Вам следует ознакомиться с функциями OpenGL для настройки громкости / усеченности вашего вида.

Вот статья , относящаяся к OpenGL ES (iPhone) , которая должна помочь вам начать, однакоСтандартное руководство по программированию OpenGL и ссылки также применимы к этим концепциям.

Веселитесь!

0 голосов
/ 25 мая 2011

Для достижения Fit-to-window для всех объектов в средстве просмотра, вы должны сначала знать экстенты всех объектов - xmin, xmax, ymin, ymax, zmin и zmax.Обычно ограничивающая сфера предварительно рассчитывается для всех отдельных объектов, и каждый раз, когда объект добавляется в средство просмотра, его ограничивающая сфера добавляется / включается в существующую глобальную ограничивающую сферу.Это означает, что изначально существует ограничивающая сфера для зрителя с радиусом, если 1, с центром в точке x0, y0 z0.Каждый раз, когда новый объект добавляется в средство просмотра, его предварительно рассчитанная ограничивающая сфера добавляется в средство просмотра.Под добавлением я подразумеваю обновление центра и радиуса исходной сферы так, чтобы она охватывала / содержала новую, и, таким образом, увеличивала глобальную для размещения новых сфер.Как только это будет сделано, всякий раз, когда пользователь выдает команду для подгонки, камера будет располагаться в центре сферы, а значения диапазона glOrtho будут обновляться до радиуса сферы.Обратите внимание, что при добавлении новых шперов центр глобальной сферы также будет меняться, так как объекты будут располагаться отдельно, и при добавлении их сфер будет получена новая сфера с большим радиусом и другим центром.Этот метод не дает точного соответствия в соответствии с различными проекциями вида (сверху, спереди, слева и т. Д.).Если вы хотите получить более точную посадку в разных проекциях, вам нужно иметь BoundingBox вместо сферы, но расчеты включают в себя множество проекций и вычислений смещения, и это более громоздко.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...