Header Image - TsubokuLab - ツボクラボ -

AR(拡張現実)&Wiiリモコンをやってみた

前から拡張現実と呼ばれるARWiiリモコンを組み合わせた物を作ってみたいと思っていました。
そこで、今回は卒業研究の方も順調に進んでいる(?)ので、一晩でARとWiiリモコンを組み合わせた作品を作る事にしました!
miku
↓動画は下のほうにあります。
ARとWiiリモコンを組み合わせるにあたり、初めはFLASHで実装しようと思いました。
というのも、FLASHはWeb上で実際に動かせる上に既にFLARToolKitというFlash用のARが作られていて、さらにWiiFlashというサーバーソフトを使えば、FlashのActionScript3.0とWiiリモコン間で情報をやりとりできるからです。
しかし!!
WiiFlashですが、研究室のパソコンでは動いたのですが、同じように自分のノートパソコンにインストールしてサンプルを動かしても動かない(´Д`;)
色々調べましたが、問題はFlashでもWiiリモコンでもなく、「Bluetoothスタック」にありました。
WiiFlashの使えるBluetoothスタックは限られているようで、こればかりはBluetoothアダプタを買い換えるしか方法がありません・・・
ということでFlashは諦めて、C#で実装する事にしました!
C#でARを動かすために、A虎@さんの作った「NyARToolKit for C#」というクラスライブラリを使わせて頂きました。
そのソース解読に時間がかかりましたが、なんとかWiiリモコン制御用のプログラムを打ち込んで行って、ARとWiiリモコンを同時に動かす事が出来ました(・∀・)
■AR(拡張現実)&Wiiリモコン

ここから解説。
Wiiリモコンから取得できる値として前も日記に書きましたが、
・XYZ軸加速度(傾き)
・赤外線座標(4点まで)
・11ボタン

があります。
まず、
[加速度]
平行移動がXとY軸、垂直(縦)の移動がZ軸となっていて、XとYの加速度をモデルの加速度に加算し、平行移動させています。Z軸は一定値以上の加速度が加わると、モデルの加速度に加算されるようになっています。
壁に当たった場合は加速度×-1して反射させ、さらに×0.8して擬似跳ね返り係数を作っています。
次に、
[赤外線]
赤外線の座標をX.Yで取得できるので、今回はX軸のみ使用してモデルをZ軸を中心に回転させています。
そして[ボタン]ですが、今回はマーカーの土台として使用したので、ボタンは使用しない設定で行きました。
ということで今回はARとWiiリモコン組み合わせてみました
ARとWiiリモコンを組み合わせるとかなり自由度が上がりますよね
これでARの世界もさらにインタラクティブに生まれ変わります
あとは、コンタクトレンズ型ディスプレイの製品化を待つのみですね
さぁ、みんなも電脳ワールドに飛び込もう!!

最近の事

このあいだ書いた記事、書き込みミスかなんかで消えてました(泣)
最近やったことのまとめです。ちょっと長くなると思うのでちょっとずつ書きます(^ー^;)
■eAT金沢アワード2010 動画作品
最近と言っても、もう3週間も前になりますが、石川県が主催しているメディアコンテスト「eAT金沢アワード2010」の動画部門に作品を応募すべく、作品作りを頑張っていました。
3分間の動画ですが、毎日朝から夜9時まで研究室にこもって素材作り・撮影・動画編集などを頑張ったかいあってなんとか締め切りに間に合いました。
「絶対にこのコンテストに出す」って決めて頑張ってきて本当に良かったです。自分も大きく成長出来たし、なんにも目標も無くだらだらした毎日を送るより、「作品を出した」「行動した」っていう事が一番大切なんだって実感しました。
賞を取れるかなんてわかりませんが、結構頑張った作品なので割と本気で賞狙ってます(笑)
ちなみに15秒の動画部門に応募したのですが、一番メインの部門なのでグランプリは50万円相当の商品だとかフフフ・・・
作品は今はまだ公開しません。
というのも、まぁちょっと恥ずかしかったり、2週間かけてこれかとか言われるとショックなので
でも、もし賞が取れたら公開するつもりですが、今は静止画だけで我慢してね
賞が取れなかったら永遠に未公開かも(笑)
 
こんな感じの作品です。
eAT2
eAT1
わたくし、普段(?)はストリートダンスなんかもやってまして、作品制作しながら2つくらい出演イベントが決まってたりして、夜中ダンスの練習してたので家に帰ってくるのはいつも深夜4時くらいになってました(´Д`;)
良く体が持ったとつくづく思う。
■Wiiリモコン用 赤外線照射デバイス
IR1
研究にWiiリモコンを利用するにあたり、必要になると思ったので赤外線を照射するためのデバイスを自作してました。
過去にUSB電源のWiiリモコン用のセンサーバーを自作したので、その経験を活かして赤外線LED96個を使った最強のLED群を作りました。
しかも今回もUSB電源です。
USBが5Vなので、1つにつき1.25V必要なLEDは4つまでしか直列できません。
そこで4つ直列になったLEDを24列作り、全て並列に接続して電圧を保ちました!
IR2
IR3
これである程度の強さを持った赤外線が作れたので、LEDから照射された赤外線が再帰性反射板(光が来た方向に反射させる素材)にあたって反射した座標を読み取れるわけですね。
それを使ってなにを作るかはまだ考え中です^^;

