DigitalSignage

level0をご覧の皆さん、生存戦略ー! 
今週はお休みで寂しいですね。
有明に出奔してる方も多そうですが、構わずエントリです!

ところでこんなデモを作ってみました


iPhoneのBluetoothでコントロールするプロジェクションゲーム from BMCL on Vimeo.


これはなに?


これはサイネージ的に外の施設でプレイすることを想定したゲームのプロトタイプです。画面内にある日記帳を、自機であるペンギンに取りに行かせます。

えっ? どこかで見たことのある設定だって?
それはきっと、運命による偶然です。

ペンギンを移動させるためには、りんごを使います。
りんごには果たしてどういう意味があるのか・・

自分の端末で楽しむシングルモードと、サイネージを利用して楽しむバトルモードがあります。
バトルモードの時は、IPhoneの操作で壁面のペンギンを操ります。


BlueToothなら誰でも参加できる(比較的)


さて、今回のプロトタイプで重要だったのは、通信方法です。
このように、店舗やイベントなどのリアルスペースで楽しむコンテンツは、ネットとの接点をいかに持つのか?twitterアカウントとかスマホアプリとどうつなげるの?ということがしばしば重要になってきます。
幸いなことに、iPhoneにはこういうリアルスペースで活躍しそうな近距離無線通信の機能があります。それがBlueTooth。
BlueToothのいいところは、Wifi接続やソケットサーバ抜きで簡単に同時通信できてしまうところ。
何も考えずにとりあえずスマホにアクセスできてしまうわけです。
これを使えば解決!? と思いきや、、
当然ながら、iPhoneはBlueToothを使ってPC(今回はMac)と通信します。
Macの側にもBlueToothの通信機能はついているのですが、MacとiPhoneがBlueToothを使ってシリアル通信をする方法はどうやらないようなのです。もしかしたらあるのかな・・ 自分が探した限りではJailBreak以外は見つかりませんでした。

Mac側のBlueTooth通信方法

ではMacとiPhoneで通信することは難しいのか?
そんなことはありません。もともと、iPhone同士やiPad同士だとBlueTooth通信は簡単にできるのです。
そう、通信の仲介役に1体、iPhoneなりiPadなりを用意してあげればいいのです。 仲介役とMac間は、Wifiの環境さえあればOSCなり何なりでつなげちゃいますしね。
gainenzu.png

まとめと展望

さて、結果は冒頭の動画のとおり、iPhoneのGameKitフレームワークを使うことで、多人数プレイ可能な通信が実現できました。
また、ちょっと心配だったWifi通信とBlueTooth通信の並行も特に問題なく、遅延を感じることのない操作が実現できています。
これで、iPhoneさえ持ってればだれでも参加可能で、電子の世界に爪痕を残せるサイネージコンテンツが作れますね。夢が広がります。
ただ1点気になる点としては、通信を実現するために独自のアプリが必須であるということ。
サイネージを触るだけためにアプリをインストールする、ということはなかなか考えにくいので、
単体で遊べるアプリがあった上で楽しめるリアルコンテンツ、という状態で初めて成立する感じになります。が、それはそれでなかなか敷居が高いですね・・

Bluetooth通信で参考になったサイト

さて、前置きが長くなりましたが、iPhoneとBlueToothで通信させる時に参考になったサイトです。

GKTank

http://developer.apple.com/library/ios/#samplecode/GKTank/Introduction/Intro.html
Appleから出ている、BlueTooth通信の対戦ゲームのサンプル。
ゲームの状態の情報をどうやりとりするか、というところがこのサンプルから知ることができます。 また、普通にBlueTooth通信で動くサンプルなので、これだけで基本的なところが全て実装されていることになります。

Game Kitプログラミングガイド(pdf注意)

http://developer.apple.com/jp/devcenter/ios/library/documentation/GameKit_Guide.pdf
GameCenterの機能など、GameKitを包括的に解説する資料です。
パートII ピアツーピア接続の章で、ピアやセッションの概念などのGameKitを使った BlueTooth通信における概念についての解説が詳しく書かれています。

