Wiiリモコンの謎
あれから、寝ても覚めても
『Wiiリモコンの謎』
が気になって考え続けた…。
どうやったら画面をポイントできるのか?
センサーバーだけでは、どうしても軸が一つ足りない…。
それを補うものは,何か…?
レーダーが組み込んであるのかな?
…でも、マイクロウエーブで火傷しない?
超音波で室内を3Dスキャン?
…ちょっとオーバーテクノロジーじない?
重力差で高さを調べる?
…って何の高さが分かる?
気圧で…
…台風時にゲームできないよね?
などと考えた結果!
リモコンにカメラが仕込んであるに違いない!
との考えに至る。
実際に20年以上昔に画面を直接ポイントするゲームがあった。
そう、ガンゲーム。
画面を白くするのは、光学センサーの精度が悪いため。
また、TV自体もばらつきがあるし…。
モニターを調整し光学センサーを高精度にすると
画面を光らせなくても走査線の光点情報が得られる。
ゲームセンターのガンゲームなんかがそう。>多分。
ただしこの方法は、走査線のあるブラウン管でのみ有効。
つまり液晶やプロジェクターでは、使用できない。
ゲームセンターでは、映像表示機器をゲームメーカーが用意できるが
家庭では、当然出来ない。
それに、家庭用TVは、液晶が花盛りだし…。
でWiiリモコンには、低解像度CCDカメラが使用されていると考えた。
では、センサーバーは、何かと言うと…
ラウンドマークとスイッチとして使用する光点かな。
まず、カメラから得た画像が有効かの判定に使用する。
センサーバーが入っていれば有効。
さらにその光点の上下どちらかにある長方形の光源が
TVの画面と推測し画面位置を計算するに違いない。
つまり…距離は、測っていない!(爆)
傾きセンサーは、画像の天地を判定するのに使用する。
で、あのもたつきは、画像を送信のラグタイムかと。
ブルートゥースの通信速度は、1Mbps。
つまり125000Bps。
カメラが得た画像を判定用モノクロ画像だとすると…
640×480ドット×1ビットで38400B程だとすると
0.3秒に1枚送る計算になる。
この推測を確認するには、センサーバーを隠さないで
・TV画面の4分の3を隠すとゲームできない。
・TV画面を隠すとポイントできない。
との結論に至る…。
が、
これは推測である!
だが、これが一番現実的であると思うが…。
取り合えず
『答えは、これだ!』
と言う事で寝る!
| 固定リンク
コメント
通りすがりさん、今晩は♪(笑)
色々試して頂いて有難うございます。
http://sunlight.cocolog-nifty.com/sunlight/2006/12/post_8731.html>はじめてのWii♪
でも書いてある通り人が持ってきたのを3時間程遊ばしてもらった時での推測でしかありません。
無論持っていれば、色々やってみたのですが…。
でも、おかげさまで理屈がわかりました。
有難うございます。
103型でも15型でも同じ所をポイントするんですね…。
色々仕組みを考えていたのでショックだったり。
最近の研究で画像内の人の顔を自動的に認識する
画像処理などが実用化されていたので
その辺りの技術を使っているのかと考えていたのですが…。
マンアジャストとは、盲点でした。(笑)
でも、任天堂も思い切った仕様にしたなぁ~。
通りすがりさんの情報は、改めてまとめて
記事にさせて頂きます。
投稿: kouyou | 2006年12月10日 (日) 03時44分
ちょっと言い忘れました。
> つまり、加速度センサーでセンサーバーに向かって移動すると
> 近づいたと、
リモコンを固定してカメラの前に虫眼鏡を近づける実験をしたところ、
それでもスタンプの大きさが変化しました。
加速度センサーの情報は距離測定とは無関係だという証拠です。
投稿: 通りすがり | 2006年12月10日 (日) 03時18分
> しかし、指定しなくてもTVが面に合わせられる以上
> カメラなどでTV画面を取得しなくては無理だと考えたのです。
自分の意見は違って「そもそも合わせられていない」と思っています。
実際に色々なTVで試したわけではありませんが、
少なくとも所有の32型液晶TVでは画面端に行くほど誤差が大きいです。
試しにTVの中心からずらしてセンサーバーを設置してみて下さい。
ポイントされる位置がずれると思います。
本当にTV画面を撮影していてセンサーバーは単なるランドマークだとしたら
こういう現象はおきないはずです。
> つまり、センサーバーだけだとセンサーバーの正面から右に移動すると
> 遠ざかったと誤判断する可能性が有ります。
実際その通りで、誤判断しています。
写真chのラクガキでスタンプを選択した状態で、
指示座標を維持したままリモコンを画面と平行に動かしてみて下さい。
(一度中心にスタンプを押して、それに重なるように動かすとやりやすい)
スタンプの大きさが変わるのが分かると思います。
> つまり、加速度センサーでセンサーバーに向かって移動すると
> 近づいたと、これなら横に移動しても判断できます。
この方法だと等加速度運動で(またはごくゆっくりと)動かしたときに
対応できません。
> ちなみに「センサーバーの感度調整画面」赤外線意外を
> 内部でフィルタリングしているだけかと思います。
それ以前に物理的な赤外線フィルタで(リモコン先端の黒い窓)可視光を
カットしていますのでそれはないと思います。
TV画面から赤外線が出ているか、赤外線ライトで照らさない限り撮影は不可能です。
(まぁ実際は少しくらいは出ていると思いますが)
念のためTV画面を隠して(別のモニターで見ながら)試してみましたが、
問題なくポイントできましたよ?
投稿: 通りすがり | 2006年12月10日 (日) 02時50分
通りすがりさんどうも♪
URLは、大変参考にさせて頂きました。
実は、自分の考えは、通りすがりさんの意見とちょいと異なります。
どうしてかも合わせて書いてみたのでご検討ください。
一番最初に考えたものは、どうやってTV画面の大きさを知るかと言う点でした。
画面比率は有りますが、大きさの指定する設定がありません。
しかし、指定しなくてもTVが面に合わせられる以上
カメラなどでTV画面を取得しなくては無理だと考えたのです。
例えば、103型のTVと15型TVがあるとします。
画面右上をポイントするには全く違う場所をポイントしますが
(大きさが違うのですから当然ですが…。)
プログラム内分で得られる座標は、640x0ドットと
同じになります。<て、違った困ります…。
このドット座標とTV画面の対応を得るには
カメラから得た画像から得るしか無いだろうと考えたのです。
ポイントしてるのは画像の中心ですので画面を設定されている
画面比率へ変形します。
すると中心点が画面のどの位置になるかが分かります。
また距離については、センサーバーの2点間で取得する方法も
考えたのですが傾きを得る方法がありません。
つまり、センサーバーだけだとセンサーバーの正面から右に移動すると
遠ざかったと誤判断する可能性が有ります。
そこでセンサーバーを用いない方法で移動を見ていると考えました。
つまり、加速度センサーでセンサーバーに向かって移動すると
近づいたと、これなら横に移動しても判断できます。
これ以外だとセンサーバーの個々の光点からの距離を正確に
求めないと近づいたか左右に移動したか分かりません。
でもそれは、光が数センチ移動したのを検出しなくては
ならないので家庭用では、無理だと思います。
ちなみに「センサーバーの感度調整画面」赤外線意外を
内部でフィルタリングしているだけかと思います。
画像をそのまま表示すると色々知られてしまうから
細工をしていると思います。
任天堂は、絶対公表しないので色々検討できるのが
面白いかもしれません。
ちなみに、同じようにWiiリモコンを検討している
サイトを見つけました。
わぱのつれづれ日記
http://d.hatena.ne.jp/wapa/20061105/p2>http://d.hatena.ne.jp/wapa/20061105/p2
投稿: kouyou | 2006年12月 9日 (土) 16時13分
リモコンにカメラが仕込んであるのは事実ですが(URL参照)、
実は測っていないのは距離ではなく絶対座標だと思います。
つまり正確なポインティングは行っていないと思われ(爆)
標準的なサイズの画面を想定して、その中心からの差分を見ているだけでしょう。
(実際、望遠鏡を覗くように見れば画面端に行くほど誤差が大きくなります)
その代わり、距離は測っていると思いますよ。
(写真chのらくがきモードや、はじWiiの釣りで使われています)
例えば距離1mの撮像での2点間の間隔を予めデータとして持っていれば、
それ以外の場合は比例計算で実際の距離を求められますので。
(ただこの場合も正面以外では誤差が出ます)
ちなみに赤外線フィルタ(黒い窓)が可視光を遮断するのでTV画面はカメラには映りません。
(センサーバーの感度調整画面が、実はCMOSカメラの撮像そのものだと思います)
投稿: 通りすがり | 2006年12月 9日 (土) 04時16分