謎の浮遊物体

台所になんか浮いてたきめぇげっそり

ここでトリックのネタばらしですが・・・

みなさん「磁性流体」ってご存知ですか?

ようするに液体の磁石です。

この浮遊している青い球体はその磁性流体というのを使ってるんですね。

作り方ですが、今回は形をある程度保つ為にスライムを作る時と同じ要領で作っていきました。

■材料

水30ml

PVA洗濯のり10ml

ホウ砂小さじ3

砂鉄50g

絵の具(お好み)

■作り方

①まず水30mlとポリビニールアルコール性の洗濯のり10mlを70度の温度であたためながら混ぜます。

②次に薬局で売っているホウ砂を小さじ3倍混ぜると、ゲル状になってきます。

③ここで青色絵の具(1本)を投入。青いスライムの出来上がり!

④できたスライムと砂鉄50gをよく混ぜて完成。

簡単ですよね!手(チョキ)

■そしてここからが本番exclamation ×2浮かせますexclamation ×2

皆さんの家にはあるかわかりませんが、電磁調理器(IH)を使用します。

まず電磁調理器の上に完成したスライムを乗せて、電磁調理器のスイッチを弱からゆっくりと強へと上げていきます。

電磁調理器から発生する電磁波の力が磁気を持ったスライム君に反応して押し上げるので、電磁波とスライムの重さが平等になったところで宙に浮かび上がります。

上手く強さを調整するとキレイにフワフワと浮かんでくれます。

※あまり出力を強くしすぎると飛びすぎてしまうので注意!

という事で、今回は不思議な浮かぶスライム(磁性流体)を作りました。

みなさんも上手く浮かべる事ができましたか?ウッシッシ

ん?できないだって?

まぁ、浮かべることが出来なくて失敗してしまった人も、ここで書いた事は全部ウソなので気を落とさないで下さいねexclamation ×2わーい(嬉しい顔)ぴかぴか(新しい)

-----------------------------------------------------------------—
という記事をmixiで書いたら結構な人がだまされてくれました(笑)
本当はマッチムーブという実際の映像と3DCGを自然に合成する技術を使っているんです。
最近では映画などで使われているのも良く見かけます。

マッチムーブソフトはVoodoo camera trackingというフリーのソフト。
映画などで使われているものは数百万円するものが普通ですが、なんとこのソフトはフリーなのです!

3DソフトもBlenderというフリーのものを使っているので映画なみの技術がタダで作れてしまうんですよね^^

流れとしては、
①素材となる動画を取ってきて
②それを連番tga画像形式に変換
③Voodooで読み込んでカメラの動きを解析。3Dソフト用のデータを作る。
④Blenderで読み込んでCGと重ねる
できあがりです