Gamekitを使ったiPad - iPhone間のBluetooth通信 - Meltdown Countdown

http://d.hatena.ne.jp/marutanm/20100721/p1
iPhoneのBlueTooth通信で多人数参加にしたい場合、「GKPeerPickerController」を使ってしまうとこれができません。 GKTankは「GKPeerPickerController」を使っていて一対一通信のため、一体多通信の部分をアレンジする必要があります。 こちらのサイトに書いてある手順で実現できました。

すれ違い通信アプリ開発で得たBluetoothの知見まとめ - Over&Out その後

http://d.hatena.ne.jp/shu223/20110220/1298223410
弊社プログラマつっつんがアプリ「EncountMe」でBlueTooth通信を使った時の解説エントリです。 GameKitでのBlueTooth通信について色々と、特にGKPeerPickerControllerを使う場合/使わない場合についても解説されています。

openFrameworks

http://www.openframeworks.cc/download
さて、やっぱり今回もopenFrameworksです。 今回、仲介役のiPadにはBlueToothのサーバになってもらいつつ、MacとOSC通信をしています。 OSCの部分はoFのofxOSCアドオン、BlueTooth通信はGameKitを使っています。 Objective-Cのファイルとc++(oF)のファイルを混在してコンパイル可能だったため今回の仕組みが実現できたというわけです。

iPhoneとMacをBlueToothでつなぐ時に参考にしたサイト

iPhoneとMacをBlueToothでつなぐ時に参考にしたサイト

level0をご覧の皆さん、生存戦略ー!  今週はお休みで寂しいですね。 有明に出奔してる方も多そうですが、構わずエントリです! ところでこんなデモを作ってみました iPhoneのBluetoothで…

DigitalSignage

こんにちは。NUI(Natural User Interface)への好奇心が止まらない原です。

ところでこんなゲームを試作してみました


Kinect for Windows SDK GAME Test from BMCL on Vimeo.


止まらない好奇心がゆえに、Kinect for Windows SDKを使ってこのようなゲームの試作品を作ってしまいました。往年の名作「ナイツ」風に並んでるアイテムを飛行しながら拾っていきます。
基本的な操作は、過去に作った「電脳空間システム」を流用しておりますが、何より大きく変わったところはこのポーズがいらなくなったことです。

calibpose.png


映像を見てもらうとお分かりになると思いますが、ユーザが切り替わる時に何のポーズも取っておらず、瞬時にコントロールが取れています。

この体験を実現しているのは、Microsoftの公式SDK、Kinect for Windows SDKです。

Kinect for Windows SDKってなに?

Microsoftが発表した、Kinectを使ったアプリを作るための開発キットです。 電脳空間の時に使っていたOpenNIとの大きな違いは、
・ポーズを取らずに骨格が取れる
・首振りができる
・音声が取れる
ということ。

ダウンロードはこちらから。
http://research.microsoft.com/en-us/um/redmond/projects/kinectsdk/download.aspx
リンク先にも書いてありますが、開発するにはWindows7、およびVisual Studioが必要です。
また、仮想環境では動かないのでご注意ください。

こんな環境で作りました

一応大まかな構成を説明いたしますと、
kinectImage.jpg
図のようなかたちで、Kinectの情報はWindowsPCおよびKinect for Windows SDKで、ゲーム本体の方はMacおよびopenFrameworksで作成いたしました。 WindowsとMac間でOSC通信させ、骨格情報をゲーム側に伝えています。

Kinect for Windows SDKを使う時に参考になるサイト

さて、デモを試作するにあたって色々なサイトを参考にしましたので、こちらでご紹介いたします。

Kosaka laboratory Interactive System tips

http://www.kosaka-lab.com/tips/
XNAでkinect for Windows SDKを動かすサンプルコード多数。今回試作したkinectコントロールの部分はKinect SDK XNAで骨格情報の取得 その1の記事を参考にさせていただきました。

かおるんダイアリー

