ライブコーディング環境「fluxus」

こんにちは。エンジニアのNHです。
今日は、ライブコーディング環境「fluxus」をご紹介したいと思います。

(fluxus)とは

(fluxus)は、Schemeベースのライブコーディング環境です。 国内の紹介記事はほとんど見た事がありませんが、非常に面白く、多機能です。

 【公式サイト】 http://www.pawfal.org/fluxus/

(fluxus)の特徴

・Schemeの文法で記述
 Schemeは、LISPの一種で、Common LISPに並ぶ存在と思います。「()」が多いのが特徴ですね。 

・ライブコーディングできる
ビルドしません。その場で即時実行され、結果がリアルタイムで確認出来ます。

・結果表示画面とエディター画面が統一されている
エディターでガリガリ書いていく中で、背景に結果が表示されます。

・3Dが手軽に扱える
3Dを手軽に扱う事ができます。
 立方体を出すだけなら、コマンド一発です。
(draw-cube)

この手軽さにより、グラフィカルな表現が可能になります。

(fluxus)でライブコーディング

ごく一部の機能になりますが、fluxusのマニュアルをもとに、簡単にライブコーディングしてみたいと思います。
 まず、立方体を表示してみます。

(define (render-cube)
 (draw-cube))
(every-frame (render-cube)) 

「draw-cube」で立方体が描画されます。
 「define」で関数を定義します。今回の場合、立方体を描画する関数「render-cube」を定義しています。
「every-frame」を使い、「(every-frame (render-cube))」とすることで、 毎フレーム「render-cube」が実行され、立方体の描画が行われます。

 次に、再帰を使ってみます。

(define (recursion count)
 (cond
  ((not (zero? count))
   (draw-cube)
   (translate (vector 1.1 0 0))
  (recursion (- count 1)))))

(every-frame (recursion 10))


「cond(条件分岐)」で0かそうでないかを分岐((not (zero? 〜))しています。
 再帰により、条件が真の時、X位置をずらしながら、立方体が10個横並びに描画されました。

 動きが欲しいので、アニメーションさせてみます(動画あり)

video

(define (recursion count)
 (cond
  ((not (zero? count))
    (draw-cube)
    (rotate (vector 0 0 (* 60 (sin (time)))))
    (translate (vector 1.1 1.1 1.1))
  (recursion (- count 1)))))

(every-frame (recursion 10))

まとめ

このように、非常に簡単にライブコーディングする事ができました。
(fluxus)は、OSCを使ったオーディオ連携、シミュレーションなど、できることも非常に多いです。

今後、アルゴリズムのアイデア検討など、いろいろと活用してみたいと思います。



トンガルマンWebサイト
https://tongullman.co.jp/index.php
facebook
https://www.facebook.com/Tongullman

0 件のコメント:

コメントを投稿