思ったより簡単でしたが、古いノートパソコンでレンダリングしたのでたかが3秒くらいの動画なのに結構レンダリングに時間がかかりました(´Д`;)

他にもマッチムーブではありませんが、Blenderを始めて使ったので流体シミュレーションなんかも試してみました。
みなさんも興味があったらマッチムーブに挑戦してみてはいかがでしょうか(^ヮ^)

ついにWiimoteLibがMotionPlusに対応!?

タイトルどおりなのですが、ついこの間の7月20日にCodeplexでWiiリモコンをパソコンで使う為のライブラリ「WiimoteLib」に新しくMotionPlusが対応したものが公開されました。
まだWiimoteLib_1.8 Beta版ということですが、問題ないと思います。
↓ここからDLできます
http://wiimotelib.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=30401
WiiMotionPlusには3軸(正確には2軸+1軸)のジャイロセンサが搭載されていて、Wiiリモコンがどちらの向きにどれくらい回転したかが正確にわかります。
その精度がすごいということで一部で話題になっていましたが、
いままでのジャイロセンサが一秒間に300度の回転を読み取ることが出来たのですが、それではスポーツなどの素早い運動に対応できないという事で1秒間に1600度まで対応させたという高精度さ。
そんなすごいジャイロセンサが1500円という低価格で手に入ってしまうとは時代も変わりましたね・・・。
ちなみにうちの研究室にあるモーションキャプチャーのジャイロセンサは1つ50万するらしいですが(笑)
MotionPlusを研究室で買ってくれるみたいですが、待ちきれない&俺が欲しいので個人で買ってしまいそうです。

Processing -sound-

最近Processingというビジュアル表現の為のプログラミング言語をさわり始めました。
Processingはプログラム初心者にオススメするだけあって、難しい表記無しに簡単な命令文でプログラムが動かせる上に、コンパイル無しで動き、Processing自体のインストールもしなくてもいいというすごいソフト。
ビジュアル表現に便利な映像・音楽・3D表現などのライブラリも初めから用意されているので、それらを組み合わせたプログラムが簡単に作れます。
Processingに慣れる為に音楽を読み込んでその波形から映像を作り出す、いわゆるビジュアライザというものを作ってみました。
sound(別窓でアプレットを起動します)
sound.png
プログラムとしてはとても簡単で、80行程度でこんな楽しいプログラムが出来てしまいます。
minimという音楽を扱うライブラリを使用してステレオ音源を読み込みloadFile()、左右のスピーカーのレベル合計mix.get()で大きさと場所が変わる円をellipse()で真ん中に書いているんですね。
ちなみにクリックすると、マウスの位置によって音程が変わるSinカーブの音を鳴らすモードに変わります。(まさかここでメディア情報論の知識が出てくるとは・・・)
バックでドラム音が流れてるのでそれにあわせてメロディーを作ってみては?
3Dにも簡単に対応できそうなので可能性がひろがります。
そういやiTunesの新しいビジュアライザのビジュアルプロトタイプ開発にもProcessingが使われたとか・・・

Wiiリモコンで出来る事

WiiリモコンはBluetooth通信を使っているので、Bluetoothが入っているパソコンなら簡単にWiiリモコンをPCとワイヤレス接続する事ができます。
さらにcodeplexで公開されているWiimoteLibというライブラリを使うとC#なんかで簡単にWiiリモコンの制御を行う事ができる訳です。
■WiimoteLibはこちら
http://www.codeplex.com/WiimoteLib
Wiiリモコンについている機能として前の記事でも書きましたが、
・赤外線カメラ
・XYZ軸加速度センサ
・XY軸傾きセンサ(加速度センサから求める)
・11ボタン
・4つのLED
・バイブレーション機能
・サウンド機能

と、これだけ沢山のセンサがワイアレスで使えてしまうので色々な可能性が広がりますよね。
ここで少しWiiリモコンから受け取る値の説明をしようかと思います。
・赤外線カメラ
赤外線カメラでは赤外線光源を4つまで検出する事ができ、それぞれIRSensors[0]~[3]の中にX・Yの座標が格納されます。
X・Yはそれぞれ0~1の間で表されて、小数点以下もかなり細かいところまで正確に検出できます。
たとえば・・・
if(IRState.IRSensors[0].found)で赤外線が1つ見つかったときに、
(IRState.IRSensors[0].X , IRState.IRSensors[0].Y) の位置にマークを表示したりして使います。
・加速度センサ
X・Y・Z軸それぞれ-1~+1の間で加速度が検出されて、こちらもかなり細かい数値がでます。
ちなみにWiiリモコンを平行に地面に置いた状態では重力でY軸が常に+1になります。
こちらはAccselState.Value.Xでその軸の値を呼び出して使用することが出来ます。
この二つだけでもかなり面白そうなものができそうです。
今研究で、フィジカルコンピューティングという現実とデジタルを組み合わせて身体的に操作できるものが作りたいと思っています。
そこで考えたのが、Wiiリモコンの赤外線カメラでボールの位置をトラッキングして遊べるゲームもしくはインタラクティブアート
仕組みとしてはこんな感じ。
図
・Wiiリモコンを部屋の上部に固定し、その方向から赤外線を放出
・ボール(赤外線を反射するもの)から反射した赤外線の座標をWiiリモコンで検出
・プロジェクタでボールに重ね合わせてエフェクトを表示したり敵キャラクターを表示する
・一人はボールを転がして遊び、別の人がもう1つのWiiリモコンで敵キャラクターを操作できて対戦できると楽しいかも
図2
簡単だけどこんなイメージ。
実際にプロトタイプは作ってるけど、動いてる所を録画したらまたここに載せたいとおもいます。

どうやらProce55ingがすごいらしい

インターネットで研究に使えそうな技術なんかを調べていたら、Processing(Proce55ingとも書く)という開発言語をよく目にした。
どうやらJavaベースで電子アートとビジュアルデザインのための言語らしいのでビジュアル表現にとても強く、コンパイル作業不要なので開発がとても楽で、さらにはWin.Mac.LinuxのOSに対応しているという割と新しい開発言語らしい。
色んな動画やらみてたら開発画面がめっちゃ単純で言語も単純明解。
すごく楽そう
こんな動画がありました。

こんなビジュアル表現が手軽にできるなんてステキ
他の方が作ってる動画も色々見てたら、Processingと他の色んなライブラリを組み合わせている方がいました。
例えば「Bullet」という物理エンジンなのですが、3Dのオブジェクトをぶつけたり転がしたりしたときの実際の動きをシミュレートできるもの。
Bullet自体もJavaベースでなので、Processingでも簡単に使えるようです。
物理演算は見てるだけで楽しいので、研究とは関係あっても無くても物理演算を使った何か作ってみたいですね。
そして「ARToolkit」。
これは拡張現実感と言って現実の映像にリアルタイムで3Dを合成するというものですが、元はC言語なのでそのままでは使用できませんが、さすがProcesseing。注目されているだけあってもう作られてますねぇProcessing用ARToolkit
NyARToolkit
ここで公開されています。ほかにもJava、C#、C++などでARToolkitを動かせるようにされてるみたいですごい方ですね。尊敬します。
これだけでProcessingにはARToolkitもBulletもそろっちゃったので、現実世界で物体をグチャグチャできるわけですね
あと欲しいのはWiiリモコンを使えるようにするライブラリのみ・・・・・・ジュルッ
こんなすばらしい言語使わないわけにいかないって事でインストールは終わらせましたが、時間無くてまだ触ってません。
またためしに何か作れたらUPしますね

大学の卒業研究テーマのあれこれ

大学の卒業研究のテーマで最近悩んでますが、最近使おうかと考えている技術でWiiリモコンがあります。
WiiリモコンはBluetooth通信でPCとワイヤレス通信が出来る上に
・赤外線センサ
・XYZ軸加速度センサ
・XY軸傾きセンサ
・11ボタン
・4つのLED
・バイブレーション機能
・サウンド機能

と十分すぎる機能が付いていて、数千円で手に入ってしまうというすばらしいデバイス。
WiimoteLibというライブラリが公開されているため、C#だったりVisualBasicで簡単にWiiリモコンを操作するプログラムを組めるというお手軽さも魅力で俺も勉強がてらプログラムを作ってみる事にしました。
始めはセンサから受け取る値を処理する方法を勉強する為にWiiリモコンをPCのマウス代わりに使えるソフトなんかを作りました。
割と理解してきたので、今はXNAというFrameworkを使ってC#で3D表示をするところに入っています。
DOGAという3Dソフトでエクスポートした.Xファイルを読み込んでXNA上で表示させ、Wiimoteの傾きやボタン操作に対応して3Dモデルが移動するようにプログラムしてみました。
実際に操作してみた感覚は3Dの飛行機が自分の手の動きにあわせてぬるぬる動いて面白かった。
これでシューティングゲームだったり作れたら楽しいかも?
他にもAR(拡張現実感)とかのプログラムもちょこちょこいじって、勉強してるのでそちらも進んだらまた書きます。

コツコツモデリング2

またやってますむふったらーっ(汗)

先日作ったキャラクターモデルにテクスチャ(表面の絵)を作っていきます。

この作業は始めてやったんですが、これがめっちゃ大変あせあせ(飛び散る汗)

まずUVっていう展開図みたいなのを作らなきゃいけなくて、それをうまくサイズ内に収まるようにパズルみたいに切ったり貼ったりします。

最初の展開図は自動で作ってくれるんですが、そのままでは部品がバラバラすぎてとてもじゃないけど色をぬれないので、色を塗りやすいように同じ色の部分はまとめて、違う色の部分は切り離して・・・というように、整えていきます。

で、完成した展開図にフォトショップで色を塗ります。

これが完成したテクスチャ

これをモデルのテクスチャとして読み込むと・・・

こんなかんじexclamation ×2
一気にキャラクターっぽくなりましたムード

単純な絵に見えるけど実はいろんな所にこだわりが・・・

ロゴのせいでわかりづらいけど、ズボンにはうっすらと模様が入ってたり、スニーカーの紐の部分を頑張ったりアディダスだったり。

を?靴の裏には??むふっ

上半身はこんな感じ。

顔の別バージョンも遊びで作っちゃいました(笑)

と、今回のキャラクターモデルはこれで完成って事でいいかなー。

でも次はこいつをアニメーションさせるためにボーンを作ったり、スキンの設定をしたりしなきゃいけないから、また大変そうだあせあせ(飛び散る汗)

希望があったので、ピンクのラパンも作っちゃいました。

まだ大まかに作っただけなので細部が適当ですむふっ

3DCGソフトを使ってると俺のノートパソコンの低スペックさにイライラしますむかっ(怒り)
何回画面フリーズした事か・・・

今日100満ボルト行ってきたんですけど、最近のノートパソコンはHDD300GB、メモリ4GB、CPU2.6GHzとか普通なんすねげっそり

HDD70Gメモリ500Mの俺涙目涙

コツコツモデリング

また3DCGソフトMayaの練習がてら、家にひきこもってモデリングしてますむふっ

最終的には研究とかでゲームとかに使えるように、ポリゴン数を抑えたローポリゴンのモデルを作ってみることにしました。

個人的にMAPとか作るのに興味があったので、MAPに配置するオブジェクトってことで一つ目はガスタンク指でOK

文字が入るのはソフトが無償版やからですたらーっ(汗)
テクスチャを貼り付けると良い感じにるんるんバイオハザードとかで出てきそうなガスタンクの出来上がりわーい(嬉しい顔)

次はMAPに配置する照明ってことでライトを作りました。

で、オブジェクト数はまだ少ないけど、簡単にベースとなる建物を作って各オブジェクトを配置してみた↓

ある程度見た目はよくなってきたかな?

簡単にやけどベースとなるMAPが出来上がったし、だいぶMayaの使い方にも慣れてきたので、次はいよいよ難しいとされるキャラクターモデリングに挑戦してみることにexclamation ×2

下から上に作っていくのでまず下半身を作成。
ローポリゴンなので割りと楽に作る事が出来ましたウッシッシ

続いて上半身もモデリング。
やっぱり顔がちょっと難しかったかなー?

あと手とかは指を一本一本作るのが面倒やったから、手袋みたいに親指だけ離れてるタイプにしました(笑)

で、まだテクスチャをちゃんと作ってないので表面の模様とかは無いですが、キャラクターモデルも出来たという事でさっき作ったMAPに立たせてみましたぴかぴか(新しい)

とりあえずは今日はここまで完成しました。
今日というか、モデリングをしてると時間を忘れて作業してしまうので、夜に作業を始めて、気づいたら次の日の夕方になってたりしましたむふっ

なんか廃墟とか好きやから、廃墟の街のMAPとか作ってみたいなぁーぴかぴか(新しい)

なんかリクエストあれば挑戦してみますムード