http://d.hatena.ne.jp/kaorun55/
Kinectセンサープログラミングの著者、かおるんさんのブログ。OpenNIの解説も多く書かれており、kinectドライバの現在がよくわかります。

Kinect for Windows SDKとOpenNIの比較

http://d.hatena.ne.jp/kaorun55/20110606/1307331384
かおるんさんのブログより、2つのkinectコントローラの比較。

channel9 coding for fun

http://channel9.msdn.com/coding4fun/kinect
MS公式のデベロッパコミュニティサイト。kinectの事例たくさん

川西 裕幸のブログ

http://blogs.msdn.com/b/hiroyuk/
kinectカテゴリで、Kinect for windows SDKの有用なサンプルが紹介されています。特にCodePlex:Kinect Audio Positioningの記事では、他ではあまり見られない音声による位置検出が紹介されており、必見です。

Kinect for Windows SDK FAQ - Microsoft Research

http://research.microsoft.com/en-us/um/redmond/projects/kinectsdk/faq.aspx
英語ですがkinectを使う際の注意点をまとめており、ライセンス的なNGを知りたい時には こちらのfaqから判断することができます。

Making Things for .NET

http://www.makingthings.com/resources/downloads
kinectとは違いますが、kinectの信号をoFに伝えるために重要だったのがこちらのライブラリ。 OSCをC#で扱うことができます。
これでkinectの座標データをOSCでMacに送り、oFで読み取っていました。

openFrameworks

http://www.openframeworks.cc/
言わずと知れたopenFrameworks。ゲーム本体部分はこちらで作成しています。

ということで

Windows PC必須ですが、kinect for Windows SDK はOpenNIに比べて導入がとても簡単でした。また、キャリブレーションのポーズがない、というのはそれだけで圧倒的な体験の違いをもたらします。
これらのサイトを参考に、みなさんもレッツNUI!

Kinect for Windows SDKを使う時に参考になるサイト

こんにちは。NUI(Natural User Interface)への好奇心が止まらない原です。 ところでこんなゲームを試作してみました Kinect for Windows SDK GAME Tes…

DigitalSignage

BMCL第二弾「電脳空間システム」 #ph9

もうすぐ春ですね。haraです 前回の投稿ではBMCL第一弾、「ぐったりくまリオネット」が紹介されましたが、第二弾は電脳空間システムです! 「攻殻機動隊 S.A.C.」シリーズ 電脳空間システム …

DigitalSignage

oF+iPad+メリークリスマス

 メリークリスマス!haraです。世間はめでたく羨ましいクリスマスだというのに、僕は風邪を引いて遊びにも呑みにも行けない体たらくです。しかしせっかくのクリスマス、楽しまなきゃ! という…

DigitalSignage

投影時写真

さて、前エントリで光の女神プロジェクションについて紹介させていただきましたが、
今回はそれをどうやって作ったかについて解説いたします。
普段ではやらないようなDIYな作業が多かったので、文化祭のようでなかなか楽しかったです。

さて、まず今回のソースは一式githubに上げちゃいました。
https://github.com/haramakoto/MuseofJiyugaoka
興味ある方は見てみるとよいかと思います。

アプローチ

今回は「服状のものに投影したら色々いい演出ができるんじゃないか」という考えから出発しています。
服状のものに投影するということは、
・服が必要
・できるだけリアリティを出すためには複数台の投影、マッピングプロジェクション的な調整が必要
ということになります。

概要

図のような感じで、2カ所から映像を投影して中央の服に表情をつけます。

概念図

 

投影用の服ですが、今回は「ターポリン」というテントに使われるシートを使っています。
この素材が探しうる限りでは最も投影に適した(というかスクリーン用によく使われる)ものでした。
あとはフリーダウンロードの服の型紙を探し、型紙の裾を無理矢理引き延ばしたものを作り、
型紙の形状に沿ってシートを切り取ります。
高さ3mはなかなかの重量となるため、服の接合部はそれなりに丈夫である必要がありました。
今回は接合部にハトメ玉を打ち、接合には内径2mmのカードリングを用いて楽に着脱できるようにしました。
そこそこハードな扱いでも壊れなかったので、この方法で間違いなかったようです。

