openFrameworks を触ってみようと思い、手始めに flash や processing でつくったものを移植してみました。mac osx 用なんで win では動きませんが、mac の方は試してみてください。
perlinparticle.zip
openFrameworks は C++ で processing みたいなことができちゃうライブラリです。最初 windows でトライしたら、どうもコンパイルエラーやら、ライブラリを追加する方法がわからなかったりで、開発環境のトラブルが多くあきらめようかと思ったんですが、mac の Xcode で試したらすんなりできました。mac 最高!
で、c++ ですが、1つのクラス定義するのに .h(ヘッダー)と .cpp(ソース)の2ファイル作んなきゃなんなくて最初戸惑いましたが、ここを参考に進めていっていったらなんとなく感覚はつかめました。
あと肝心のパーリンノイズを出すクラスが標準でなかったので、アドオンでこれを使いました。
processing より全然速そうですね!windows の開発環境が整ったら、win版もアップします。
processing の color 型は、コンパイル時に int 型に変換されてるようです。
なので processing で
color c = #000000;
と書いていたものを Eclipse(Java)で書く場合は
int c = 0xff000000;
になります。32ビットカラーなのも注意。
processing の IDE が pde ファイルを Java に変換するのは、PdePreprocessor.java というクラスでおこなっているようです。color に関してコメントも書かれていました。
color c = #cc0080; should unpack to 0xffcc0080
(the ff at the top is so that the color is opaque),
which is just an int.
ちなみに PApplet クラスのソースコードは PApplet.java のようです。actionscript で使いたいときには、これを元に移植すればいいですね。

UNAGI BALL をマイク入力に対応させました。マイクを接続している方は、ぜひ試してみてください。音量によってモジャモジャ変化します。
以下、マイク入力はセキュリティ・ダイアログでやっかいだったので整理しておきます。
まず、FLASH がマイクを使おうとすると下記のようなダイアログが出ます。

この場合の「録音」の意味って「入力」ってことなんだろうけど、なんだかよくわかならい人は拒否を押したくなるダイアログですね。。。
具体的には、setLoopBack(true) でマイクの音をスピーカーに送るタイミングでダイアログが出ます。
var mic:Microphone = Microphone.getMicrophone();
if(mic != null)
{
mic.setLoopBack(true); //このタイミングでダイアログが出る
}
ただこれが setLoopBack を実行するたびに毎回出るわけではなくて、マイクに接続しようとした最初の一回だけです。二回目からは最初に選択した状態が保持されます。なので最初に拒否されてしまったら、二回目からは設定を変更しない限りマイクに接続されません。
設定を変更するには下記二つの方法でセキュリティダイアログを開いて変更します。
- 右クリック > 設定
- Security.showSettings(SecurityPanel.PRIVACY);
ただしこれは最初のダイアログと違います。

最初のダイアログでさえ拒否を押しそうですが、この画面はまず拒否か閉じるを押しますよね。。。
なので今回はマイク接続を拒否された場合は、リロードボタンを設置することにしました。リロードすれば設定はリセットされるので、最初のダイアログになります。「このコンテンツはマイク接続の許可が必要です」的なテキストを入れて、「セキュリティパネルを開く」と「リロード」のボタン二つを置くというのも手ですね。
ちなみに UNAGI BALL は、リーロードボタンの画面で「右クリック > 設定」で許可した場合は、コンテンツがスタートするようにしてあります。