Fluxus — Прототипирование OpenGL графики и игр on-the-fly (добавить Scheme по вкусу)

Интернет для программиста интересующегося трёхмерной графикой уже несколько лет полнится видео, в котором на лету программируют визуалайзеры для музыки, сложные цветоморфированные эффекты или даже намного более хитрые вещи, работающие на стыке интерактива и трёхмерной графики - буквально, человек пишет код и где-то на фоне он тут же компилируется, выполняется и отображается результат, это называется livecoding. Чаще всего такие программы пишутся на языках из Lisp-семейства, подобный редактор есть для ProcessingJS, он тут же рендерит результат выполнения графического кода в браузере, но речь не о нём.

Fluxus - это одновременно кроссплатформенный open-source 3D-движок для игр на принципах livecoding и инструмент для прототипирования трёхмерной графики и интерактива в собственном трёхмерном пространстве. И при этом он не обделён достаточно подробной документацией. Язык программирования - расширенный графическими командами PLT Scheme.

Впрочем, смотрите сами:

Когда приложение запускается, оно запускается в режиме интерпретатора. Чтобы переключиться в режим написания полной программы, который показан на большинстве видео, нажмите Ctrl+1. Чтобы запустить рендеринг описанной сцены - нажмите F5.

Вот, например, две вращающиеся меняющие цвет сферы:


(define (animate)
    (let* ((t (* (time) 2))
           (x (sin t))
           (y (cos t)))

    (with-state
        (translate (vector x y 0))
        (colour (vector (+ 1.5 (sin (time))) 0 0))
        (draw-sphere))

    (with-state
        (translate (vmul (vector x y 0) 3))
        (colour (vector 0 0 (- 1.5 (sin (time)))))
        (draw-sphere))))

(every-frame (animate))
🗓️ Timeline
  • Моделируем солнечную систему в fluxus

    Я уже писал про fluxus, систему livecoding и, по совместительству, 3D-прототипирования. Теперь хочу показать его возможности и как им можно пользоваться в целях, близких к псевдонаучным. Например, можно смоделировать и уместить упрощённую солнечную систему всего в 125 строк (это достоинство языка Racket с графическими стероидами, развития PLT Scheme, который лежит в основе fluxus). Вот как будет выглядеть результат:

#fluxus #opengl #scheme #racket #functional-programming