接合部アップ

2画面打ちのプロジェクション

今回は立体に投影することもあり、複数台のプロジェクタによって多面をカバーすることは必須でした。
問題はどうやって複数画面に出力するかですが、今回は2台のMacからそれぞれ映像を出力するという方法を取っています。
これは、
・1台で2レンダリング走らせるのが処理能力的に怖い
という理由につきます。イベントで投影するため、途中で落ちるという可能性はできるだけつぶしておきたかったというわけです。
2台のMacからの出力でつじつまをあわせるために、下記のような工夫をしています。

3Dオブジェクトを表示し、半分ずつレンダリングする

左右レンダリング


2つのマシンで1つの物体を表現するのだから、2つのマシンで同じプログラムを走らせ、片方は前半分、もう片方は後半分を表示すればいいわけです。
今回は服に合わせて3Dオブジェクトを作成し、テクスチャをアニメーションさせているので、要するにレンダリングを半分ずつ分ければいいということになります。

ifdefを使って、「_CONTROLLER」が定義されていたら前半、立ってなければ後半をレンダリングし、カメラの位置もそれぞれで調整するようにします。

testApp.cpp冒頭

https://github.com/haramakoto/MuseofJiyugaoka/blob/master/MuseJiyugaoka/src/testApp.cpp

#include "testApp.h"
#define MAP_X 512
#define MAP_Z 512

#define _CONTROLLER


「#define _CONTROLLER」をコメントするしないで処理が分かれるようにします。

あとは、2台のマシンをクロスケーブルでつなぎ、
ファイル共有状態にして、メインマシンでサブマシン用のビルドを作成し、サブマシンのドロップフォルダに送ります。

ただし、これだけでは不充分です。

ofxOscを用いてオブジェクト位置の同期をとる

同じプログラムとはいえ別のビルドが別のマシンで動くので、表示している内容はだんだんずれていきます。
なので、定期的に同期させる命令を書きます。
マシン間でやりとりする時には、ofxOscが便利です。

ofxOscのおおまかな使い方を書きますと、

ofxOscSender(送る側)とofxOscReceiver(受け取る側)のインスタンスを作る
  •  ofxOscSender sender;
  •  ofxOscReceiver receiver;
送る側は相手のipアドレスとポート番号を指定する
  • sender.setup("111.111.1.111",3001);
受け取る側はポート番号を指定する
  • receiver.setup(3000);
senderでパラメータを送る
  • ofxOscMessageインスタンスに名前と引数を設定してsender.sendMessageに渡す、というかたちになります。
  • ofxOscMessage m;
  • m.setAddress( "/texChange" );
  • m.addIntArg( 0 );
  • sender.sendMessage( m );
     
receiverでパラメータを受け取る
  • updateのメソッドで
  •  
  • while(receiver.hasWaitingMessages()){
  •      ofxOscMessage m;
  •      receiver.getNextMessage(&m);
  • }
  • を走らせます。
  • getNextMessageをはreceiver中の複数のメッセージを1つずつ取り出すので、こうしてhasWaitingMessagesの条件でwhile文を走らせることで、全てのメッセージを取り出しています。
  •  
  • 受け取った場合には
  •  
  • if ( m.getAddress() == "/texChange" ){
  •      texIndex = m.getArgAsInt32(0);
  •      textureChange(texIndex);
  • }
  • のようにして、sendの時に設定した名前によって処理を分けます。
  • ちなみにm.getArgAsInt32(0);とあり数値をしていますが、これはリストの番号になっていて、
  • 複数指定している場合は番号の指定を変えてアクセスすることで全て取り出すことができます。

ofxOscを使っている処理は、全てtestApp.cppに書いています。

https://github.com/haramakoto/MuseofJiyugaoka/blob/master/MuseJiyugaoka/src/testApp.cpp

