Vimeo.久々の投稿です。桜が満開ですね!今年は多忙につき花見はお預けな感じです。今回はAway3Dを使ったデスクトップAIRアプリです。OSC通信でiPadから送られて来たタッチ座標と端末の傾きで、指の位置を3D空間に変換しています。レインボーな箱がウネウネとしています。iPadからOSC送信するアプリはopenFrameWorksで作ったものです。受信した値から指の位置をシュミレートレインボーな箱をウネウネ1.iPadからOSC送信iPadからOSC送信します。Target」の「Devices」を「iPad」か「Universal」にします。FI001::setup()で画面の向きをiPhoneSetOrientation(OFXIPHONE_ORIENTATION_LANDSCAPE_LEFT);にして、ホームボタンが右に来たときに左上が(0,0)になるようにします。iPadでは同時に5つのタッチ座標が取得できます。5つの座標を格納できる「touchLoc」を用意し、タッチが5つに満たない場合、(-100,-100)を入れる様にしておき、常に5つ分の座標を送ります。}2.FlashでOSC受信OSC.asFlashでOSC通信をする場合、AIRアプリに限定される様です。(UDPConnectorあたり)ライブラリはtuio-as3を使っています。tuio-as3https://code.google.com/p/tuio-as3-lib/openFrameWorksから送られて来たOSCメッセージを連想配列にまとめてメインスレッド(FI001.as)に渡します。タッチ座標(-100,-100)が送られて来た場合、非表示の真偽値をセットします。}}}3.受信した値から指の位置をシュミレートFI001.asここからAway3Dを使ってコーディングしていきます。Stage3Dを使ったAIRアプリは「app.xml」の<renderMode>direct</renderMode><depthAndStencil>true</depthAndStencil>を設定し忘れる「context3Dなんて知らないよ」って怒られるので注意。ブラウザで見るswfの場合は、htmlのwmodeをdirectにしましょう。Alpha」を使います。str;}}}4.レインボーな箱をウネウネメインスレッドで利用しているクラスは以下の通りです。レインボー色を出すのにfrocessingを使って楽しています。Vimeo.最近めっきり暖かくなりましたね。花粉が飛び始めたようですが、Takepepeまだ花粉症ではないのでどこ吹く風です。(花粉症の方すみません;)今回は上の動画の様なものを作りました。openFrameworksで作成した複数のiOSアプリから、openFrameworksで作成したDesktopアプリケーションを操作します。通信には前回同様、OSCを使っています。前回は1対1の一方通信でしたが、今回は1対複の通信になります。動画上では2台のiPhoneのタッチ座標を取得し、その座標をつなぐ線が描画されていますが、コード上はOSC接続している端末数に応じて点と線が増えていくものになっています。iPadやiOSシュミレーターでも確認できます。(引き出しに眠っているiPhone3GSが復活。)物理演算処理にはBox2Dを使用しています。全体の流れを詳しく説明していきます。iOS端末からDesktopアプリケーションにOSC通信iOS端末の数に応じたClientインスタンスの生成Box2Dのセッティングと円を降らす処理Clientメンバの座標間で線をひく1.iOS端末からDesktopアプリケーションにOSC通信まずはiOSアプリをopenFrameworksで作ります。アプリ単体で見ると、タッチした場所に円が描かれるだけの簡単なものになっています。);}2.iOS端末の数に応じたClientインスタンスの生成ここからはDesktopアプリケーションです。「Client」クラスを作成します。このクラスはコンストラクタにiOS端末のipアドレスを引数で渡します。update関数が呼ばれるたび、タッチ座標を変換・更新します。ip;}メインスレッドでOSCメッセージを受信した際、そのメッセージが新しい端末からの場合、Clientインスタンスが生成されるようになっています。次にBox2Dの実装です。updateでカウントアップし、circlesの数が100に達したら新しいofxBox2dCircleを作り、古いものは削除します。}}4.Clientメンバの座標間で線をひく最後にiOS端末から取得した座標でofxBox2dPolygonの線をひきます。ofPolylineに座標を追加し、ofxBox2dPolygonに代入します。画面上で線が見える様、draw関数ではofPolylineを描画しています。