2015年10月30日金曜日

1/fゆらぎ (その2)

と、言うわけで"つづき"ました。

前回の記事は「1/fゆらぎ (その1)」をどうぞ。


では、このロウソクの火の揺らぎっぽいものを1/fゆらぎを使って再現してみたいと思います。

まず1/fゆらぎって何ぞや?
1/fゆらぎ (エフぶんのいちゆらぎ) とは、パワー(スペクトル密度)が周波数fに反比例するゆらぎのこと。 
ピンクノイズとも呼ばれ、自然現象においてしばしば見ることができる[1]。具体例として人の心拍の間隔や、ろうそくの炎の揺れ方、電車の揺れ、小川のせせらぐ音、目の動き方、木漏れ日、物性的には金属の抵抗、ネットワーク情報流、蛍の光り方などが例として挙げられる。 (wikipedia 「1/fゆらぎ」より)
ふむ。
さっぱり意味がわからないけど、なんだか色々なものをそれっぽく再現するのに役立ちそうだ。

具体的にこの1/fゆらぎを実装するための方法としては

  • セルラーオートマトン法
  • 1/2階積分法
  • 間欠カオス法

などなどがあるらしい。
この中で「間欠カオス法」ってやつが一番簡単なようなので、お馬鹿な私でも出来そうだと思うのでこれで作ってみます。

間欠カオス法

0~1の範囲のある値xについて、

x < 0.5の場合
 x = x + 2 * x * x

x >= 0.5の場合
 x = x - 2 * (1 - x) * (1 - x)

を計算して、このxをまた次の計算の入力にしていく感じらしいです。


ふむ。
確かに計算式的には難しくない。
何故このような式になるのかはさっぱりわからないけれど。

と、いうわけで、この式を使って今度こそ実際に作ろうと思います!
「えっ?まだ作らないの?さっさと作れよ!!!」という声が聞こえてきそうですが、つづく!!!(多分)

1/fゆらぎ (その1)

そんなわけで、とりあえず何かを作ってみようかと思います。

とは言っても何もかもが素人なので、急にすごいものは作れない。
いや、すごいものどころかまともに動くものすら作れるのか・・・。

やっぱり最初は丸とか四角を描画して動かしたりするものなのかなー?
でもそういうのはそこらじゅうに転がっているし、今更感強いかなー?

なんて事を考えていたら、今はちょうどハロウィン。
何かこれにひっかけて出来ないものかと考えてみました。

ハロウィンと言えば「ジャックオーランタン」だよなぁ。
とは言え、例えば3Dのジャックオーランタンを作成してグリグリ動かすなんて事は今の俺には出来そうに無い。例によってBlenderはインストールしているものの、まともに触っていないので。

そうなると・・・光源。
そうだ!ランタンの光源なんてどうだ!?
ろうそくの火みたいにゆらゆら揺れるものを何とかしてみたり。

って事で、早速ググってみる。