また、ofxOscについての解説は
openFrameworks中級編4:アドオンを使う3 - ofxOsc | yoppa org の記事が詳しいです。

アニメーションの貼り付け

さて、今回はテクスチャにはりつける画像をアニメーションさせていますが、具体的にはこのようなプロセスになります。
2次元のアニメを走らせる→oFの画面キャプチャを取る→oFの画面をクリアする→3Dオブジェクトを描画し、画面キャプチャを貼付ける
スクリーンのキャプチャはofImageのインスタンスにgrabScreenのメソッドを走らせると取ることができます。

_ofimage.grabScreen(0, 0, 800, 600);

最初はこの方法を知らずに悩んでいました。結局のところ、oFにはFlashのようなSpriteの概念がないので、(ofImageがBitmapに近い概念ではありますが)作成したアニメーションを簡単に3Dテクスチャにはできないのではないかと思われます。

この処理はCloth.Appの362行目にあります。

https://github.com/haramakoto/MuseofJiyugaoka/blob/master/MuseJiyugaoka/src/cloths/Cloth.cpp

アニメーションの調整

今回は相手が布ということもあり、投影物を3Dモデルで再現したものを投射、ということまではできていません。なので、そのままではどうしても投影にはずれがでてきます。
そこで、双方の3Dモデルのつなぎめの端点をキー操作で移動できるようにしておきます。

頂点操作


これで最後のずれの微調整ができるので、「2投影には見えない程度の」見た目のつじつまは合わせられたようです。

この処理はCloth.cppの94〜110行目あたりになります。

https://github.com/haramakoto/MuseofJiyugaoka/blob/master/MuseJiyugaoka/src/cloths/Cloth.cpp

まとめ

今回、技術的に一番の収穫はスクリーンキャプチャをテクスチャに貼る方法がわかったこと。
これでかなり手軽にマッピングプロジェクションにアプローチできる予感がします。
しかし、実はこの方法は手軽でいい方法である一方で、あまり安定しない方法でもあります。
プログラム実行中にウィンドウの状態が変わる(移動、隠すなど)と表示が壊れてしまうのです。
冒頭あたりで書いた、「パフォーマンス中に壊れない」というポリシーからはかなり反するので
できれば他の方法がいいですが、現状わかっている範囲ではこれが一番有効な方法になるのでした。

oFで2照射立体プロジェクションに挑戦してみた(光の女神技術解説)

さて、前エントリで光の女神プロジェクションについて紹介させていただきましたが、 今回はそれをどうやって作ったかについて解説いたします。 普段ではやらないようなDIYな作業が多かったので、文化祭のよう…

DigitalSignage

年の瀬も押し迫ってきました昨今、皆様いかがお過ごしですか。
haraです。

今回は、先日12月5日に自由が丘で投影いたしましたインスタレーションを紹介いたします。

このコンテンツは、自由が丘駅前で行われたクリスマスイベントで展示されたものです。
高さ約3mのドレス状に組まれたシートに対して映像を投影し、ゴスペルコンサートの
賑やかし要素として入れさせていただきました。

基本的に「女神のドレスが変容していく」という設定で映像を展開し、
最後はクリスマスツリー風の演出で締めくくりました。

演出の流れ



普段あまり見かけないビジュアルに仕上がったので、街の皆様にはいつもと違う夜を体験いただけたのではないでしょうか。

実装はopenFrameworksを用い、プロジェクタはEPSONのEB-G5350を使っています。街灯が明るい中でしたが、特に問題とならない明るさ・鮮やかさが出ていると思います。

詳しい技術解説については、また後日投稿いたします。

自由が丘・光の女神プロジェクション

年の瀬も押し迫ってきました昨今、皆様いかがお過ごしですか。 haraです。 今回は、先日12月5日に自由が丘で投影いたしましたインスタレーションを紹介いたします。 このコンテンツは、自由が丘駅前…

DigitalSignage

絵画+AR表現の実験

こんにちは、haraです。 前回の投稿でちょっと告知してました、ART-Meterの絵画にプロジェクションというのをやってみましたよ。 ARToys:PATTERN ARToys:PATTERN …

