強火で進め

このブログではプログラム関連の記事を中心に書いてます。

NodeBoxを真面目に勉強開始

NodeBox | Home
http://nodebox.net/code/index.php/Home

NodeBoxというPythonで作られたメディアアート系のグラフィック作成ツールが有ります(OSはMacのみ対応)。

前にもちょっと触った事が有るのですが今回、ちょっと本格的に使い始めようと勉強を始めました。NodeBoxは現在、バージョン2が作成中みたいですがまだβですし、バージョン1の方が情報が多いだろうという判断でこちらにしました。

まずは簡単にどんなツールなのか紹介。

最終的な出力としては画面に表示する他に「画像ファイル(PDF/EPS/PNG/TIFF/JPEG/GIF)に保存」「動画ファイル(Quick Time)に保存」が可能です。

メインの画面はこんな感じです。


ここが描画結果が表示されます。

描画結果のサイズはここで倍率を変更出来ます。ディスプレイのサイズが小さいマシンで作業する時などはここで倍率を小さくする事により、小さな画面でも全体の描画結果を確認出来ます。


ここにプログラムを記述します。


ここにはプログラムのエラーやデバッグ用のテキストなどが出力されます。

プログラム

プログラムは基本的にはPythonで出来る事は全部できます。Pythonにあまり詳しくない場合は入門レベルの勉強は最初にやっておいた方が良いかもしれません。

サンプル

一番、シンプルなサンプルとしてはこんな感じになります。

size(500, 300)
rect(10, 10, WIDTH/2, HEIGHT/2)
print WIDTH, HEIGHT

このプログラムをここに記述して、command+Rを押すとプログラムが実行されます。

size() で最終的な描画画像のサイズを指定します。

rect() で四角形を描画。引数は(x位置, y位置, 幅, 高さ)というシンプルな指定だけで描画をする事が出来ます。 WIDTH と HEIGHT は最終出力の画像の幅と高さで size() で指定した値が自動的に保存されています。

print はデバック用の出力に使用します。ここで指定した内容はこちらに出力されます。

便利機能

便利な機能として実行中に「リアルタイムに値を変更する」機能が有ります。数値の部分を選択した状態でcommand+スクロールを実行する事でその変更した値がリアルタイムに反映されて描画結果に反映されます。

1枚絵を描画する場合は先ほどの様なプログラムでも問題無いのですがあの方法ではアニメーションを行う事が出来ません。アニメーションを行う時は draw() を使い、以下の様に記述します。

size(500, 500)
speed(50)

def setup():
    global deg
    deg = 0
    
def draw():
    global deg
    
    deg += 1
    if deg >= 360:
        deg -= 360
    print deg
    rotate(deg)
    rect(WIDTH/4, HEIGHT/4, WIDTH/2, HEIGHT/2)

speed() でフレームレート(1秒間に描画する回数)を設定します。

def setup(): はアニメーションが開始される前に1度だけ呼ばれます。初期化処理はここで行います。今回は rad という変数をグローバル変数として定義して0で初期化しています。

def draw(): では最初に

from math import sin, radians

でモジュール(他の言語のライブラリに当たるもの)を読み込んでいます。mathモジュールからsinとradiansをインポートしています。

次に draw() の中でもグローバル変数 rad が使える様に global rad 。

rad は角度を指定するので0〜359の範囲でループする様に記述しています。

print rad は rad がちゃんと0〜359の範囲でループしてるか確認するたデバック用に記述しています。

rotate() は回転量を指定しています。その後に描画する rect() に反映されます。
プログラムをコピペし、command+Rを押すと四角形が回転するのが確認出来ます。

描画結果を動画に保存

NodeBoxは動画に保存する事が本当に簡単に行えます。

手順としてはまずショートカットでshift+commad+Eを押します。
するとこの様なパネルが表示されます。下の入力欄には「フレームレート」を指定します。プログラムの speed() で指定したフレームレートの指定は無視されこちらの数値が使用されます。上の入力欄には「フレーム数」を指定します。ここではフレーム数には150、フレームレートには30を指定しています。この場合、 150/30=3 となるため3秒の動画が作成される事になります。もし、10秒の動画を出力した場合は上のフレーム数に300を設定するとOKです。

無料でこんなに簡単に動画の出力まで出来るツールはそんなに多く無いです。メディアアート系のプログラムを簡単に始めたい人にお勧めのツールです。

自分が作る動画作品の背景用動画や画像を作るツールとしても活用出来ると思います。ちなみに自分は自分が作るプログラムの中でちょっとしたサンプル動画が必要なときに簡単に作成するツールとして活用しようと思っています。