明日から本気出す(´・ω・`):LEDで炎のゆらめき(1/fゆらぎ)をPWMで表現してみる
http://d.hatena.ne.jp/rinie/20120917/1347821818

ほほう。
「1/fゆらぎ」ってやつがポイントかな?

むむむっ!?でも「1/fゆらぎ」って単語は聞いたことがあるぞ。
意味はよくわからないけど、癒し系の曲とかに含まれているとかなんとか。
ロウソクの火の揺らぎもこれで再現可能なのか。
知らなかった。

よし、とりあえずこの1/fゆらぎってやつを作ってみよう。
今のところJavaを使い慣れているってのもあってProcessingを使おうかと考えています。

つづく(多分)

2015年10月29日木曜日

道具が決められない

さて、勢いアートプログラミングをやってみたいと言ってはみたものの、道具として何を使うのかをまだ何も決めていません。

道具として使えそうなもので、名前だけ知っているというレベルから、多少は使った事があるというレベルまでで私が知っている限りをリストアップすると以下の通りです。

  1. Processing
  2. vvvv
  3. openFrameworks
  4. JavaScript
  5. Unity
  6. UnrealEngine4

1. Processing

Javaをベースにした電子アートとビジュアルデザインのためのプログラミング言語のようです。

チュートリアル程度の簡単なものを作成してみたり、Qiitaなどからコードをコピペして動かしたりはしています。比較的短いコードでも、かなり良さげな表現が出来る感触があります。

公式Webサイト: https://processing.org/

2. vvvv

プログラミングという分類に入れるべきかは悩むところですが、一応ビジュアルプログラミングという事で、選択肢には入れようかと思っています。後述しますが、何より触っていて楽しいので。

vvvv(ぶいふぉー)は、「ノード」と呼ばれる単一あるいはひとかたまりの機能を持つ箱を線で繋げていく事によって全体の動作を決めていきます。これらは絵として表現されるので、通常のプログラミング言語のように文字の羅列を入力する必要はほとんどありません。

こちらもチュートリアルレベルのものを触った感じですが、操作体系が独特ですごくおもしろいなと感じました。作る過程そのものも楽しいと感じます。ただ本当に独特なので、しばらく触っていないと操作を忘れてしまっていてどうしたものかと悩む事になりました。

公式Webサイト: http://vvvv.org/

3. openFrameworks

openFrameworksは「創造的なプログラミング」のためのC++のオープンソースツールキット、らしいです。私がやりたいアートプログラミングのような事を実現するために使用する様々なライブラリを簡単に使えるようにするためのもののようです。

正直、まったく使った事が無いので、どうなのかわかりません。
とりあえずC++で作成する分、速度面では有利そうです。
また自由度もかなりありそうです。

対応している環境としても、Windows、Mac OSX、Linux、iOS、Androidという事なので、幅広い環境で動かせそうです。

公式Webサイト: http://openframeworks.jp/

4. JavaScript

言わずと知れた、ブラウザ上で動作するアレです。
正確に書くならば恐らく「HTML5(Canvas) + JavaScript」という事になるかと思います。

JavaScriptというレベルでみると資料はたくさんありますし、これからこういった分野で使われる本命ではないでしょうか。

また、作品を公開するまでのハードルは一番低いかなと思います。
恐らくBloggerでも記事中に埋め込む事が可能だと思いますし。

5. Unity

元々は汎用ゲーム用のオーサリングツールだったと思います。
ゲーム用という事もあり、2D/3Dのグラフィックスをインタラクティブに動かすのが簡単に、かつ自由度高くできるのではないかと思います。また豊富なアセットも魅力的なのかなと思ったりします。

Unityは特にVR用のコンテンツが作りたいなぁと思った時に選択肢に挙がるかなと思っています。
一応私もタオバイザーを持っていますので、それで見られるコンテンツなんか作ってみたいですね。

一応インストールはしているのですが、ほとんど触っていません。

公式Webサイト: http://japan.unity3d.com/

6. UnrealEngine4

Unityと同じようなゲーム用のオーサリングツール&実行エンジンです。

元々FPS(ファーストパーソンシューティング)用に開発されたゲームエンジンだったと思います。商用ゲームでも多く採用されていて、かなりリッチな表現が可能だと思っています。

ちょっと前に無償で利用可能になったため、私のような貧乏おっさんでも利用できそうです。
ただ、Unity同様インストールまではしたのですが、ほとんど触れていません。

公式Webサイト: https://www.unrealengine.com/ja/blog

まとめ

恐らくこういった悩みに対する一般的な答えとしては、「何を作りたいのか」をまず明確にするべき、道具はそれに合わせて決めるものだ、という事になると思います。私も他人にアドバイスするならば、そのような事を言うと思います。

だがしかし、だがしかしですよ。
ぶっちゃけこれじゃなきゃ絶対に実現不可能、みたいなものは現状の私のレベルではないわけで、そうなると楽なものだったり、使い慣れているものに近かったり、資料やサンプルが多いものだったり、という事になってくるのですが、その評価軸が多すぎて一体どれをどうしようか・・・と悩むワケです。

悩んでる暇があったら作品のひとつでも作れと。

はい、その通りです。

というわけで、悩みながら、色々と使いながら、だんだん気が付けばこればっかり使うようになったなみたいな感じで使うものを決めていこうかなと思います。そんなわけでこれから上記で挙げたようなものを使っていってみたいと思います。

2015年10月26日月曜日

はじめてみました

ブログのタイトル通り、インタラクティブアートやメディアアートとか呼ばれる、いわゆるアートプログラミングをやってみたいと思ったオッサンが、それっぽい事を色々とやってみた記録を残していこうと思います。

簡単な自己紹介としては、メーカー系のエンジニアで、組み込み系のGUIを主に開発してきました。

これまで使ってきた言語はC/C++、C#、Javaです。

アートプログラミングには興味があったものの、なかなか一歩が踏み出せず、processing、vvvvなんかも触ってはみたものの本格的には触っていない感じです。

数学は数式を見ただけで気絶するレベル。

そんな素人のおっさんプログラマーがアートプログラミングに挑戦していきます。
どうぞ長い目で見守ってください。よろしくお願いします。