DigitalSignage

プロジェクション実験

こんにちは、haraです。

今回はopenFrameworksとプロジェクションマッピングという、およそFlasherにはなじみがあるのかないのかわからないテーマについて紹介します。

プロジェクションマッピングって?

プロジェクションマッピングとは、ビルとか車のような、実在する物体があたかも「変性」したり「拡張」しているように見えるように、映像をプロジェクションして見せるコンテンツのジャンルの名前です。(大意)
 

海外ではよくやられているようで、ちょっと紹介させていただくと
こういうのとか
 

こういうのとか

あるいはこういうのとか。すごいですね。

P.O.P. | 3D video mapping | experimental study from urbanscreen on Vimeo.

インターンのいぶくろくんのブログに詳しく解説があるので、ひとまずこちらをご確認を。

http://d.hatena.ne.jp/asus4/20090514/1242330024

 

openFrameworksって?

http://www.openframeworks.cc/

主にメディアアートやパフォーマンスでの使用に特化されたC++のライブラリです。
processingとほぼ同じ記法、構成で組む事ができて、導入はとてもお手軽。
さらに出版されている日本語の参考書には、OpenCVやらBox2Dやらがセットになったサンプルの解説があるので
http://openframeworks.jp/download.html
特に何も考えなくてもすごいコンテンツが作れちゃうようなチート感すらあります。
 

ちょっと前にやくしまるえつこのPVで使われていて話題になっていましたね。

openFrameworksのサイトに作品ギャラリーがあります。

http://www.openframeworks.cc/gallery

 

プロジェクションマッピングの第一歩

このプロジェクションマッピングっていい概念ですね。
ちょっとした工夫で世界が違って見えてくる、最近はやりのARと近いというか、ARの実現方法の1つという感じでしょうか。
よくある「モニターごしのオーバーレイ映像」(iPhoneのカメラと組み合わせてるやつとか)と違って多くのユーザに配布することはできないですが、 1カ所で見せるものとしてはこの方法の方がずっと「現実拡張感」がありますね。

これはぜひぜひやってみたい!ということで、openFrameWorksでプロジェクションマッピング、いやプロジェクションマッピング的な?現実拡張なコンテンツの実験をしてみました。それがこちら。

ART-Meterで飾ってる絵に、あら不思議、映像であるはずのボールが跳ね返ってますねー不思議ですねー・・

まあ、普通にFlashをやってるかたであれば、これが単純にBox2Dの領域を絵の場所にあてただけだ、ということはすぐにわかるとは思います。
でも、たったこれだけでも不思議と現実が拡張されたような、ダイナミックな面白さが発生するのがプロジェクションマッピングのいいところなのだと思います。

インスタレーション

さて、今回紹介したのは実験でしたが、来週の日曜日と月曜日、この実験をもとにつくりましたARToysというインスタレーションをART-Meterに設置します。
 

ARToys

AR と ART のおもちゃシリーズってことで。
この日は自由が丘女神まつりという、イベントもりだくさんのお祭りが自由が丘で開催されます。
http://www.jiyugaoka.or.jp/index.html
ぜひぜひ遊びに来てくださいませ。
 

openFrameworksでプチ・プロジェクションマッピング

こんにちは、haraです。 今回はopenFrameworksとプロジェクションマッピングという、およそFlasherにはなじみがあるのかないのかわからないテーマについて紹介します。 プロジェクシ…

Flash

「生える」表現

失礼、生やしすぎました。

毛や植物など、形状に対して「生えている」ような見た目にしたい時の考え方のメモです。
文字から何か生えてるとか、よく見るけどかっこいいな、どうやるのかなと思ってちょっと試してみました。
 

馬の絵から生やすとこんな感じ

馬

 

これはバイク・・毛の量多すぎて毛虫みたいですが

バイク

 

これは骸骨です。パラメータ調整に若干ミスって寝ぐせみたいになってます。

骸骨

以下、解説です。

 

考え方

