Рисование нескольких связанных объектов в OpenGL - PullRequest
0 голосов
/ 14 октября 2011

Я хочу нарисовать основную руку робота, используя OpenGL, используя примитивные формы, такие как цилиндры, кубы и т. Д.

В этот момент мне удалось статически нарисовать руку, применив необходимые преобразования, а именно.перевод, вращение, масштабирование и т. д.

Теперь мне нужно сделать его интерактивным.То есть, когда пользователь выбирает определенный объект и перемещает его, прикрепленные к нему объекты меньшего размера должны двигаться.

Пример: - Если пользователь перемещает руку, запястье, ладонь и пальцы должны двигаться, но не плечо.Аналогичным образом, если ладонь выбрана и повернута вокруг запястья, только пальцы, прикрепленные к этой ладони, могут двигаться вместе с ладонью, а не рукой или запястьем.

Какому шаблону проектирования я должен следовать в своем коде, чтобы добиться этого чисто?

Ответы [ 3 ]

1 голос
/ 15 октября 2011

Я сам с ними не работал, но я знаю, что OpenGL отслеживает матрицы преобразования в стеке.

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

Проверьте эту страницу наподробнее (я сам не читал!):

http://fly.cc.fer.hr/~unreal/theredbook/chapter03.html

Помогает ли это?Это кажется применимым для простых случаев, таких как то, что вы описываете.Для более сложных приложений Pascal T прав, что вы можете захотеть взглянуть на слои поверх OpenGL.

1 голос
/ 15 октября 2011

То, что вы здесь делаете, называется иерархией преобразований и на самом деле охватывается главой о преобразованиях в руководстве по программированию OpenGL-1.1 (последние версии OpenGL, а именно v3 и более поздние версии largeley урезали материал для манипулирования матрицами, поэтомуВы должны реализовать это самостоятельно, но принцип остается тем же самым.)

Посмотрите в конце этой главы (я предлагаю вам прочитать всю статью):

http://fly.cc.fer.hr/~unreal/theredbook/chapter03.html

1 голос
/ 15 октября 2011

Я не специалист, но я думаю, вам стоит подумать об использовании инструментария поверх OpenGL. Может быть, что-то вроде OpenSceneGraph (http://www.openscenegraph.org/projects/osg/wiki/About/Introduction)

Посмотрите на введение здесь: http://www.artoolworks.com/support/library/An_Introduction_to_OpenSceneGraph_and_osgART

Это объясняет, что вы можете строить "деревья объектов", которые будут связаны.

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