ページ

2015年11月10日火曜日

ofxNI2の使い方

昔のメモをとりあえず、こちらに。
xtionをoFで使うのであれば、今だとこちらaddonが簡単だと思うので導入メモを残す。
https://github.com/satoruhiga/ofxNI2

1. ofxNI2をダウンロードしてoFのaddOnsフォルダにコピー。普通のアドオンと一緒。
2. openNI2のドライバがアドオンに同梱されているのでそれらを実行時に読み込まれる場所にコピーするシェルを設定する。
2-1. プロジェクトの画面(?)のTARGETSを開いて、Build Phasesを選択。
2-2. 左上の+ボタンを押して(意外とわかりづらい)「New Run Script Phase」を選択する。それで Run ScriptgScriptが追加される筈。
2-3. ofxNI2のreadmeにあるRun Scriptをコピペ。

2.の手順は文章だけだとわかりづらいのでスクリーンショットも。



それにしてもxtion、中古の値段がひどい・・・

2015年6月16日火曜日

忘備録2(パーリンノイズ編)

ベジェ曲線での何本か引いてみて面白かったので次はパーリンノイズを組み合わせて何か出来ないか、というテーマで作ったのが以下の画像です。

「ジェネレイティブ・アート」という、ストレートな題名の本があるのですが、その中でもパーリンノイズに触れられていて、それを読んだ時には「丁度いい塩梅の適度な乱数」程度のふんわりとした理解でいました。

それでふんわり理解すぎたのでもうちょい理解したいと思って作ったのが下の画像です。
基本的には画像のx軸とy軸をパーリンノイズの元にして、そのノイズを元に縦方向へベジェ曲線を引く、ということをやっています。

ちょっとした滝の流れみたいで個人的には気にいってます。




最近、作ったものの忘備録(ベジェ曲線編)

自動生成されるような画像に興味が急に出てきて、いくつかチャレンジしてみました。
仕事の谷間でもあったので何回化にわけて最近、作ったものをまとめてみます。一応のテーマみたいなものもあるのでそれも一緒に紹介しつつ。

この学習のテーマはベジェ曲線。
下のような画像を学習用に作成しました。

これは最低2点の点を定義して、その2点を移動させながら、線を引いただけのものなのですが、それっぽい画像が出来て満足できました。
ただ、この画像が物足りないのはこれが何の規則性も持っていないので、まとまりに欠けすぎている点で面白みが感じられないのは課題。

それでもタマにそれっぽい画像が出てくるのがこういうプログラムの面白いところではあります。






2014年5月18日日曜日

デザインフェスタ vol.39にて展示を行いました

5月19日(土)・20日(日)にて行われたデザインフェスタ vol.39にて展示を行いました。
まずはブースにて遊びにきていただいた皆様、本当にありがとうございました!

とても楽しい展示となりました。

とりあえず展示したものと展示の様子がわかる動画と写真をアップします。

まず、展示した作品。
それから展示の様子。


展示前は準備不足すぎて、結局、その場でコードを修正しながらの展示(というより公開開発)というデタラメな内容だったんですが、
逆にこれがよかったようで、コード修正中はなぜかギャラリーが出来ていました(笑)

最初はわりとプログラムが好きな方が反応してくれたりしてたんですが、
コードを改良していくにつれて、子供と身体表現をする方(ダンサーなど)が面白がってくれていたのが、
予想外で、本当に楽しいデキゴトでした。

次回のデザインフェスタにも是非、参加しようと思っています。

2014年3月16日日曜日

過去にprocessingで作成したもの





processingにハマっていた時になんとなく作ったもの。
ちょうど、これを作る直前に宇宙についての動画を見てなんとなく、
惑星同士の関係を簡単なモデルにしてプログラミングしたら、
面白いのができるかも、という単純な理由で作りました。

結果としてはなんだかわからないものが出来たけど、
ちょっと面白いと思ったので公開してみました。





こちらは自分で描いた軌跡を
もう一度、追体験できる、というプログラム。
本当は動画でなく、webアプリとして公開すれば、
良いのだと思いますが、
あいにくサーバを構築していないのでとりあえず、
動画の形で公開してみようと思いました。

これについては別の形で誰でも体験できる状態で
再公開したいと考えています。

2014年3月14日金曜日

