Flash OOP勉強会「FlashとDIYで作る、自作マルチタッチディスプレイ」

LINEで送る
Pocket

2009年2月25日に開催された、第31回Flash OOP 勉強会に行ってきました。

�׋���̕��i

場所:

サイバーエージェントビル1F セミナースペース

4万円ほどで作れるマルチタッチディスプレイということで、マルチタッチのデバイスを自作して、ActionScriptをUIとして使っていました。
iPhoneとかで最近マルチタッチの話題が増えてきていたので、どの様にしてマルチタッチの機能を実現しているのか、実際の制作時の話しを含めて聞きたかったので行ってきました。

実現方法は、sakusan様のブログに説明していらっしゃいましたのでご興味のあるかた是非どうぞ。

簡単にはWebカメラで映像を受け取り、tbetaいうソフトが解析してsocketでAS3にタッチの情報を送る、という仕組みの様です。
AS3でタッチイベントを扱いやすくするためにMulti-Touchライブラリを自作されており、
・TouchManagerクラス:Touchを管理するクラス
・TouchEventクラス:触ったときに発生するイベント
・Fingerクラス:触った座標(0〜1の相対座標)、touchを一意にするためのIDを所有するクラス

を持っていて、TouchEventクラスのインスタンスがfingerを持っているので、Touchイベントが発生したときにイベントハンドラ内部で
e.finger.id
e.finger.x
e.finger.y
と記述することで触られた点を知る事ができるというものでした。(e = TouchEvent)

実際に触る時間がいっぱいあったので触ってみたのですが、

�f�B�X�v���C

でかい。

タッチ可能な領域が大きいということは、iPhoneの様にはいかず、タッチする人数が多くなる可能性があり、コンテンツを作るときに気にしないといけない問題が沢山あるのでどのようにタッチイベントの制御を行えばユーザーが意図した動きにるように作れるのかというのは結構難しい問題であるな、と感じました。
finger.idとタッチイベントが発生した座標をとって、或る程度の範囲内なら同じ人物の動作とみなすという判定が必要になるのかな?実際に作ったわけではないので想像でしかありませんが。

後は、このマルチタッチのデバイスを作ること自体が結構むずかしそうな気がしたので、どこかの段階でハードウェア屋さんと協力して新しいデバイスを次々と作る事ができると面白い展開があるのかも?とか想像していました。

このデバイスをみたり触ったりしているときに、感触を再現することができれば面白いなあなんて思ったのですが、これって音圧とか使うと少しは再現できたりするのかな?この辺の研究は一度やってみたいです。

この様なマルチタッチのデバイス+コンテンツを業務時間外で作り上げる力にはただひたすら感心するのみでした。本当にご苦労様でした。これからも面白いコンテンツを見せていただける事を楽しみにしています。
ってかうらやましいっす!

補足2:
サイバーエージェントさんって、こういうのも作ってたんですね。すてき。

��

Spark 勉強会 #5で話して来ました。

LINEで送る
Pocket

本当にものすごく久々の投稿になってしまいました。

先日、11/26に行われた、Spark勉強会で、Dynamic Sound Generationの発表をしてきたので、その資料をアップします。

(※再生には音楽ファイルを必要なので、各自用意して下さい。)

ソース一式

PDF

「フーリエ変換を使わない、エフェクトのかけかた」というタイトル通り、信号処理には本来フーリエ変換は欠かせないものですが、フーリエ変換の話しになると一気に敷居が高くなる(というか自分が今勉強している状態なので、この様な発表になりました。

 

ただ、やはりフーリエ変換を使えていない&勉強途中での発表になってしまったので、波形が途切れてしまっているところがあるようで、ぷつぷつと途切れる音が結構聴こえてしまいます。。。

あくまでご参考程度にしていただければと思います。

 

 

[ファイル構成について]

 

SoundGeneration.mxml:ラジオボタンやスライダーがついているView + 実際に音を鳴らすファイル

model/SoundObj.as:Dynamic Sound Generationを使って音楽を再生したり、エフェクトをかけたりするスクリプトを記述しているファイル。

 

SoundObj.asに関しては、mxmlでも使いやすいように、IMXMLObjectインターフェイスを実装しています。

 

[SoundObj.asの仕組み]

_currentEffectというプロパティを切り替えて、どのエフェクトをかけるのかを選択します。

 

extractメソッドを呼び出すたびに、bufferプロパティにデータを蓄えています。

これを使って、ディレイや逆再生を実現しています。

 

なお、逆再生に関しては、こちらが大変参考になります。

次は、フーリエ変換からめてしっかりとエフェクトをかけられるようになりたいなあ。
フーリエ変換とエフェクトの掛け方を勉強できる機会があれば、是非参加したいです。