Posts Tagged ‘OpenGL’
Пишемо переглядач молекул з Pyglet
Я хотів створити серію уроків про графіку в OpenGL по слідах NeHe, але отримав іншу пропозицію, і пріоритети змінились. Ну й графіка в наш час людей не так цікавить. Але так як задачу я почав робити, просто витирати її з списку проектів буде не цікаво, краще опублікувати те що є і перенести в список закінчених проектів. Чим я зараз й займусь.
Ідея програми – намалювати атоми сферами різних кольорів і розмістити їх в різних місцях простору, таким чином отримавши молекулу. Для цього нам треба знати координати. Для цього ми використаємо Open Babel – хімічну експертну систему. Ось інструкції з інсталяції, apt-get install python-openbabel
якщо кому лінь їх читати.
Користуючись нею, ми можемо перетворити формулу SMILES, на список координат атомів:
Прочитати решту цього запису »
OpenGL в Python
Мене якось запитали про це, але без підготовки пояснити було важко, крім того мета була амбітна – намалювати молекулу, тому вийшло не так добре як би хотілось. Спробую написати короткий покроковий вступ в цю тему, який приблизно слідує послідовності в старих уроках Nehe (так, я чув що вони застаріли, але для нового OpenGL з шейдерами я якихось гарних послідовних уроків не бачив).
Інсталяція та перше вікно
Найперше що потрібно графічним програмам – вікно. Щоб створити вікно, нам треба якусь бібліотеку, наприклад PyQt, PySide, PyGtk, WxPython чи PyGame – їх купа. Потрібно також щоб це вікно підтримувало контекст OpenGL (тобто могло дозволити відеокарті виводити свої дані в область вікна). З цим може справитись багато бібліотек, але ми виберемо Pyglet. Тому що в ній мало зайвого, і вона ставиться традиційно:
pip install pyglet
Ну, і як годиться – почнемо з найпростішої програми:
import pyglet window = pyglet.window.Window(width=640, height=480, caption="Hello OpenGL!") pyglet.app.run()
Отримаємо вікно заданої ширини та висоти, і з заданим заголовком:
Елементарно, правда?
Фарби
Давайте ще зафарбуємо вікно в білий колір. Для цього потрібно знати що кольори задаються переважно інтенсивністю світла в моделі RGB (червоний, зелений, голубий), числами від 0 до 1. Тобто білий – це 1.0, 1.0, 1.0, сірий – 0.5, 0.5, 0.5, і т.п. Детальніше на вікіпедії.
import pyglet from pyglet.gl import * # імпортуємо всі функції OpenGL # вони починатимуться з префіксів gl або glu, тому простір імен надто не засмічуватимуть window = pyglet.window.Window(width=640, height=480, caption="Hello OpenGL!") # я не буду довго пояснювати що таке декоратор. Просто знайте, що # @window.event позначає функції що відповідають за обробку подій @window.event def on_draw(): # викликатиметься, коли операційна система вирішить що вікно треба перемалювати # наприклад, коли ми забрали вікно що було над нашим, або вперше виводимо його на екран glClearColor(1.0, 1.0, 1.0, 1.0) # Задати колір яким ми будемо очищати екран. # Четверте число - прозорість. # Я його сам не дуже розумію, але обов’язково треба чотири параметри. glClear(GL_COLOR_BUFFER_BIT) # очистити буфер кольору # (бувають і інші буфери, але про це пізніше) pyglet.app.run()
To be continued
В цьому уроці я хотів ще написати про те як намалювати трикутник, але часу мало (тобто є інші пріорітети). Зате ми створили вікно і навчились змінювати його колір. Ну й краще напевне писати менше але частіше. Якщо пілотний епізод цього курсу буде популярний – подумаю чи випускати перший сезон.
P.S. Май на увазі, якщо ти не хочеш навчити свою дівчину програмувати – вона може знайти когось хто схоче. 😛 Або взагалі сама з допомогою інтернету звикне вчитись.
Норвегія, Morrowland
Люблю людей, які здійснили те, що тільки намагаюсь здійснити я. Наприклад трійка норвезьких студентів ще з 2002 року вчиться і пише на сайт про все що вивчила. Впринципі, що я вам буду розказувати, вони краще знають:
Morrowland це зростаюча норвезька студентська організація. Нашою метою є збільшити знання прикладного програмування, цифрового дизайну, веб-програмування, аудіо і анімації. Ми хочемо структурувати і записати наші навики мультимедіа. Роблячи це, ми паралельно розвиваємо наш головний проект, сайт названий Apron Tutorials. Ціль сайту – дати відвідувачу інструкції, підручники, статті як для початківця, так і для професіонала, про мультимедіа, програмування, тривимірне моделювання, і т.д. Деякі частини сайту все ще в стані розробки.
Їх адреса www.morrowland.com. Знайшов я їх чисто випадково, коли шукав якусь функцію, вроді CreateGLWindow
, точно не пам’ятаю. Але що мені в них найбільше сподобалось – це підручник OpenGL. Він базується на підручнику NeHe, але сильно його розширює. Тільки про камеру 6 статтей. Камера від першої особи, від третьої особи, і т.д. Крім того, завантаження моделей і текстур, і обчислення зіткнень.
Коротше кажучи, ззовні – чудесний сайт, а що всередині, ще треба подивитись.