1:シェイプを構成する頂点に対して何かを生成すればよい

「生える」ってずいぶん複雑そうだな、と一瞬思いましたが、単純に頂点から何か出てくる表現を
複製する、という表現ができれば目的は果たせそうです。

2:線の進む方向と直角なベクトルで生やす。左なら左、右なら右に固定で

例えば四角形に毛が生えている表現は、一筆で四角形を描いた時に、向かうベクトルに対して左側に毛が生え続ければ
四角から毛が生えているように見える。

3:発生するポイントの制御と、ポイントから発生する枝の制御の2本立てと考える。

今回は、マウスドラッグで座標を配列に追加する処理[MouseMove]
配列を巡回して、それぞれの座標について描画する処理[draw]
という2本立てにしました。

構成

大雑把にこんな感じです

メインクラス

--- 今回はFrocessingで書きます

mousePressedメソッド

addRootメソッドが走ります

mouseMovedメソッド

ドラッグ時にaddNodeメソッドが走ります

addRootメソッド

currentListIndexを更新してpointListList配列に新しい配列をつっこみます

addNodeメソッド

pointListList配列内の、インデックスがcurrentListIndexの配列に対して(pointListListは二重配列です)
LinePointインスタンスを追加します。
LinePointインスタンスは引数で受け取ったpx,pyを参照し、vx,vy,r,vectorの大きさを計算します。

drawメソッド

pointListList配列に入った座標群に対して描画処理を実行します。
基本要素は座標、速度、回転で、
ここのコードでこれらを使ってどう描画するかを設定します。
また、drawメソッドの最初にbackgraond(0,1)を入れると
毎フレームクリアして再描画、つまりアニメーション表現になり、
入れない場合は塗り重ねの静止画表現系になります

LinePointクラス

Pointクラスを拡張して、速度や回転のパラメータを追加したクラスです。

実際のプログラムはこんな感じ。自由にご利用ください。っつてもあんまり使う機会は少なそうですが・・
静止画系

Hair Draw - wonderfl build flash online

 

アニメーション系

forked from: Hair Draw(Animation) - wonderfl build flash online

「生える」表現

失礼、生やしすぎました。 毛や植物など、形状に対して「生えている」ような見た目にしたい時の考え方のメモです。 文字から何か生えてるとか、よく見るけどかっこいいな、どうやるのかなと思ってちょっと試して…

misc

material.gif

すごい音楽ゲームが出てた。

ちょっと前の話になりますが、E3でサウンドとシューティングゲームが一体化した、凄いゲームがQ Entertainmentから発表されてましたね。Kinnectsを使って、体全体を使って音楽に乗れそうなとても期待できる内容でした。

最近、wonderflでサウンドのビジュアライゼーションを見かける機会が増えています。
音楽ゲームは、サウンドのビジュアライゼーションとかなり関わりが深いと言えるでしょう。
ということで、今回は、よりサウンドビジュアライズへの造詣を深めるために
音楽ゲームの表現について探ってみましょう。

 

大雑把にまとめてみる

音楽ゲームは、一時期ものすごいブームでした。
ビートマニアやダンスダンスレボリューションが色んな媒体で取り上げられたり、
プレイ動画が何本もあげられたりしていたのは記憶に新しいし、未だにたくさんの情報がネット上に溢れています。
そんな感じなので、全部詳細に調べ上げようと思ったらきりがありません。今回は主要と思われる、というか僕の知っている範囲のゲームについてまとめてみます。
こんな面白いのもあるよ!というのを知っている方、いらっしゃいましたらぜひコメント欄などにアドバイスをばお願いいたします。

 

全ての始まり? パラッパラッパー
parappa.gif

 

これ以前に音楽ゲームというのを見た事がないです。これが発祥というわけではないでしょうが、
現在のように音楽ゲームが定着する最初のきっかけとなったゲームであるのは間違いないでしょう。
ゲームの仕組みとしては、先行して流れたリズムを再現させる、というものでした。
また、ボタンを押すタイミングを知るためのゲージもあり、インタフェースとしては
現在出ている音楽ゲーム

