Блоґ одного кібера

Історія хвороби контуженого інформаційним вибухом

Posts Tagged ‘OpenGL

Пишемо переглядач молекул з Pyglet

with 2 comments

Я хотів створити серію уроків про графіку в OpenGL по слідах NeHe, але отримав іншу пропозицію, і пріоритети змінились. Ну й графіка в наш час людей не так цікавить. Але так як задачу я почав робити, просто витирати її з списку проектів буде не цікаво, краще опублікувати те що є і перенести в список закінчених проектів. Чим я зараз й займусь.

Ідея програми – намалювати атоми сферами різних кольорів і розмістити їх в різних місцях простору, таким чином отримавши молекулу. Для цього нам треба знати координати. Для цього ми використаємо Open Babel – хімічну експертну систему. Ось інструкції з інсталяції, apt-get install python-openbabel якщо кому лінь їх читати.

Глюкоза

Молекула глюкози

Користуючись нею, ми можемо перетворити формулу SMILES, на список координат атомів:
Прочитати решту цього запису »

Written by bunyk

Липень 24, 2015 at 18:30

Оприлюднено в Графіка, Кодерство

Tagged with , ,

OpenGL в Python

with 4 comments

Мене якось запитали про це, але без підготовки пояснити було важко, крім того мета була амбітна – намалювати молекулу, тому вийшло не так добре як би хотілось. Спробую написати короткий покроковий вступ в цю тему, який приблизно слідує послідовності в старих уроках 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. Май на увазі, якщо ти не хочеш навчити свою дівчину програмувати – вона може знайти когось хто схоче. 😛 Або взагалі сама з допомогою інтернету звикне вчитись.

Written by bunyk

Липень 16, 2015 at 02:45

Оприлюднено в Графіка, Кодерство

Tagged with ,

Норвегія, Morrowland

with 2 comments

Люблю людей, які здійснили те, що тільки намагаюсь здійснити я. Наприклад трійка норвезьких студентів ще з 2002 року вчиться і пише на сайт про все що вивчила. Впринципі, що я вам буду розказувати, вони краще знають:

Morrowland це зростаюча норвезька студентська організація. Нашою метою є збільшити знання прикладного програмування, цифрового дизайну, веб-програмування, аудіо і анімації. Ми хочемо структурувати і записати наші навики мультимедіа. Роблячи це, ми паралельно розвиваємо наш головний проект, сайт названий Apron Tutorials. Ціль сайту – дати відвідувачу інструкції, підручники, статті як для початківця, так і для професіонала, про мультимедіа, програмування, тривимірне моделювання, і т.д. Деякі частини сайту все ще в стані розробки.

Їх адреса www.morrowland.com. Знайшов я їх чисто випадково, коли шукав якусь функцію, вроді CreateGLWindow, точно не пам’ятаю. Але що мені в них найбільше сподобалось – це підручник OpenGL. Він базується на підручнику NeHe, але сильно його розширює. Тільки про камеру 6 статтей. Камера від першої особи, від третьої особи, і т.д. Крім того, завантаження моделей і текстур, і обчислення зіткнень.

Коротше кажучи, ззовні – чудесний сайт, а що всередині, ще треба подивитись.

Written by bunyk

Травень 18, 2009 at 00:32

Оприлюднено в Графіка, Павутина

Tagged with ,