デジタル・マーブリング





本当はSICFというイベントで発表できたら、と考えていたのですが、
あえなく落選してしまい、発表場所もなくなったのでブログに公開します。

最初の構想の元になっていたのは
マーブリングという水の上に絵の具を落としていく技法です。
子供の頃に水の上の絵の具を流して遊んだことがある人は多いと思いますが、
あれです。

動画はトルコの職人さんによるもの。
見入ってしまいます。


で、これをPC上で再現したら面白いんじゃないかと思い、
まず考えたのが、水流を再現するにはどうしたら?
ということでした。

で、調べた結果、どうやら流体力学というものをPC上で
再現できれば、出来そうだということはなんとなくわかったのですが、
正直、数学・物理に疎いので理解できず・・・

幸い、流体シミュレーションを開発・公開されている方が
それなりにいて、今回の制作には以下のライブラリを参考にしました。
ソースコードから理解していくという作戦です。

Thomas Diewald
http://thomasdiewald.com/blog/?p=95


このライブラリはjavaで記述されていて、GPUを使うバージョンも
公開されていたのですが、ダウンロードして動作したのはCPUバージョンのみ。
CPUバージョンだからかパフォーマンスも正直、イマイチ。

今回はopenFrameworksを使うつもりでいたのと、
パフォーマンスを改善することを目的に
まずはライブラリをC++に移植するところから開発をスタート。

とりあえず、単純にjavaの文法をC++にするレベルの移植を終えて、
動かしたところ、パフォーマンスはそれほど変わらず・・・
マシンにインストールされているのはjava6なんですが、
java6、かなり速いです。

次にロジックを見直して不要そうな部分をどんどん省いていったんですが、
これも対して効果なし。

残る作戦はGPUを使った並列処理化しかない、
と思いはOpenCLでロジック部分を実装。
結果はかえって遅くなる始末。
さすがにこれにはヘコみました。

それでも納得できなかったので
いろいろと試した結果、GPUでの並列化でなく、
CPUでの並列化の方が速いことが判明。
やっと満足いくパフォーマンスを得ることができました。
たぶん、内部的にはCPUコアをフル活用しているんだと思っています。

GPUでの並列処理が遅い明確な理由は未だにわかってないのですが、
今回、プログラムでは2次元配列を多用しており、
GPU側のメモリへの転送速度がネックになっているんだと推測しています。

openCL慣れてくれば、かなり応用範囲の広い技術な気がしています。
今回はデータ並列(同じ処理を複数同時に行う)しかしてないんですが、
タスク並列(違う処理を同時に行う)でやれる部分もあったりしますし、
openGLとメモリ領域を共用して描画速度をもっと早めたりもできそうですし。
以前、作成したチューリングパターンなんかにも応用できそうです。

ちなみに今回の開発環境は以下のとおりです。
何かの参考になれば。

【Hardware】
PC : mac book pro(Late 2012 15-inch)
CPU : Intel Core i7 2.3GHz
GPU : NDIVIA GeForce GT650M

【Software】
OS : mac os x 10.8.5
openFrameworks : v0.8
OpenCL : 1.1

スイミー


もう発表済みなんでここに載っけてもいいかと思ってブログに載せます。
この動画は今年の2月22日にapple store 銀座で発表したものです。

実は去年、「MeMe2013「動き」の設計」という短期の授業を受講したのですが、
その授業での動きの考え方に基づいて作成したのが、この動画です。

「画面上に表現できる動きは無限にあるけれど、
最小単位は1つのピクセルであり、
全 ての表現はピクセルの集合体である」というコンセプトで、
これは 授業で一緒になった佐藤さんによるもの。
実装面は僕がやりました。
それから、ビジュアルイメージ的には絵本のスイミーを参考に。

このコンセプトを聞いて最初に思ったのが、boids。
一度やってみたかったのです。

プログラムそのものはそんなに難しくないんですけど、
パラメータの調整が繊細で、そっちに時間をとられました。 

たぶん、processingにもパラメータなんかを
動的に調整できるGUIキットみたいなもの(openFrameworksにおけるofxGUI)
があるんだろうと思いますが、
開発時はパラメータの数が多すぎてそういうのを入れる気にならなかったです。
今から考えたら入れたらよかった・・・