演出超盛り スペースチャンネル5
spacechannnel.gif


パラッパの次くらいだったと記憶しているのが、スペースチャンネル5。
これはパラッパラッパーからゲージを消して、記憶だけを頼りにリズムを再現させる式。
注目すべきは演出で、ゲームにミュージカル演出がつくというよりは、ミュージカルに参加するために
ゲーム要素がある、というくらいに見えるバランスで作られています。

 

デファクトスタンダード? ビートマニア
beatmania.gif

言わずもがなの大ヒット作。前段で紹介したゲームとの違いは、繰り返しを排除しているところ。
ゲームの難易度は上がりましたが、こうすることでどんな曲もゲームに取り込めますね。
音楽ゲーム、と言われると、真っ先に思い浮かぶのがこのゲームだと思います。

 

スタンダードのインタフェース拡張 ダンスダンスレボリューション
ddr.gif

ビートマニアのインタフェースをダンス式にしたもの。
この他にも、ドラムマニアやギターフリークスなども出ました。

 

アクション+サウンド ビブリボン
vibribon.gif

ビブリボンは、曲調に合わせてステージにトラップが生成され、
生成されたトラップをクリアしていく、というゲーム。
アクションゲーム的なイメージが強いです。

 

シューティング+サウンド Rez
rez.gif

Rezはシューティング+サウンド。
曲に合わせてコマンドを打つというより、曲の展開に合わせて敵が出てくる/
効果音が全て楽器になっている という感じですね。冒頭で紹介したChild of EDENはこのゲームとほぼ同じ操作システムを採用していて、Rezの進化版のような感じになっています。

 

究極のシンプル リズム天国
rythmparadise.gif


シンプルな入力と気持ちのいいアクションに特化しているのがリズム天国。
たくさんの種類のネタが出てきて飽きないです。
また、入力操作も単純に「音をなぞる」ということではなく、流れている曲にちょうど良く、気持ちよく入れるポイントをかなり絞って設定しているようです。
楽曲はゲームの内容に合わせて作る必要がありそうです。

 

シンプルさと自由度? 太鼓の達人

beatmaniaと同様、楽曲の自由度が高い内容ながら、入力をシンプルに、要所要所の演出を効果的に使って楽曲との一体感を高めています。

 

音楽にシンクロしたい

繰り返しをキーとするパラッパラッパー

繰り返しを排除、楽曲と同期してるけど複雑すぎるビートマニア

音楽との同期に複雑さを感じさせない太鼓、→他ジャンルとの組み合わせ Rez、ビブリボン

楽曲との同期からさらにそぎ落として、シンクロ感に特化するリズム天国

のような感じで、全体としては
・よりシンプルに
・より音楽との一体感を感じるように
という方向に進化してるように見えます。

スペースチャンネル5はRezなどは、その中でもかなり異色な雰囲気で面白いです。
音楽ゲームの表現をより豊かにしています。

メタデータ取得が鍵?

さて、サウンドビジュアライゼーションに置き換えると、そもそもこの「シンクロ感」をうまく出すのがとても難しいのではないかと思います。(リズムは波形ではとらえきれないと思うので・・)
しかし、同時に大事な要素でもあります。

音楽ゲームは、サウンドビジュアライゼーションの要素がふんだんに入っていますが、リズムは波形から取得するのではなく決め打ちで入っているパターンが多いかと思います。
もしかしたら、楽曲のメタデータをゲーム中に簡単に取り込んでしまえる、秘密の方法があるのかも。
そう考えると、ビジュアライゼーションを波形取得による完全自動処理のアプローチとするよりは、
何らかの方法でメタデータを簡単に取得/入力する仕組みを作ることが
より新しい表現の近道かもしれませんね。

 

 

音楽ゲームを見てみよう

すごい音楽ゲームが出てた。 ちょっと前の話になりますが、E3でサウンドとシューティングゲームが一体化した、凄いゲームがQ Entertainmentから発表されてましたね。Kinnectsを使って、…