Соединение двухмерных изображений с помощью PyOpenGL - PullRequest
0 голосов
/ 24 ноября 2008

Я пытаюсь собрать воедино сцену, которая в основном состоит из:

  1. 2D-изображение Земли (представьте спутниковую фотографию НАСА), которое было повернуто в вид, подобный этому и
  2. Цилиндрические трубки, которые я хочу поместить в определенные координаты широты / долготы.

Мне удалось настроить 2-мерное изображение, как показано на ссылке выше, но я борюсь с созданием цилиндров. Эффект, который я надеюсь достичь, должен выглядеть примерно так: this . Во всяком случае, я понимаю, что это описание не так уж и много, наверное, потому, что я так мало знаю, что не знаю, о чем спрашивать.

Есть намеки? Имена функций GL, которые я должен найти, были бы особенно полезны. Я использую PyOpenGL на случай, если это имеет значение.

Ответы [ 4 ]

1 голос
/ 24 ноября 2008

Видео, которое вы предоставили в оригинальном сообщении, имеет ряд эффектов, которые вы можете или не можете подражать.

GLU / GLUT созданные объекты создаются в начале вашего текущего пространства просмотра модели, поэтому вам нужно будет перевести / повернуть / масштабировать их в нужное вам место.

Посмотрите на glColor, чтобы установить цвет рендеринга, прежде чем рисовать свои цилиндры.

для эффекта прозрачности требуется немного больше работы.

Посмотрите 'blending', glEnable (GL_BLEND), glBlendFunc, чтобы узнать об основах прозрачности.

Этот учебник HeNe может быть полезен: http://nehe.gamedev.net/data/lessons/lesson.asp?lesson=08

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

1 голос
/ 24 ноября 2008

GLUT - это библиотека, которая предоставляет коллекции вызовов opengl для часто используемых поведений, включая создание основных форм, таких как цилиндры.

Как только вам удастся создать цилиндр с помощью GLUT, вы можете расположить цилиндры с помощью матрица преобразуется в нужное вам место.

Если вы еще не проверили их, они могут быть полезны:

http://pyopengl.sourceforge.net/documentation/

http://www.opengl.org/documentation/red_book/

http://www.opengl.org/resources/libraries/glut/

1 голос
/ 24 ноября 2008

В этом уроке объясняется, как использовать квадратики для экономии времени рисования объектов в GL, есть пример цилиндра ближе к дну. Этот сайт также является отличным учебным ресурсом для OpenGL в целом. Хотя он использует C, вы можете видеть используемые функции и реализовывать их по желанию.

http://nehe.gamedev.net/data/lessons/lesson.asp?lesson=18

0 голосов
/ 24 ноября 2008

Спасибо за ответы.

Я прочитал учебники, они довольно хороши. Фактически они переводятся на python в демоверсиях, включенных в PyOpenGL. Я предполагаю, что моя проблема больше связана с установкой атрибутов цилиндра после того, как я его нарисовал, я должен был быть более конкретным, извините. Я, вероятно, упускаю что-то простое, но после нескольких часов попыток я выхожу пустым. Я действительно использовал библиотеку GLUT и попытался нарисовать glutSolidSphere в качестве теста. В моей сцене я не могу сделать ее цветной, как лучи, на которые я ссылаюсь в оригинальном посте.

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

...