図1を参照して、この発明の一実施例であるゲームシステム10は、ビデオゲーム装置(以下、単に「ゲーム装置」という。)12およびコントローラ22を含む。なお、図示は省略するが、この実施例のゲーム装置12は、最大4つのコントローラ22と通信可能に設計されている。また、ゲーム装置12と各コントローラ22とは、無線によって接続される。たとえば、無線通信は、Bluetooth(登録商標)規格に従って実行されるが、赤外線や無線LANなど他の規格に従って実行されてもよい。さらには、有線で接続されても良い。
なお、この実施例では、図1に示すように家庭で使用される据え置き型のゲーム装置12を用いて、この発明の情報処理装置10を構成した場合を説明するが、他の実施例では、パーソナルコンピュータ、携帯電話機、携帯情報端末など他のコンピュータが用いられてもよい。
ゲーム装置12は、略直方体のハウジング14を含み、ハウジング14の前面にはディスクスロット16が設けられる。ディスクスロット16から、ゲームプログラム等を記憶した情報記憶媒体の一例である光ディスク18が挿入されて、ハウジング14内のディスクドライブ54(図2参照)に装着される。ディスクスロット16の周囲には、LEDと導光板が配置され、さまざまな処理に応答させて点灯させることが可能である。
また、ゲーム装置12のハウジング14の前面であり、その上部には、電源ボタン20aおよびリセットボタン20bが設けられ、その下部には、イジェクトボタン20cが設けられる。さらに、リセットボタン20bとイジェクトボタン20cとの間であり、ディスクスロット16の近傍には、外部メモリカード用コネクタカバー28が設けられる。この外部メモリカード用コネクタカバー28の内側には、外部メモリカード用コネクタ62(図2参照)が設けられ、図示しない外部メモリカード(以下、単に「メモリカード」という。)が挿入される。メモリカードは、光ディスク18から読み出したゲームプログラム等をローディングして一時的に記憶したり、このゲームシステム10を利用してプレイしたゲームのゲームデータ(ゲームの結果データまたは途中データ)を保存(セーブ)しておいたりするために利用される。ただし、上記のゲームデータの保存は、メモリカードに対して行うことに代えて、たとえばゲーム装置12の内部に設けられるフラッシュメモリ44(図2参照)のような内部メモリに対して行うようにしてもよい。また、メモリカードは、内部メモリのバックアップメモリとして用いるようにしてもよい。
なお、メモリカードとしては、汎用のSDカードを用いることができるが、メモリスティックやマルチメディアカード(登録商標)のような他の汎用のメモリカードを用いることもできる。
ゲーム装置12のハウジング14の後面には、AVケーブルコネクタ58(図2参照)が設けられ、そのAVコネクタ58を用いて、AVケーブル32aを通してゲーム装置12にモニタ34およびスピーカ34aを接続する。このモニタ34およびスピーカ34aは典型的にはカラーテレビジョン受像機であり、AVケーブル32aは、ゲーム装置12からの映像信号をカラーテレビのビデオ入力端子に入力し、音声信号を音声入力端子に入力する。したがって、カラーテレビ(モニタ)34の画面上にたとえば3次元(3D)ビデオゲームのゲーム画像が表示され、左右のスピーカ34aからゲーム音楽や効果音などのステレオゲーム音声が出力される。また、モニタ34の周辺(この実施例では、モニタ34の上側)には、2つの赤外LED(マーカ)340m,340nを備えるマーカ部34bが設けられる。このマーカ部34bは、電源ケーブル32bを通してゲーム装置12に接続される。したがって、マーカ部34bには、ゲーム装置12から電源が供給される。これによって、マーカ340m,340nは発光し、それぞれモニタ34の前方に向けて赤外光を出力する。
なお、ゲーム装置12の電源は、一般的なACアダプタ(図示せず)によって与えられる。ACアダプタは家庭用の標準的な壁ソケットに差し込まれ、ゲーム装置12は、家庭用電源(商用電源)を、駆動に適した低いDC電圧信号に変換する。他の実施例では、電源としてバッテリが用いられてもよい。
このゲームシステム10において、ユーザまたはプレイヤがゲーム(またはゲームに限らず、他のアプリケーション)をプレイするために、ユーザはまずゲーム装置12の電源をオンし、次いで、ユーザはビデオゲーム(もしくはプレイしたいと思う他のアプリケーション)のプログラムを記録している適宜の光ディスク18を選択し、その光ディスク18をゲーム装置12のディスクドライブ54にローディングする。応じて、ゲーム装置12がその光ディスク18に記録されているプログラムに基づいてビデオゲームもしくは他のアプリケーションを実行し始めるようにする。ユーザはゲーム装置12に入力を与えるためにコントローラ22を操作する。たとえば、入力手段26のどれかを操作することによってゲームもしくは他のアプリケーションをスタートさせる。また、入力手段26に対する操作以外にも、コントローラ22自体を動かすことによって、動画オブジェクト(プレイヤオブジェクト)を異なる方向に移動させ、または3Dのゲーム世界におけるユーザの視点(カメラ位置)を変化させることができる。
なお、ゲームまたは他のアプリケーションのプログラムおよびデータは、予めゲーム装置12のフラッシュメモリ44(図2)のような内部メモリに記憶されていてもよいし、ネットワーク上のダウンロードサーバからダウンロードして内部メモリに追加的に記憶されてもよい。
図2は図1実施例のビデオゲームシステム10の電気的な構成を示すブロック図である。図示は省略するが、ハウジング14内の各コンポーネントは、プリント基板に実装される。図2に示すように、ゲーム装置12には、CPU40が設けられる。このCPU40は、ゲームプロセッサとして機能する。このCPU40には、システムLSI42が接続される。このシステムLSI42には、外部メインメモリ46、ROM/RTC48、ディスクドライブ54およびAV IC56が接続される。
外部メインメモリ46は、ゲームプログラム等のプログラムを記憶したり、各種データを記憶したりし、CPU40のワーク領域やバッファ領域として用いられる。ROM/RTC48は、いわゆるブートROMであり、ゲーム装置12の起動用のプログラムが組み込まれるとともに、時間をカウントする時計回路が設けられる。ディスクドライブ54は、光ディスク18からプログラムデータやテクスチャデータ等を読み出し、CPU40の制御の下で、後述する内部メインメモリ42eまたは外部メインメモリ46に書き込む。
システムLSI42には、入出力プロセッサ42a、GPU(Graphics Processor Unit)42b,DSP(Digital Signal Processor)42c,VRAM42dおよび内部メインメモリ42eが設けられ、図示は省略するが、これらは内部バスによって互いに接続される。
入出力プロセッサ(I/Oプロセッサ)42aは、データの送受信を実行したり、データのダウンロードを実行したりする。
GPU42bは、描画手段の一部を形成し、CPU40からのグラフィクスコマンド(作画命令)を受け、そのコマンドに従ってゲーム画像データを生成する。ただし、CPU40は、グラフィクスコマンドに加えて、ゲーム画像データの生成に必要な画像生成プログラムをGPU42bに与える。
図示は省略するが、上述したように、GPU42bにはVRAM42dが接続される。GPU42bが作画コマンドを実行するにあたって必要なデータ(画像データ:ポリゴンデータやテクスチャデータなどのデータ)は、GPU42bがVRAM42dにアクセスして取得する。なお、CPU40は、描画に必要な画像データを、GPU42bを介してVRAM42dに書き込む。GPU42bは、VRAM42dにアクセスして描画のためのゲーム画像データを作成する。
なお、この実施例では、GPU42bがゲーム画像データを生成する場合について説明するが、ゲームアプリケーション以外の任意のアプリケーションを実行する場合には、GPU42bは当該任意のアプリケーションについての画像データを生成する。
また、DSP42cは、オーディオプロセッサとして機能し、内部メインメモリ42eや外部メインメモリ46に記憶されるサウンドデータや音波形(音色)データを用いて、スピーカ34aから出力する音、音声或いは音楽に対応するオーディオデータを生成する。
上述のように生成されたゲーム画像データおよびオーディオデータは、AV IC56によって読み出され、AVコネクタ58を介してモニタ34およびスピーカ34aに出力される。したがって、ゲーム画面がモニタ34に表示され、ゲームに必要な音(音楽)がスピーカ34aから出力される。
また、入出力プロセッサ42aには、フラッシュメモリ44、無線通信モジュール50および無線コントローラモジュール52が接続されるとともに、拡張コネクタ60およびメモリカード用コネクタ62が接続される。また、無線通信モジュール50にはアンテナ50aが接続され、無線コントローラモジュール52にはアンテナ52aが接続される。
入出力プロセッサ42aは、無線通信モジュール50を介して、ネットワークに接続される他のゲーム装置や各種サーバと通信することができる。ただし、ネットワークを介さずに、直接的に他のゲーム装置と通信することもできる。入出力プロセッサ42aは、定期的にフラッシュメモリ44にアクセスし、ネットワークへ送信する必要があるデータ(送信データとする)の有無を検出し、当該送信データが有る場合には、無線通信モジュール50およびアンテナ50aを介してネットワークに送信する。また、入出力プロセッサ42aは、他のゲーム装置から送信されるデータ(受信データとする)を、ネットワーク、アンテナ50aおよび無線通信モジュール50を介して受信し、受信データをフラッシュメモリ44に記憶する。ただし、一定の場合には、受信データをそのまま破棄する。さらに、入出力プロセッサ42aは、ダウンロードサーバからダウンロードしたデータ(ダウンロードデータとする)をネットワーク、アンテナ50aおよび無線通信モジュール50を介して受信し、そのダウンロードデータをフラッシュメモリ44に記憶する。
また、入出力プロセッサ42aは、コントローラ22から送信される入力データをアンテナ52aおよび無線コントローラモジュール52を介して受信し、内部メインメモリ42eまたは外部メインメモリ46のバッファ領域に記憶(一時記憶)する。入力データは、CPU40のゲーム処理によって利用された後、バッファ領域から消去される。
なお、この実施例では、上述したように、無線コントローラモジュール52は、Bluetooth規格にしたがってコントローラ22との間で通信を行う。
さらに、入出力プロセッサ42aには、拡張コネクタ60および外部メモリカード用コネクタ62が接続される。拡張コネクタ60は、USBやSCSIのようなインターフェイスのためのコネクタであり、外部記憶媒体のようなメディアを接続したり、他のコントローラのような周辺機器を接続したりすることができる。また、拡張コネクタ60に有線LANアダプタを接続し、無線通信モジュール50に代えて当該有線LANを利用することもできる。外部メモリカード用コネクタ62には、メモリカードのような外部記憶媒体を接続することができる。したがって、たとえば、入出力プロセッサ42aは、拡張コネクタ60や外部メモリカード用コネクタ62を介して、外部記憶媒体にアクセスし、データを保存したり、データを読み出したりすることができる。
詳細な説明は省略するが、図1にも示したように、ゲーム装置12(ハウジング14)には、電源ボタン20a,リセットボタン20bおよびイジェクトボタン20cが設けられる。電源ボタン20aは、システムLSI42に接続される。この電源ボタン20aがオンされると、ゲーム装置12の各コンポーネントに図示しないACアダプタを経て電源が供給され、システムLSI42は、通常の通電状態となるモード(通常モードと呼ぶこととする)を設定する。一方、電源ボタン20aがオフされると、ゲーム装置12の一部のコンポーネントのみに電源が供給され、システムLSI42は、消費電力を必要最低限に抑えるモード(以下、「スタンバイモード」という。)を設定する。この実施例では、スタンバイモードが設定された場合には、システムLSI42は、入出力プロセッサ42a、フラッシュメモリ44、外部メインメモリ46、ROM/RTC48および無線通信モジュール50、無線コントローラモジュール52以外のコンポーネントに対して、電源供給を停止する指示を行う。したがって、このスタンバイモードは、CPU40によってアプリケーションの実行が行われないモードである。
なお、システムLSI42には、スタンバイモードにおいても電源が供給されるが、GPU42b、DSP42cおよびVRAM42dへのクロックの供給を停止することにより、これらを駆動させないようにして、消費電力を低減するようにしてある。
また、図示は省略するが、ゲーム装置12のハウジング14内部には、CPU40やシステムLSI42などのICの熱を外部に排出するためのファンが設けられる。スタンバイモードでは、このファンも停止される。
ただし、スタンバイモードを利用したくない場合には、スタンバイモードを利用しない設定にしておくことにより、電源ボタン20aがオフされたときに、すべての回路コンポーネントへの電源供給が完全に停止される。
また、通常モードとスタンバイモードの切り替えは、コントローラ22の電源スイッチ26hのオン/オフの切り替えによっても遠隔操作によって行うことが可能である。当該遠隔操作を行わない場合には、スタンバイモードにおいて無線コントローラモジュール52aへの電源供給を行わない設定にしてもよい。
リセットボタン20bもまた、システムLSI42に接続される。リセットボタン20bが押されると、システムLSI42は、ゲーム装置12の起動プログラムを再起動する。イジェクトボタン20cは、ディスクドライブ54に接続される。イジェクトボタン20cが押されると、ディスクドライブ54から光ディスク18が排出される。
図3(A)ないし図3(E)は、コントローラ22の外観の一例を示す。図3(A)はコントローラ22の先端面を示し、図3(B)はコントローラ22の上面を示し、図3(C)はコントローラ22の右側面を示し、図3(D)はコントローラ22の下面を示し、そして、図3(E)はコントローラ22の後端面を示す。
図3(A)ないし図3(E)を参照して、コントローラ22は、たとえばプラスチック成型によって形成されたハウジング22aを有している。ハウジング22aは、略直方体形状であり、ユーザが片手で把持可能な大きさである。ハウジング22a(コントローラ22)には、入力手段(複数のボタンないしスイッチ)26が設けられる。具体的には、図3(B)に示すように、ハウジング22aの上面には、十字キー26a,1ボタン26b,2ボタン26c,Aボタン26d,−ボタン26e,HOMEボタン26f,+ボタン26gおよび電源スイッチ26hが設けられる。また、図3(C)および図3(D)に示すように、ハウジング22aの下面に傾斜面が形成されており、この傾斜面に、Bトリガースイッチ26iが設けられる。
十字キー26aは、4方向プッシュスイッチであり、矢印で示す4つの方向、前(または上)、後ろ(または下)、右および左の操作部を含む。この操作部のいずれか1つを操作することによって、プレイヤによって操作可能なキャラクタまたはオブジェクト(プレイヤキャラクタまたはプレイヤオブジェクト)の移動方向を指示したり、カーソルの移動方向を指示したりすることができる。
1ボタン26bおよび2ボタン26cは、それぞれ、押しボタンスイッチである。たとえば3次元ゲーム画像を表示する際の視点位置や視点方向、すなわち仮想カメラの位置や画角を調整する等のゲームの操作に使用される。または、1ボタン26bおよび2ボタン26cは、Aボタン26dおよびBトリガースイッチ26iと同じ操作或いは補助的な操作をする場合に用いるようにしてもよい。
Aボタンスイッチ26dは、押しボタンスイッチであり、プレイヤキャラクタまたはプレイヤオブジェクトに、方向指示以外の動作、すなわち、打つ(パンチ)、投げる、つかむ(取得)、乗る、ジャンプするなどの任意のアクションをさせるために使用される。たとえば、アクションゲームにおいては、ジャンプ、パンチ、武器を動かすなどを指示することができる。また、ロールプレイングゲーム(RPG)やシミュレーションRPGにおいては、アイテムの取得、武器やコマンドの選択および決定等を指示することができる。
−ボタン26e、HOMEボタン26f、+ボタン26gおよび電源スイッチ26hもまた、押しボタンスイッチである。−ボタン26eは、ゲームモードを選択するために使用される。HOMEボタン26fは、ゲームメニュー(メニュー画面)を表示するために使用される。+ボタン26gは、ゲームを開始(再開)したり、一時停止したりするなどのために使用される。電源スイッチ26hは、ゲーム装置12の電源を遠隔操作によってオン/オフするために使用される。
なお、この実施例では、コントローラ22自体をオン/オフするための電源スイッチは設けておらず、コントローラ22の入力手段26のいずれかを操作することによってコントローラ22はオンとなり、一定時間(たとえば、30秒)以上操作しなければ自動的にオフとなるようにしてある。
Bトリガースイッチ26iもまた、押しボタンスイッチであり、主として、弾を撃つなどのトリガを模した入力を行ったり、コントローラ22で選択した位置を指定したりするために使用される。また、Bトリガースイッチ26iを押し続けると、プレイヤオブジェクトの動作やパラメータを一定の状態に維持することもできる。また、一定の場合には、Bトリガースイッチ26iは、通常のBボタンと同様に機能し、Aボタン26dによって決定したアクションを取り消すなどのために使用される。
また、図3(E)に示すように、ハウジング22aの後端面に外部拡張コネクタ22bが設けられ、また、図3(B)に示すように、ハウジング22aの上面であり、後端面側にはインジケータ22cが設けられる。外部拡張コネクタ22bは、図示しない別の拡張コントローラを接続するためなどに使用される。インジケータ22cは、たとえば、4つのLEDで構成され、4つのうちのいずれか1つを点灯することにより、点灯LEDに対応するコントローラ22の識別情報(コントローラ番号)を示したり、点灯させるLEDの個数によってコントローラ22の電源残量を示したりすることができる。
さらに、コントローラ22は、撮像情報演算部80(図4参照)を有しており、図3(A)に示すように、ハウジング22aの先端面には撮像情報演算部80の光入射口22dが設けられる。また、コントローラ22は、スピーカ86(図4参照)を有しており、このスピーカ86は、図3(B)に示すように、ハウジング22aの上面であり、1ボタン26bとHOMEボタン26fとの間に設けられる音抜き孔22eに対応して、ハウジング22a内部に設けられる。
なお、図3(A)ないし図3(E)に示したコントローラ22の形状や、各入力手段26の形状、数および設置位置等は単なる一例に過ぎず、それらが適宜改変された場合であっても、本発明を実現できることは言うまでもない。
図4はコントローラ22の電気的な構成を示すブロック図である。この図4を参照して、コントローラ22はプロセッサ70を含み、このプロセッサ70には、内部バス(図示せず)によって、外部拡張コネクタ22b、入力手段26、メモリ72、加速度センサ74、無線モジュール76、撮像情報演算部80、LED82(インジケータ22c)、バイブレータ84、スピーカ86および電源回路88が接続される。また、無線モジュール76には、アンテナ78が接続される。
プロセッサ70は、コントローラ22の全体制御を司り、入力手段26、加速度センサ74および撮像情報演算部80によって入力された情報(入力情報)を、入力データとして無線モジュール76およびアンテナ78を介してゲーム装置12に送信(入力)する。このとき、プロセッサ70は、メモリ72を作業領域ないしバッファ領域として用いる。
上述した入力手段26(26a−26i)からの操作信号(操作データ)は、プロセッサ70に入力され、プロセッサ70は操作データを一旦メモリ72に記憶する。
また、加速度センサ74は、コントローラ22の縦方向(y軸方向)、横方向(x軸方向)および前後方向(z軸方向)の3軸で各々の加速度を検出する。この加速度センサ74は、典型的には、静電容量式の加速度センサであるが、他の方式のものを用いるようにしてもよい。
たとえば、加速度センサ74は、第1所定時間毎に、x軸,y軸,z軸の各々についての加速度(ax,ay,az)を検出し、検出した加速度のデータ(加速度データ)をプロセッサ70に入力する。たとえば、加速度センサ74は、各軸方向の加速度を、−2.0g〜2.0g(gは重力加速度である。以下、同じ。)の範囲で検出する。プロセッサ70は、加速度センサ74から与えられる加速度データを、第2所定時間毎に検出し、一旦メモリ72に記憶する。プロセッサ70は、操作データ、加速度データおよび後述するマーカ座標データの少なくとも1つを含む入力データを作成し、作成した入力データを、第3所定時間(たとえば、5msec)毎にゲーム装置12に送信する。
なお、図3(A)−図3(E)では省略したが、この実施例では、加速度センサ74は、ハウジング22a内部の基板上の十字キー26aが配置される付近に設けられる。
ここで、加速度センサ74から出力される加速度データに基づいて、ゲーム装置12のプロセッサ(たとえば、CPU40)またはコントローラ22のプロセッサ(たとえば、プロセッサ70)などのコンピュータが処理を行うことによって、コントローラ22に関するさらなる情報を推測または算出(判定)することができることは、当業者であれば本明細書の説明から容易に理解できるであろう。
たとえば、1軸の加速度センサを搭載するコントローラが静的な状態であることを前提としてコンピュータ側で処理する場合、すなわち、加速度センサによって検出される加速度が重力加速度のみであるとして処理する場合、コントローラ22が現実に静的な状態であれば、検出された加速度データに基づいてコントローラ22の姿勢が重力方向に対して傾いているか否かまたはどの程度傾いているかを知ることができる。具体的には、加速度センサの検出軸が鉛直下方向である状態を基準としたとき、1G(重力加速度)がかかっているか否かだけで傾いているか否かを知ることができるし、その大きさによってどの程度傾いているかを知ることができる。
また、多軸の加速度センサの場合には、さらに各軸の加速度データに対して処理を施すことによって、重力方向に対してどの程度傾いているかをより詳細に知ることができる。この場合において、加速度センサの出力に基づいて、プロセッサ70がコントローラ22の傾き角度のデータを算出する処理を行ってもよいが、当該傾き角度のデータの算出処理を行うことなく、加速度センサからの出力に基づいて、おおよその傾きを推定できるような処理としてもよい。このように、加速度センサをプロセッサと組み合わせることによって、コントローラ22の傾き、姿勢または位置を判定することができる。
一方、加速度センサが動的な状態を前提とする場合には、重力加速度成分に加えて加速度センサの動きに応じた加速度を検出するので、重力加速度成分を所定の処理により除去すれば、動きの方向などを知ることができる。具体的には、加速度センサを備えるコントローラ22がユーザの手で動的に加速されて動かされている場合に、加速度センサによって生成される加速度データを処理することによって、コントローラ22の様々な動きおよび/または位置を算出することができる。
なお、加速度センサが動的な状態であることを前提とする場合であっても、加速度センサの動きに応じた加速度を所定の処理により除去すれば、重力方向に対する傾きを知ることができる。他の実施例では、加速度センサは、加速度データをプロセッサ70に出力する前に、内蔵の加速度検出手段から出力される加速度信号(加速度データ)に対して所望の処理を行うための、組込み式の信号処理装置また他の種類の専用の処理装置を備えてもよい。たとえば、組込み式または専用の処理装置は、加速度センサが静的な加速度(たとえば、重力加速度)を検出するためのものである場合、検知された加速度データをそれに相当する傾斜角(あるいは、他の好ましいパラメータ)に変換するものであってもよい。
無線モジュール76は、たとえばBluetoothの技術を用いて、所定周波数の搬送波を入力データで変調し、その微弱電波信号をアンテナ78から放射する。つまり、入力データは、無線モジュール76によって微弱電波信号に変調されてアンテナ78(コントローラ22)から送信される。この微弱電波信号が上述したゲーム装置12に設けられた無線コントローラモジュール52によって受信される。受信された微弱電波は、復調および復号の処理を施され、したがって、ゲーム装置12(CPU40)は、コントローラ22からの入力データを取得することができる。そして、CPU40は、取得した入力データとプログラム(ゲームプログラムまたはアプリケーションプログラム)とに従ってゲーム処理を行う。
さらに、上述したように、コントローラ22には、撮像情報演算部80が設けられる。この撮像情報演算部80は、赤外線フィルタ80a、レンズ80b、撮像素子80cおよび画像処理回路80dによって構成される。赤外線フィルタ80aは、コントローラ22の前方から入射する光から赤外線のみを通過させる。上述したように、モニタ34の表示画面近傍(周辺)に配置されるマーカ340mおよび340nは、モニタ34の前方に向かって赤外光を出力する赤外LEDである。したがって、赤外線フィルタ80aを設けることによってマーカ340mおよび340nの画像をより正確に撮像することができる。レンズ80bは、赤外線フィルタ80aを透過した赤外線を集光して撮像素子80cへ出射する。撮像素子80cは、たとえばCMOSセンサあるいはCCDのような固体撮像素子であり、レンズ80bによって集光された赤外線を撮像する。したがって、撮像素子80cは、赤外線フィルタ80aを通過した赤外線だけを撮像して画像データを生成する。以下では、撮像素子80cによって撮像された画像を撮像画像と呼ぶ。撮像素子80cによって生成された画像データは、画像処理回路80dで処理される。画像処理回路80dは、撮像画像内における撮像対象(マーカ340mおよび340n)の位置を算出し、第4所定時間毎に、当該位置を示す各座標値を撮像データとしてプロセッサ70に出力する。なお、画像処理回路80dにおける処理については後述する。
図5は、コントローラ22を用いてゲームプレイするときの状態を概説する図解図である。図5に示すように、ビデオゲームシステム10でコントローラ22を用いてゲームをプレイする際、プレイヤは、一方の手でコントローラ22を把持する。厳密に言うと、プレイヤは、コントローラ22の先端面(撮像情報演算部80が撮像する光の入射口22d側)がマーカ340mおよび340nの方を向く状態でコントローラ22を把持する。ただし、図1からも分かるように、マーカ340mおよび340nは、モニタ34の画面の横方向と平行に配置されている。この状態で、プレイヤは、コントローラ22が指示する画面上の位置を変更したり、コントローラ22と各マーカ340mおよび340nとの距離を変更したりすることによってゲーム操作を行う。
図6は、マーカ340mおよび340nと、コントローラ22との視野角を説明するための図である。図6に示すように、マーカ340mおよび340nは、それぞれ、視野角θ1の範囲で赤外光を放射する。また、撮像情報演算部80の撮像素子80cは、コントローラ22の視線方向を中心とした視野角θ2の範囲で入射する光を受光することができる。たとえば、マーカ340mおよび340nの視野角θ1は、共に34°(半値角)であり、一方、撮像素子80cの視野角θ2は41°である。プレイヤは、撮像素子80cが2つのマーカ340mおよび340nからの赤外光を受光することが可能な位置および向きとなるように、コントローラ22を把持する。具体的には、撮像素子80cの視野角θ2の中に少なくとも一方のマーカ340mおよび340nが存在し、かつ、マーカ340mまたは340nの少なくとも一方の視野角θ1の中にコントローラ22が存在する状態となるように、プレイヤはコントローラ22を把持する。この状態にあるとき、コントローラ22は、マーカ340mおよび340nの少なくとも一方を検知することができる。プレイヤは、この状態を満たす範囲でコントローラ22の位置および向きを変化させることによってゲーム操作を行うことができる。
なお、コントローラ22の位置および向きがこの範囲外となった場合、コントローラ22の位置および向きに基づいたゲーム操作を行うことができなくなる。以下では、上記範囲を「操作可能範囲」と呼ぶ。
操作可能範囲内でコントローラ22が把持される場合、撮像情報演算部80によって各マーカ340mおよび340nの画像が撮像される。すなわち、撮像素子80cによって得られる撮像画像には、撮像対象である各マーカ340mおよび340nの画像(対象画像)が含まれる。図7は、対象画像を含む撮像画像の一例を示す図である。対象画像を含む撮像画像の画像データを用いて、画像処理回路80dは、各マーカ340mおよび340nの撮像画像における位置を表す座標(マーカ座標)を算出する。
撮像画像の画像データにおいて対象画像は高輝度部分として現れるため、画像処理回路80dは、まず、この高輝度部分を対象画像の候補として検出する。次に、画像処理回路80dは、検出された高輝度部分の大きさに基づいて、その高輝度部分が対象画像であるか否かを判定する。撮像画像には、対象画像である2つのマーカ340mおよび340nの画像340m’および340n’のみならず、窓からの太陽光や部屋の蛍光灯の光によって対象画像以外の画像が含まれていることがある。高輝度部分が対象画像であるか否かの判定処理は、対象画像であるマーカ340mおよび340nの画像340m’および340n’と、それ以外の画像とを区別し、対象画像を正確に検出するために実行される。具体的には、当該判定処理においては、検出された高輝度部分が、予め定められた所定範囲内の大きさであるか否かが判定される。そして、高輝度部分が所定範囲内の大きさである場合には、当該高輝度部分は対象画像を表すと判定される。逆に、高輝度部分が所定範囲内の大きさでない場合には、当該高輝度部分は対象画像以外の画像を表すと判定される。
さらに、上記の判定処理の結果、対象画像を表すと判定された高輝度部分について、画像処理回路80dは当該高輝度部分の位置を算出する。具体的には、当該高輝度部分の重心位置を算出する。ここでは、当該重心位置の座標をマーカ座標と呼ぶ。また、重心位置は撮像素子80cの解像度よりも詳細なスケールで算出することが可能である。ここでは、撮像素子80cによって撮像された撮像画像の解像度が126×96であるとし、重心位置は1024×768のスケールで算出されるものとする。つまり、マーカ座標は、(0,0)から(1024,768)までの整数値で表現される。
なお、撮像画像における位置は、撮像画像の左上を原点とし、下向きをY軸正方向とし、右向きをX軸正方向とする座標系(XY座標系)で表現されるものとする。
また、対象画像が正しく検出される場合には、判定処理によって2つの高輝度部分が対象画像として判定されるので、2箇所のマーカ座標が算出される。画像処理回路80dは、算出された2箇所のマーカ座標を示すデータを出力する。出力されたマーカ座標のデータ(マーカ座標データ)は、上述したように、プロセッサ70によって入力データに含まれ、ゲーム装置12に送信される。
ゲーム装置12(CPU40)は、受信した入力データからマーカ座標データを検出すると、このマーカ座標データに基づいて、モニタ34の画面上におけるコントローラ22の指示位置(指示座標)と、コントローラ22からマーカ340mおよび340nまでの各距離とを算出することができる。具体的には、2つのマーカ座標の中点の位置から、コントローラ22の向いている位置すなわち指示位置が算出される。また、撮像画像における対象画像間の距離が、コントローラ22と、マーカ340mおよび340nとの距離に応じて変化するので、2つのマーカ座標間の距離を算出することによって、ゲーム装置12はコントローラ22とマーカ340mおよび340nとの間の距離を把握できる。
このゲームシステム10は、複数の表示情報を有しており、複数の表示情報のそれぞれは、複数のコンテンツを含むコンテンツ部と当該複数のコンテンツの見出しを表す見出し部とを含む。モニタ34には、任意に選択された表示情報の少なくともコンテンツ部と、他の表示情報の見出し部とが表示される。また、ゲームシステム10には、コンテンツの検索機能が備えられており、ユーザによって指定された検索条件に該当するコンテンツが存在するか否かが判別される。そして、検索条件に該当するコンテンツが表示されたコンテンツ部に含まれるものについては、当該コンテンツの表示形態が変化される。さらに、検索条件に該当するコンテンツがあるか否かに応じて、見出し部の表示形態が変化される。
具体的には、この実施例では、電子番組表表示アプリケーションにこの発明が適用された場合を説明する。つまり、表示情報は電子番組表であり、コンテンツは番組情報である。この電子番組表表示アプリケーションでは、複数の番組情報を含む番組表がコンテンツ部としてモニタ34に表示される。ユーザはモニタ34上で所望の番組情報の放送局、放送日、時刻などを確認したり必要に応じて詳細情報を表示させたりすることができる。
ただし、電子番組表データには、複数の放送局および複数の日付の番組情報など、多数の番組情報が含まれているので、すべての番組情報をモニタ34上に一度に表示するのは困難である。そのため、このゲームシステム10では、一部の番組情報のみが表示される。たとえば日付ごとに複数の番組情報を分類し、任意に選択された日付の番組情報を番組表として表示する。そして、他の日付の番組情報を番組表上には表示せずに、当該日付を示す見出し部のみを表示する。
この電子番組表表示アプリケーションでは、番組情報の検索を行うことが可能になっており、ユーザは指定した検索条件に該当する番組情報を電子番組表上で確認することができる。そして、検索条件に該当する番組情報が表示された番組表に含まれるものについては、当該番組情報の表示形態を変化させる。さらに、この実施例では、検索条件に該当する番組情報が表示された見出し部の日付に対応するものについては、当該日付の見出し部の表示形態を変化させる。したがって、番組情報の表示された番組表と番組情報の表示されていない番組表の両方について、それぞれ検索条件に該当する番組情報が存在するか否かを容易に識別することができる。
図8はゲーム装置12のメモリマップの一例を示す。メモリマップはプログラム記憶領域400およびデータ記憶領域500を含む。情報処理プログラムとデータは、光ディスク18から一度に全部または必要に応じて部分的に、かつ順次的に読み出され、外部メインメモリ46または内部メインメモリ42eに記憶される。また、データ記憶領域500には、処理によって生成または取得されたデータも記憶される。
なお、図8にはメモリマップの一部のみが示されており、処理に必要な他のプログラムおよびデータも記憶されている。たとえば、音声、効果音、音楽などの音を出力するためのサウンドデータ、画面を生成するための画像データ、音出力プログラム、画像生成表示プログラムなどが、光ディスク18から読み出されてデータ記憶領域500またはプログラム記憶領域400に記憶される。なお、本実施例においては、プログラムとデータは光ディスク18から読み出されるが、別の実施例においては、たとえばゲーム装置12に内蔵されるフラッシュメモリ44等の不揮発的な記憶媒体に予め記憶したまたはネットワーク経由でダウンロードしたプログラムおよびデータを読み出して、外部メインメモリ46または内部メインメモリ42eに記憶するようにしてもよい。
プログラム記憶領域400の記憶領域402には、番組表表示プログラムが記憶される。このプログラムは、後述される番組表データ、見出し部データおよびコンテンツ部データ等に基づいて電子番組表を含む画面を生成してモニタ34に表示するためのものである。この実施例では、番組表の3次元表示形態(図10参照)と2次元表示形態(図15参照)との切替表示が可能になっている。図9に示すように、番組表を複数の視点で表示するための複数のカメラ位置が予め決められており、カメラ位置の切替によって、番組表の表示が2次元形態と3次元形態との間で切替えられる。なお、カメラ位置は、仮想カメラがどこを見ているのかを示すパラメータを意味し、この実施例では、視点の位置の座標および注視点の位置の座標(または視線方向)を含む。
具体的には、図9は、仮想3次元空間に配置された番組表(参照符号「700」で包括的に示す)を上から見た場面を示している。この実施例では、上述のように、複数の番組情報を日付ごとに分類し、日付ごとの番組表をコンテンツ部として表示するので、1日分の番組表が1枚の板(直方体)で表現されている。また、所定日数分(この実施例では8日分)の番組表700を表示するので、複数枚(この実施例では8枚)の板が所定の間隔で平行に配列されている。カメラ位置(第1位置、第2位置および第3位置)から見て一番手前の板が、番組情報の表示される番組表となる。この一番手前の板には、任意に選択された日付の番組表が表示される。たとえば、現在日時などの所定のデータに対応する番組表が選択されたり、予め決められた日付(たとえば番組表データのうち最も古い日付)の番組表が選択されたり、ユーザによって選択または設定された日付の番組表が選択されたりしてよい。
この実施例の番組表は一方の軸を時間軸とし他方の軸を放送局軸として構成されており、複数の番組情報がマトリックス状に表示される。たとえば、図15に示すように、縦軸が放送局軸に、横軸が時間軸に設定される。縦方向には、複数の放送局のそれぞれの番組情報を記載するための複数の欄が並べられる。各放送局の欄は、さらに番組情報ごとの欄に区分される。各番組情報の欄の幅は、当該番組の放送時間に応じた長さに決められる。したがって、番組表700の板の縦の長さは、縦軸に表示する放送局の数に応じて決められ、横の長さは、24時間に相当する所定の長さに予め決められている。なお、この実施例では、最前の番組表の板については、各番組情報ごとの直方体を生成してこれら直方体を組み合わせることによって形成される。
また、番組表700の他の板には番組情報は表示されず、見出し部としての日付タブ(参照符号「702」で包括的に示す。)が板の一方端(この実施例では板の左端)の所定位置にそれぞれ設けられている。つまり、他の日付の番組情報については日付タブ702のみが表示される。
第1位置は、番組表700を2次元表示形態で表示するためのカメラ位置であり、第2位置および第3位置は、番組表700を3次元表示形態で表示するためのカメラ位置である。各カメラ位置としては、視点位置の座標と注視点位置の座標(または視線方向)が予め決められて記憶される。
2次元表示形態は、オブジェクトないし画像を2次元で表現するものである。したがって、第1位置は、番組表700のうち最前の板を画面上で2次元平面として、つまり、2次元の表として表示できるように適宜に設定される。ただし、第1位置の視点と注視点を結ぶ方向すなわち視線方向は、板の正面に直交する方向に設定される。また、2次元表示形態は、主として番組情報を示す文字をユーザに明確に見せるために設けられているので、第1位置の視点と最前の板との間の距離は比較的近くなるように設定される。ただし、番組情報を示す文字が明確に見える状態で1日分のすべての番組情報を一度に表示することは困難なので、デフォルトでは、所定の時刻または現在時刻等に対応する時間帯が含まれる表示範囲になるように視点および注視点が所定位置に設定される。そして、ユーザのスクロール操作等に応じて表示範囲が移動されるように視点および注視点が変更される。
一方、3次元表示形態は、オブジェクトを3次元で表現するものである。第2位置は、番組表700の全体を捕らえて立体的に表示できるように適宜に設定されている。この実施例では、日付タブ702が板の左端に設けられるので、第2位置として、番組表700を斜め左方向の比較的遠距離から捕らえるように視点および注視点(または視線方向)が予め決められる。斜め方向から捕らえるようにすることで、番組表700の板が3次元で表現される3次元画像を生成することができる。
また、第3位置は、日付タブ702をクローズアップして日付タブ702に注目するように適宜に設定されている。この実施例では、第3位置として、番組表700を斜め左方向の比較的近距離から捕らえるように視点および注視点(または視線方向)が予め決められている。
記憶領域404には検索条件指定プログラムが記憶される。このプログラムは、ユーザの操作に応じて番組情報の検索条件を指定するためのものである。この実施例では、ジャンル検索とキーワード検索が可能であり、ユーザは、所望のジャンルまたはキーワード(文字列)を検索条件として指定できる。具体的には、ジャンル検索では、予め決められた複数のジャンルから所望のジャンルを選択することによって、当該ジャンルに該当する番組情報を検索できる。キーワード検索では、所望の文字を入力したり番組表や詳細画面に表示された文字を指示したりすることによって、キーワードにする文字列を指定することができ、当該文字列に一致する文字列を含む番組情報を検索できる。また、過去の一定回数のキーワード検索で用いた文字列の履歴をフラッシュメモリ44に記憶しておいて、当該履歴の文字列を表示し、それら過去の検索文字列の履歴から所望の文字列をユーザ操作によって選択させるようにしてもよい。
記憶領域406には、検索・マーキングプログラムが記憶される。このプログラムは、検索条件に該当する番組情報があるかどうかを判別するためのものであり、具体的には、検索条件と各番組情報とが一致するかどうかを判断して、検索条件に一致すると判断された番組情報をマーキングするためのものである。たとえば、ジャンル検索では、後述する番組表データのジャンルが検索対象にされ、キーワード検索では、番組表データの番組名、ジャンルおよび詳細情報が検索対象にされる。また、マーキングは、検索条件に該当する番組情報に印を付ける処理を意味し、具体的には、この実施例では、検索条件に該当する番組情報の検索マッチフラグをオンにする処理である。
記憶領域408には検索結果表示プログラムが記憶される。このプログラムは、検索結果を番組表に表示するためのものである。具体的には、検索条件に該当する番組情報が表示された番組表に含まれるものである場合、当該番組情報の表示形態が変化される。一方、検索条件に該当する番組情報が日付タブ702に対応する番組表に含まれるものである場合、当該日付タブ702の表示形態が変化される。この実施例では、番組情報または日付タブ702の表示形態の変化として、色または階調が変化される。たとえば、通常の色(白色等)が異なる色(赤色等)に変化されたり、通常の色の濃淡の段階が異なる段階に変化されたりしてよい。あるいは、赤(R)、緑(G)、青(B)の各色について、それぞれの階調を変化させることによって、異なる色に変化させるようにしてもよい。したがって、表示形態の変化が視覚的に明確になるように表現することができる。
データ記憶領域500の記憶領域502には番組表データが記憶される。番組表データは、ネットワーク上の配信サーバ等から取得したEPG(Electronic Program Guide)データに基づいて生成される。なお、EPGデータは、所定日数分の番組情報を含んでおり、所定のタイミングで(たとえばアプリケーションの起動時)または定期的に(たとえば24時間ごとに)配信サーバ等から取得されてフラッシュメモリ44に記憶されている。図8に示すように、番組表データは、たとえば放送局ごとの番組情報を記憶しており、つまり、放送局ID(放送局の識別情報)に対応付けて複数の番組情報が記憶されている。さらに、各番組情報ごとに当該番組に関する情報が記憶されており、つまり、番組ID(番組の識別情報)に対応付けて、日付、開始時刻、終了時刻、放送時間、番組名、ジャンル、詳細情報などが記憶されている。詳細情報は、当該番組の概要や出演者等の情報を含む。なお、番組表の主な目的は放送予定の番組情報を確認することであるから、既に過去となった日のデータは削除されまたは使用されないようにしてよい。
また、この番組表データ記憶領域502に、番組IDに対応付けて各番組情報の検索マッチフラグが記憶されている。番組検索・マーキング処理では、この番組表データ記憶領域502が検索され、検索条件に該当する番組情報が存在する場合、当該番組IDに対応する検索マッチフラグがオンにされる。
記憶領域504には検索条件指定プログラムによって指定された検索条件が記憶される。ジャンル検索では、複数のジャンルからユーザ操作によって選択されたジャンルが記憶される。キーワード検索では、たとえばソフトウェアキーボードを用いたユーザ操作によって入力された文字列、または、番組表や詳細画面に表示された番組名や詳細情報からユーザ操作によって選択された文字列、あるいは、履歴から選択された文字列などが記憶される。
記憶領域506にはカメラ位置が記憶される。カメラ位置としては、上述の図9に示したように、2次元表示形態のための第1位置、ならびに3次元表示形態のための第2位置および第3位置のいずれかが記憶される。なお、第1位置が選ばれる場合、現在時刻やスクロール操作等に応じて視点位置および注視点位置等が変更される。
記憶領域508には日付順序に関する情報が記憶される。具体的には、番組表データに含まれている複数の日付およびそれらの順序を示すデータが記憶される。たとえば、複数の日付のうちの最も古い日付(すなわち今日の日付)から日付順に1から始まる番号が与えられる。番号が1の日付に対応する番組情報が一番手前の板に番組表として表示され、続く各板に番号が2以降の日付を示す日付タブ702が表示される。日付タブ702の選択や日付変更操作等によって一番手前に表示する番組表の日付が変更される場合、この日付順序データが更新され、当該選択された日付から順に番号が与えられる。
記憶領域510には見出し部データが記憶される。この実施例では、日付が番組情報の見出しとして採用されるので、見出し部データは、日付タブ702の表示を制御するためのデータである。見出し部データは、各日付タブ702の位置、表示形態(向き、サイズ、色等)、表示される日および曜日等に関する情報を含む。
記憶領域512にはコンテンツ部データが記憶される。この実施例では、各日付の番組表がコンテンツ部として採用されるので、コンテンツ部データは、日付ごとの番組表の表示を制御するためのデータである。コンテンツ部データは、最前の番組表の板を構成する各番組情報の直方体の位置、表示形態(サイズ、色等)等に関する情報や、他の板の位置、サイズ等に関する情報を含む。各直方体のデータは当該番組IDに対応付けて記憶される。2次元表示形態の場合に各直方体すなわち各番組情報欄に表示する番組名等は、番組表データから取得される。
この番組表表示アプリケーションは、たとえばゲーム装置12のメニュー画面から当該アプリケーションを指示するボタンないしアイコン等を選択することによって起動される。起動されると、たとえば現在の日時に対応する日付(および時間帯)の番組表が表示される。
図10は番組表700が表示された画面の一例を示す。この画面の番組表700を描画するカメラ位置としては、図9に示す全体を表示するための第2位置が採用されており、したがって、番組表700を示す複数の板の全体が3次元で表示されている。
一番手前の板には、選択された日付の番組表が表示され、その背後の各板には、それぞれの日付を示す日付タブ702が表示されている。なお、起動時には今日の日付が選択されて、今日の日付の番組表が一番手前の板に表示される。現在の日時の情報はROM/RTC48から取得される。
一番手前の板の番組表は、縦軸を放送局軸とし、かつ、横軸を時間軸としたマトリックス状に形成されている。番組表の上端には放送の時刻を示す時間軸が表示されており、この時間の表示欄の色は、見易くするために時間帯ごとに色分けされている。なお、時間帯の定義は任意であり、この実施例では、1日24時間が5つの時間帯に分けられている。一方、縦軸方向には、各放送局ごとの欄が配列され、各放送局欄では、各番組情報が時系列で並べられる。各番組情報の欄は、放送時間に応じた幅を有する枠で囲まれている。ただし、この3次元表示形態(第2位置)では、番組表700の全体を見ることを主たる目的とするので、枠のみが表示され、枠内に番組情報を示す文字は表示されない。ただし、枠内に番組情報を示す文字を表示するようにしても良い。
また、この一番手前の番組表が現在の日付のものである場合、現在時刻に対応する位置に縦棒704が表示される。また、画面右下の隅に現在時刻を示す時計706が表示される。現在時刻よりも過去の時刻の番組は既に放送が終了しているので、縦棒704の左側の終了した番組情報の欄はグレー表示される。なお、放送番組の無い(番組情報の無い)時間に対応する欄もグレー表示されている。
各日付タブ702には、それぞれの日を示す数字が表示される。さらに、各日付タブ702が正面を向いて画面上に表示されるように、各日付タブ702の向きがカメラ位置の視点の方向となるように変更されている。
また、画面上には、コントローラ22の指示位置を示すポインタ708が表示される。このポインタ708の表示位置は、コントローラ22の指示位置に応じて移動される。
画面上端部には、各種のボタン710、712、714、716、718および720が設けられている。たとえばポインタ708を各ボタン710−720の表示位置に合わせてAボタン26dを押すことによって、各ボタンを選択することができる。なお、他のボタンや項目等も同様の操作で選択することができる。
なお、図10等の番組表を含む画面は、各ボタン710−720を含む画面上端部、ポインタ708および時計706等の画像を、カメラ位置に基づいて描画された番組表700の画像に合成することによって、生成されている。
ボタン710は、ゲーム装置12のメニュー画面に戻るためのボタンである。このボタン710が選択されると、この番組表表示アプリケーションが終了されて、メニュー画面が表示される。
ボタン712は、カメラ位置を切替えるためのボタンである。3次元表示形態の番組表が表示されている場合にこのボタン712が選択されると、カメラ位置が図9に示す第1位置に変更されて2次元表示形態の番組表が表示される。一方、2次元表示形態の番組表が表示されている場合にこのボタン712が選択されると、カメラ位置が図9に示す第2位置に変更されて3次元表示形態の番組表が表示される。
また、このボタン712には、現在表示されている番組表の日付が表示される。図10の例では、日を示す数字と曜日(「27日(金)」)が表示されている。表示する番組表の日付が変更されると、このボタン712の日付も変更される。なお、番組表の日付の変更は、日付タブ702の選択、十字キー26aの操作、およびボタン714の選択等によって行うことができる。また、現在の日付の番組表が表示されている場合、このボタン712には、たとえば、日と曜日の表示と交代で一定時間「きょう」と表示されてもよい(図14、図15参照)。
ボタン714は、表示する番組表の日付を順送りにするためのボタンである。このボタン714が選択されると、日付順序データが更新され、現在まで番組表が表示されていた日付の順番が最後尾にされるとともに次以降の各日付の順番が繰り上げられる。画面上では、現在まで番組表が表示されていた日付の板が最後尾に移動され、かつ、次の日付の板が一番手前に移動されて、当該一番手前の板に番組表が表示される。さらに、一番手前に移動した日付の日付タブ702が消去され、かつ、最後尾に移動した日付の日付タブ702が新たに表示される。
ボタン716は、検索の状況を示すためのボタンである。検索条件に該当する番組情報が存在するときには、当該ボタン716に検索条件を示す文字が表示されるとともに、当該ボタン716の表示形態が変化される(図14参照)。このボタン716の表示形態の変化は、後述する番組情報欄や日付タブ702と同様であってよく、たとえば色や階調が通常とは異なるものに変化される。一方、検索を行っていない場合や検索条件に該当する番組情報が存在しない場合等には、図10に示すように「なし」と表示される。
ボタン718は、検索を行うためのボタンである。ボタン718が選択されると、検索画面が表示され、キーワードやジャンルなどの検索条件を指定して番組情報を検索することができる。また、番組表や詳細画面に表示されている文字列が指定された状態でこのボタン718が選択されたときには、当該文字列を検索条件としたキーワード検索を行うことができる。なお、図10では、ポインタ708によってボタン718が指示されているので、当該ボタン718の機能を示す文字(「さがす」)がポップアップ表示されている。検索については後述される。
また、ボタン720は、各種の設定を行うためのボタンである。ボタン720が選択されると、設定画面が表示され、各種の設定を行うことができる。たとえば、現在の日時の設定、番組表に表示する放送局やチャンネルの設定等である。
ユーザによってボタン718が選択されると、図11に示すような検索メニュー画面が番組表の画面に重ねて表示される。検索メニュー画面には、ジャンル検索を行うためのボタン722、およびキーワード検索を行うためのボタン724が設けられている。なお、検索メニュー画面の右上隅のボタン726は、検索をキャンセルするためのボタンである。
図11ではジャンル検索のためのボタン722がポインタ708で指示されており、このボタン722が選択されると、ジャンル検索のために、図12に示すようなジャンル選択画面が表示される。ジャンル選択画面には、予め決められた複数のジャンルが選択可能なメニュー項目として表示される。図12に示すように、たとえば、「ニュース・報道」、「アニメ・漫画」、「ドキュメンタリー・教養」、「劇場・公演」、「趣味・教育」、「福祉」等がある。図12では、「福祉」の項目がポインタ708で指示されていて、このジャンルを検索条件とした場合の該当する番組情報の件数が94件であることがポップアップ表示されている。なお、このような件数表示機能を備えさせる場合、図11の画面でジャンル検索のボタン722が選択されたときに番組表データのジャンルの検索を行い、各ジャンルに該当する番組情報の数をカウントする。
なお、キャンセルボタン726の下のボタン728は、戻りボタンであり、このボタン728が選択されると、前の検索メニュー画面(図11)に戻る。また、ボタン730は、メニュー項目が1画面に収まらない場合に有効にされる上下スクロールボタンであり、メニュー項目を上下にスクロールさせることができる。
また、ジャンルには、サブジャンルが設定されたものも存在しており、当該サブジャンルを有するジャンルが選択された場合、さらにサブジャンル選択画面が表示される。図13は、図12の「福祉」が選択されたときに表示されるサブジャンル選択画面を示す。サブジャンル選択画面には、予め決められた複数のサブジャンルが選択可能なメニュー項目として表示される。たとえば「すべて」、「社会福祉」、「ボランティア」および「その他」等のサブジャンルがある。図13では、「ボランティア」の項目がポインタ708で指示されていて、このサブジャンルを検索条件とした場合の該当する番組情報の件数が6件であることがポップアップ表示されている。なお、戻りボタン728が選択されると、前のジャンル選択画面(図12)に戻る。
ジャンル選択画面またはサブジャンル選択画面で所望のジャンルを選択すると、当該ジャンルが検索条件として指定されて、番組検索・マーキング処理が行われる。このジャンル検索では、検索条件のジャンルに該当するジャンルの番組情報が判別されて、当該番組情報がマーキングされる。
一方、図11の検索メニュー画面でボタン724が選択されると、キーワード検索が行われる。キーワード検索では、図示は省略するが、たとえばソフトウェアキーボードを有するキーワード入力画面が表示され、ポインタ708による文字キーの選択で所望の文字列を入力することができる。また、過去のキーワード検索で入力した文字列の履歴も表示され、ポインタ708による選択で、過去に入力した文字列を選択することができる。文字列が入力または選択されると、当該文字列を検索条件として、番組検索・マーキング処理が行われる。このキーワード検索では、検索条件の文字列に該当する文字列を番組表データ(番組名、ジャンルおよび詳細情報等)に含んでいる番組情報が判別されて、当該番組情報がマーキングされる。
また、図示は省略されるが、番組表に表示されている文字列や、番組情報の詳細画面に表示されている文字列を検索条件として指定することもできる。具体的には、2次元表示形態の番組表では、各番組情報の欄には番組名が表示される(図15参照)。また、たとえば2次元表示形態の番組表において番組情報の欄が選択されることによって、当該番組情報の詳細画面が表示される。詳細画面には、当該番組情報の番組名、放送日時、放送局、チャンネル、詳細情報などが表示される。ユーザは、番組情報欄または詳細画面中の所望の文字列をドラッグすることによって、当該文字列を選択することができる。ドラッグ操作は、たとえば、ポインタ708で所望の文字を指示し、そしてAボタン26dおよびBトリガースイッチ26iを同時に押したままポインタ708を移動させることによって行うことができる。ドラッグ操作が行われると、文字列がたとえば反転表示されて選択された状態であることが示される。そして、文字列が選択された状態でボタン718が選択されると、当該文字列が検索条件として指定されて、キーワード検索が行われる。
検索条件が指定されて検索が実行されると、検索結果が番組表上に表示される。3次元表示形態の番組表が表示されている場合に検索が行われると、図14に示すように、3次元表示形態の番組表において検索結果が表示される。また、2次元表示形態の番組表が表示されている場合に検索が行われると、図15に示すように、2次元表示形態の番組表において検索結果が表示される。なお、ボタン712の選択によって、番組表を2次元表示形態と3次元表示形態で切り替えて表示することができる。
検索条件に該当する番組情報が存在する場合には、ボタン716に検索条件を示す文字列が表示される。図14および図15の例では「ボランティア」と記載されている。さらに、このボタン716の表示形態が変化される。この実施例では、ボタン716の色または階調が、通常とは異なる所定の色または階調に変更される。たとえば、通常状態における薄紫色が赤色に変えられる。
また、一番手前の板すなわち番組情報の表示される番組表において、検索条件に該当する番組情報が含まれているときには、当該番組情報の表示形態が変化される。この実施例では、図14および図15に示すように、当該番組情報の欄の色または階調が、通常とは異なる色または階調に変更される。たとえば通常状態における白色が赤色に変えられたり、または、通常状態の極薄い赤色が濃い赤色に変えられたりしてよい。
さらに、3次元表示形態では、画面上で番組情報の欄の高さを表現することができるので、参照符号「800」で示すように、この実施例では、検索条件に該当する番組情報の欄の高さを高くして、当該番組情報の欄が番組表の主面から突出するようにしている。具体的には、マトリックス状の番組表の放送局軸および時間軸と直交する方向でかつ画面の手前側になる方向が高さ方向として設定され、当該番組情報を示す直方体の当該高さ方向の幅が大きくされる。
なお、この3次元表示形態では、番組情報欄の枠のみが表示されているので、表示形態の変化された番組情報の番組名等を確認したいときには、ユーザは、ボタン712を選択することによって、図15に示すような2次元表示形態の番組表に切り替えることができる。
なお、図15から分かるように、2次元表示形態の番組表では、一部の放送局および時間帯の番組情報しか表示できないが、コントローラ22を用いて所定の操作を行うことによって、番組表を上下方向または左右方向にスクロールして、別の放送局または時間帯の番組情報を表示することが可能になっている。
また、日付タブ702を有する板(この実施例では3次元表示形態で番組情報の表示されていない日付の番組表、または2次元表示形態で画面に表示されていない日付の番組表)において、検索条件に該当する番組情報が含まれているときには、当該番組情報の含まれている板(番組表)に対応する日付タブ702の表示形態が変化される。この実施例では、図14に示すように、当該日付タブ702の色または階調が、通常とは異なる色または階調に変更される。たとえば、通常状態の白色が赤色に変えられる。図14の例では、28、29、2、3および4日の日付タブ702の表示形態が変更されており、したがって、当該日付の番組表に、検索条件に該当する番組情報が存在することを容易に識別することができる。
表示形態の変化された日付タブ702に対応する日付の番組表は隠れているので、当該日付タブ702の日付の番組情報を確認したいときには、ユーザは、たとえばボタン714を選択することによって、一番手前に表示される番組表の日付を順次変更することができる。また、十字キー26aの所定方向(たとえば右)を押すことによって、次の日付の番組表に変更し、十字キー26aの別の所定方向(たとえば左)を押すことによって、前(または最後尾)の日付の番組表に変更することができる。あるいは、後述されるように、日付タブ702をポインタ708を用いて直接選択することによって、当該日付タブ702の日付の番組表に変更することができる。
また、図15から分かるように、2次元表示形態の場合、画面の左端部に放送局およびチャンネルを示す放送局欄を合成して表示するようにしており、この放送局欄に続けて番組表が表示される。この図15に示すように、この実施例では、板の左端に設けられた日付タブ702が画面上に表示されないようにしている。したがって、2次元表示形態で他の日付の番組表を確認したいときには、この実施例では、ボタン714の選択によって番組表の日付を順次変更する。
しかし、別の実施例では、日付タブ702が画面上に表示されるように番組表700を構成してもよく、具体的には、板の左端部に放送局欄を有するように番組表700を形成して当該放送局欄の左端に日付タブ702を設けるようにしてよい。あるいは、各日付を選択するボタンを別途画面上の適宜な位置に設けて、当該ボタンの表示形態を、日付タブ702の場合と同様にして、検索結果に応じて変化させるようにしてもよい。
なお、この実施例のように、変化後の番組情報の欄、日付タブ702および検索状況を示すボタン716の色または階調を同じにすれば、つまり、番組情報の欄、日付タブ702およびボタン716の表示態様の変化を統一すれば、検索条件に該当する番組情報の存在をより明確に表現することができるので、当該番組情報の存在をより容易に識別することができる。
また、3次元表示形態では、上述のように、日付タブ702の選択によって、表示される番組表の日付を変更することができる。ユーザが日付タブ702をポインタ708で選択しようとしていると判断される場合には、この実施例では、カメラ位置が第2位置から第3位置に切替えられる。具体的には、ポインタ708の表示位置(コントローラ22の指示位置)の座標が日付タブ702の表示位置を含む所定領域内にあると判断されるときに、ユーザが日付タブ702の選択操作を行おうとしているものと見なして、カメラ位置が第2位置から第3位置に変更される。なお、所定領域としては、たとえば、画面上で一番手前の番組表の板の左辺に沿った縦のラインよりも左側の部分が設定される。ただし、所定領域の設定範囲は適宜変更可能であり、たとえば日付タブ702の表示位置に限ってもよいし、あるいは画面の左端から一定長さまでの範囲が採用されてもよい。
図14の第2位置による3次元表示形態でポインタ708が所定領域内に入ったときには、カメラ位置が第3位置に切替えられて、図16に示すような日付タブ702をクローズアップする画面が表示される。なお、この図16に示す第3位置による3次元表示形態でも、参照符号800で示すように、表示形態の変化された番組情報を認識することができ、検索条件に該当する番組情報が存在することを容易に識別することができる。
第3位置は第2位置に比べて日付タブ702に近い位置に設定されるので、この第3位置による3次元表示形態では、日付タブ702をより明確に表示することができる。したがって、表示形態の変化された日付タブ702をより見易くし、選択させ易くすることができる。また、この実施例では、日付タブ702の向きを仮想カメラの視点に向くように変更し、画面上で日付タブ702が正面を向いて表示されるようにしているので、日付タブ702をさらに見易くすることができる。さらに、この実施例では、カメラ位置に応じて日付タブ702のサイズを変化させ、具体的には、第3位置の場合の長さ(横幅)を第2位置の場合よりも大きくするようにしている。このため、図16に示すように、日付タブ702には、日付だけでなく曜日も記載することが可能である。日付タブ702の表示位置(表示領域)が大きくなり、しかも表示される見出しがより詳しくなるので、日付タブ702をより容易に選択させることができる。
なお、図16では、ポインタ708で指示されていることをユーザに知らせるために、当該ポインタ708で指示された日付タブ702が、たとえば一回り大きくしかつ縁の色を変更することによって、強調表示されている。
また、この図16に示すような第3位置による3次元表示形態で、ポインタ708の表示位置の座標が日付タブ702の表示位置を含む所定領域外であると判断されるときには、ユーザが日付タブ702の選択をしようとしていないものと見なして、カメラ位置が第3位置から第2位置に切替えられる。なお、この第3位置の場合の所定領域は、たとえば、画面上で一番手前の番組表の板の左辺に沿った縦のラインよりも左側の部分が設定される。なお、第3位置は第2位置と異なるので、第3位置の場合の所定領域は、第2位置の場合の所定領域とは異なるものとなる。また、この第3位置の場合の所定領域も、上述の第2位置の場合と同様に適宜変更されてよい。たとえば、日付タブ702の表示位置に限られてよいし、あるいは画面の左半分の領域が採用されてもよい。
日付タブ702が選択されると、たとえば図17に示すように、当該選択された日付タブ702の日付に対応する番組表が一番手前に表示される。なお、図17の例では、「1日(土)」の日付タブ702が選択された場合を示している。図16から分かるように「1日(土)」の日付タブ702の表示形態は変化されておらず、つまり、検索条件に該当する番組情報が存在していないので、図17の一番手前の番組表では、表示形態の変化された番組情報の欄が存在していない。
このように、この実施例では、ユーザ操作に応じて番組表700の2次元表示形態と3次元表示形態の切替表示を行えるようにしたので、ユーザの嗜好に応じて表示形態を切り替えることができ、ユーザは、所望の形態で番組表700および検索結果を確認することができる。特に、図14ならびに図16および図17に示すように、3次元表示形態では、日付タブ702を含む番組表700全体を捕らえて立体的に表現することができるので、日付タブ702の表示形態の変化がより強調されて表示される。さらに、図16および図17に示すように、日付タブ702をクローズアップするように表示する場合には、日付タブ702の表示形態の変化に、より注目させることができる。したがって、コンテンツとしての番組情報が表示されていなくても、見出し部の表示変化によって、検索条件に該当する番組情報が存在していることをより容易に識別することができる。
さらに、3次元表示形態においても、第2位置と第3位置の切替えによって、日付タブ702の表示形態(この実施例では長さおよび文字等)を変化させるようにしたので、検索条件に該当する番組情報が存在していることをさらに容易かつ明確に識別することができるとともに、見出し部としての日付タブ702の選択によって表示されるコンテンツを切り替える際の操作性および視認性を向上させることができる。
なお、この実施例では、すべての日付タブ702が正面となるようにカメラ位置に応じてすべての日付タブ702の向きを変えるようにしたが、他の実施例では、検索条件に該当する番組情報が含まれる日付の日付タブ702のみ、その向きをカメラ位置に応じて変更するようにしてよく、その場合、当該検索条件に該当する番組情報の存在の有無をさらに明確に示すことができる。
また、この実施例では、すべての日付タブ702の長さをカメラ位置に応じて変化させるようにしたが、他の実施例では、検索条件に該当する番組情報が含まれる日付の日付タブ702のみ、その長さをカメラ位置に応じて変更するようにしてよく、この場合にも、当該検索条件に該当する番組情報の有無をさらに明確に示すことができる。
図18および図19にはゲーム装置12の動作の一例が示される。CPU40は、ステップS1で番組検索が選択されたか否かを判断する。具体的には、コントローラ22の入力データおよびボタン718の表示位置データ等に基づいて、検索のためのボタン718が選択されたか否かを判断する。
なお、たとえば、ボタン、タブおよび項目等の各種選択対象の表示位置にポインタ708の表示位置の座標が含まれた状態でAボタン26dが押されたと判断されるとき、当該選択対象が選択されたものと判断される。
また、コントローラ22の入力データは、無線コントローラモジュール52および入出力プロセッサ42a等を介して定期的に受信されて外部メインメモリ46aのバッファ領域に記憶されており、CPU40は、当該入力データからコントローラ22の入力手段26の操作状態や指示位置の座標等を毎フレーム検出することができる。また、画面上の各種選択対象の表示位置データ(座標データ等)は、予め記憶されたデータを読み出したり画面を生成する際に算出したりすることによって、データ記憶領域500に記憶されている。
ステップS1で“YES”の場合、CPU40は、ステップS3で、検索条件指定プログラムに従って、ユーザの操作に基づく検索条件入力処理を実行する。上述のようなジャンル検索およびキーワード検索の検索条件をユーザに指定させるための処理が行われる。たとえば、ジャンル検索では、ジャンル選択画面やサブジャンル選択画面等を表示して、ユーザにジャンルを選択させる。キーワード検索では、キーワード入力画面を表示して、ユーザに文字列を入力させ、または履歴から文字列を選択させる。あるいは、番組情報欄や詳細画面等におけるドラッグ操作によって文字列が選択されている場合、当該文字列を検索条件として取得する。入力された検索条件を示すジャンルまたは文字列は、入力データ、およびジャンル、文字または文字列の表示位置データ等に基づいて特定される。
続くステップS5で、CPU40は、入力された検索条件情報をRAM(外部メインメモリ46)に記憶する。つまり、検索条件記憶領域504に、指定された文字列またはジャンルを示すデータが記憶される。
続いて、ステップS7で、CPU40は、検索・マーキングプログラムに従って、番組検索・マーキング処理を実行する。この処理によって、検索条件に該当する番組情報が存在するか否かが判別され、検索条件に該当する番組情報がマーキングされる。この処理の動作の一例が図20に示される。
番組検索・マーキング処理を開始すると、図20では省略されるが、CPU40は、記憶領域502の番組表データを参照して、たとえば、登録されている日付のそれぞれに1からの連番を割り当てるとともに、日付の数(最大値)を検出する。また、登録されている放送局のそれぞれに1からの連番を割り当てるとともに、放送局の数(最大値)を検出する。さらに、日付および放送局ごとに、登録されている番組情報のそれぞれに1からの連番を割り当てるとともに、日付および放送局ごとの番組情報の数(最大値)を検出する。
図20のステップS51で、CPU40は、調べる日を最初の日に設定する。具体的には、調べる日を示す変数Dに最初の日の番号を示す1を設定する。次に、ステップS53で、CPU40は、調べる放送局を最初の放送局に設定する。具体的には、調べる放送局を示す変数Tに最初の放送局の番号を示す1を設定する。続くステップS55で、CPU40は、調べる番組を最初の番組に設定する。具体的には、調べる番組情報を示す変数Pに最初の番組情報の番号を示す1を設定する。なお、番組情報の番号は、上述のように、日付および放送局毎に設定されている。
続いて、ステップS57で、CPU40は、設定された番組は検索条件とマッチするか否かを判断する。すなわち、調べる番組として設定された変数D,T,Pの値から調査対象の番組IDを特定し、当該番組IDの番組表データを参照して、検索条件に該当する番組情報であるか否かを判断する。たとえば、ジャンル検索の場合、検索条件のジャンルが当該番組情報のジャンルと一致するか否かが判断される。また、キーワード検索の場合、検索条件の文字列に一致する文字列が当該番組情報の番組表データ(番組名、ジャンル、詳細情報等)に記憶されているか否かが判断される。
ステップS57で“YES”の場合、CPU40は、ステップS59で設定された番組の検索マッチフラグをオンにする、すなわち、当該番組情報にマーキングする。具体的には、番組表データ記憶領域502において調査対象の番組IDに対応する検索マッチフラグをオンにする。
このように、複数の番組情報のそれぞれと検索条件とが一致するか否かを判断し、検索条件に一致する番組情報をマーキングするようにしており、後述する番組表表示処理では、番組情報がマーキングされているか否かに応じて、番組情報および日付タブ702の表示形態を変化させるようにしている。したがって、複数の日付の番組表のそれぞれについて検索条件と一致するコンテンツがあるか否かを簡単な処理で容易に判別することができる。
一方、ステップS57で“NO”の場合、つまり、調査対象が検索条件に該当しない場合には、処理はそのままステップS61に進む。
ステップS61では、CPU40は、調べる番組がまだ存在するか否かを判断する。具体的には、日付Dおよび放送局Tに対応する変数Pの値が最大値になっていないかどうかを判断する。ステップS61で“YES”の場合、CPU40は、ステップS63で調べる番組を進める。具体的には、番組情報を指定するための変数Pを1だけインクリメントして、次の番組情報を調べる番組として設定する。ステップS63を終了すると、処理はステップS57に戻る。したがって、次の番組情報について検索およびマーキング処理が行われる。
一方、ステップS61で“NO”の場合、つまり、設定された日付Dおよび放送局Tに対応するすべての番組情報の検索およびマーキング処理が終了した場合には、CPU40は、ステップS65で調べる放送局がまだ存在するか否かを判断する。具体的には、変数Tの値が最大値になっていないかどうかを判断する。ステップS65で“YES”の場合、CPU40は、ステップS67で、調べる放送局を進める。具体的には、放送局を指定するための変数Tを1だけインクリメントして、次の放送局を調べる放送局として設定する。ステップS67を終了すると、処理はステップS55に戻る。したがって、設定された日付Dにおける次の放送局のすべての番組情報について、検索およびマーキング処理が行われる。
また、ステップS65で“NO”の場合、つまり、設定された日付Dにおけるすべての放送局のすべての番組情報の検索およびマーキング処理が終了した場合には、CPU40は、ステップS69で、調べる日がまだ存在するか否かを判断する。具体的には、変数Dの値が最大値になっていないかどうかを判断する。ステップS69で“YES”の場合、CPU40は、ステップS71で調べる日を進める。具体的には、日付を指定するための変数Dを1だけインクリメントして、次の日付を調べる日付として設定する。ステップS71を終了すると、処理はステップS53に戻る。したがって、次の日付のすべての放送局のすべての番組情報について、検索およびマーキング処理が行われる。なお、ステップS69で“NO”の場合には、全番組情報に対する検索およびマーキング処理が終了したので、この番組検索・マーキング処理を終了し、処理は図19のステップS31に進む。
また、図18のステップS1で“NO”の場合、CPU40は、ステップS9で表示切替が選択されたか否かを判断する。具体的には、入力データおよびボタン712の表示位置データ等に基づいて、カメラ位置を切替えるためのボタン712が選択されたか否かが判断される。
ステップS9で“YES”の場合、CPU40は、ステップS11で現在の表示が2次元であるか否かを判断する。具体的には、カメラ位置記憶領域506に、番組表700を正面から捕らえる第1位置が記憶されているか否かを判断する。
ステップS11で“YES”の場合、つまり、2次元表示形態の番組表が表示されている状態で切替えが指示された場合には、CPU40は、記憶領域506のカメラ位置データを、番組表700を斜め左方向かつ遠距離から捕らえる第2位置に変更する。
一方、ステップS11で“NO”の場合、つまり、3次元表示形態の番組表が表示されている状態で切替えが指示された場合には、CPU40は、記憶領域506のカメラ位置データを、番組表700を正面から捕らえる第1位置に変更する。ステップS13またはS15を終了すると、処理は図19のステップS31に進む。
また、ステップS9で“NO”の場合、CPU40は、ステップS17で現在の表示が3次元であるか否かを判断する。具体的には、カメラ位置記憶領域506に第2位置または第3位置が記憶されているか否かを判断する。
ステップS17で“YES”の場合、つまり、3次元表示形態の番組表が表示されている場合には、続くステップS19−S29で、ポインタ708の指示位置に応じてカメラ位置を切替えるための処理を実行する。
すなわち、まず、ステップS19で、CPU40はポインタ708の指示位置座標を検出する。上述のように、定期的に受信されるコントローラ22の入力データが外部メインメモリ46のバッファに記憶されているので、当該入力データからコントローラ22の指示位置を示すデータを抽出し、当該データに基づいてポインタ708の指示位置座標(表示位置座標)を算出または取得する。
続くステップS21で、CPU40は、記憶領域506のカメラ位置は第2位置であるか否かを判断する。ステップS21で“YES”の場合、CPU40は、ステップS23で、指示位置座標が第2位置に対応する所定領域内であるか否かを判断する。つまり、第2位置による3次元表示形態でポインタ708が日付タブ702の表示位置を含む所定領域内に入ったか否かを判断する。ステップS23で“YES”の場合、つまり、ユーザがポインタ708で日付タブ702を選択しようとしていると判断される場合には、CPU40は、ステップS25で記憶領域506のカメラ位置データを第3位置に変更する。
一方、ステップS21で“NO”の場合、つまり、カメラ位置が第3位置の場合、CPU40は、ステップS27で、指示位置座標が第3位置に対応する所定領域外であるか否かを判断する。つまり、第3位置による3次元表示形態でポインタ708が日付タブ702の表示位置を含む所定領域から出たか否かを判断する。ステップS27で“YES”の場合、つまり、ユーザがポインタ708で日付タブ702を選択しようとはしていないと判断される場合には、CPU40は、ステップS29で、記憶領域506のカメラ位置を第2位置に変更する。
なお、ステップS25またはS29を終了すると、処理は図19のステップS31に進む。また、ステップS23で“NO”の場合、ステップS27で“NO”の場合、またはステップS17で“NO”の場合には、処理はそのままステップS31に進む。
図19のステップS31では、CPU40は、番組表表示プログラムおよび検索結果表示プログラム等に従って、番組表表示処理を実行する。これによって、カメラ位置に応じた番組表が表示されるとともに、検索結果が当該番組表に表示される。この番組表表示処理の動作の一例は図21および図22に示される。
番組表表示処理を開始すると、図21のステップS91で、CPU40は、一番手前の日について全放送局の全番組を放送時間に基づく長さの直方体で描画する。具体的には、CPU40は、記憶領域508の日付順序データから一番手前の日を特定し、記憶領域502の番組表データのうち当該日付に対応するデータを参照して、当該日付の各番組情報の番組IDに対応付けて各直方体の位置および表示形態等を含むコンテンツ部データを記憶領域512に生成する。なお、各直方体のサイズ(長さ)は当該放送時間に応じた長さに設定され、各直方体の位置は、放送局と開始時刻等に基づいて算出される。
次に、ステップS93で、CPU40は、マーキングされた番組を手前方向に突出させ、かつ、色を変化させる。なお、マーキングされた番組は、番組表データ記憶領域502を参照して、一番手前の日について検索マッチフラグがオンにされている番組IDを検出することによって特定できる。そして、記憶領域512のコンテンツ部データにおいて、当該番組IDに対応する番組情報(直方体)の表示形態データ(この実施例では高さと色もしくは階調)が所定の高さと色もしくは階調に変化される。つまり、表示された番組表において検索条件に該当する番組情報の表示形態が変化される。
続いて、ステップS95で、CPU40は、他の日について日付タブと板を描画する。具体的には、CPU40は、記憶領域508の日付順序データから他の日およびそれらの順序を検出し、各日付タブ702の位置および表示形態等を含む見出し部データを記憶領域510に生成するとともに、他の板の表示を制御するためのデータをデータ記憶領域500に生成する。
なお、この実施例では、一番手前の番組表には日付タブ702を設けないので、当該一番手前の日に対応する見出し部データは生成されない。このように、選択された日付(一番手前)の番組表については、コンテンツとしての番組情報のみを表示し、それ以外の日付の番組表については、見出しとしての日付タブ702のみを表示するようにしたので、選択された番組表とそれ以外の番組表とを明確に区別することができる。
続くステップS97では、CPU40は、他の日についてマーキングされた番組を検索する。具体的には、番組表データ記憶領域506を参照して、他の日のそれぞれについて、検索マッチフラグがオンにされている番組が存在するか否かを検出して記録する。
そして、ステップS99で、CPU40は、他の日についてマーキングされた番組があるか否かを判断する。つまり、他の日について、検索マッチフラグがオンにされている番組を含む日があったか否かを判断する。ステップS99で“YES”の場合、CPU40は、ステップS101で、見出し部データにおいて、マーキングされた番組の日付に対応する日付タブ702の表示形態データ(この実施例では色もしくは階調)を所定の色もしくは階調に変化させる。つまり、表示された日付タブ702に対応する番組表に検索条件に該当する番組情報が含まれる場合、当該日付タブ702の表示形態が変化される。なお、ステップS99で“NO”の場合、処理はそのままステップS103に進む。
ステップS103では、CPU40は、正面を向くように日付タブ702の向きをカメラ位置に応じて変更する。具体的には、記憶領域506のカメラ位置データを参照して、当該カメラ位置の視線方向を向くように、見出し部データにおいて各日付タブ702の向きデータを変更する。なお、日付タブ702の向きは、カメラ位置データに基づいて算出されてもよいが、この実施例では、各カメラ位置の視線方向は固定されるので、カメラ位置ごとの所定の向きデータを予め決めておいてよい。
続くステップS105では、CPU40は、日付タブ702の長さをカメラ位置に応じて変更する。具体的には、見出し部データにおいて、各日付タブ702の長さデータをカメラ位置に応じた所定の長さに変更する。これによって、第3位置の場合の長さが第2位置の場合よりも長く設定されるので、第3位置の場合、各日付タブ702の表示領域を大きくすることができ、各日付タブ702には、たとえば図16に示したように日と曜日を記載することが可能になる。
続いて、図22のステップS107からステップS115の処理で、CPU40は、GPU42bを用いて、番組表データ、見出し部データ、コンテンツ部データおよび画像データ等に基づいて、カメラ位置に応じた番組表を表示する画面の画像データをVRAM42dに生成して、AV IC56等を介して当該画像をモニタ34に表示する。
具体的には、CPU40は、ステップS107で、記憶領域506のカメラ位置が第1位置であるか否かを判断し、“YES”の場合、CPU40は、ステップS109で、GPU42b等を用いて第1位置に基づく描画処理と表示出力処理とを行い、番組表700を正面から見た2次元形態で表示する。これによって、図15に示すような2次元の番組表を含む画面がモニタ34に表示される。この番組表では、検索条件に該当する番組情報が存在する場合には、表示形態の変化された番組情報が表示される。
一方、ステップS107で“NO”の場合、CPU40は、ステップS111で記憶領域506のカメラ位置が第2位置であるか否かを判断し、“YES”の場合、CPU40はステップS113で、GPU42b等を用いて第2位置に基づく描画処理と表示出力処理とを行い、番組表700を斜め左遠方から見た3次元形態で表示する。これによって、図10に示すような3次元画像で全体の捕らえられた番組表を含む画面がモニタ34に表示される。この番組表では、検索条件に該当する番組情報が存在する場合には、図14に示すように、表示形態の変化された番組情報800が表示され、また、検索条件に該当する番組情報に対応する日付については、表示形態の変化された日付タブ702が表示される。
一方、ステップS111で“NO”の場合、つまり、カメラ位置が第3位置の場合、CPU40は、ステップS115で、GPU42b等を用いて第3位置に基づく描画処理と表示出力処理とを行い、番組表700を斜め左近距離から見た3次元形態で表示する。この場合、図16に示すような日付タブ702のクローズアップされた番組表の3次元画像を含む画面がモニタ34に表示される。これによって、この番組表では、検索条件に該当する番組情報が存在する場合には、表示形態の変化された日付タブ702や番組情報800が表示される。
番組表表示処理を終了すると、処理は図19のステップS33に戻る。ステップS33では、CPU40は、日付タブ702が選択されたか否かを判断する。つまり、番組情報の表示される一番手前の番組表の日付を変更する操作が行われたか否かを判断する。具体的には、入力データおよび各選択対象の表示位置データ等に基づいて、日付タブ702の選択、ボタン714の選択または十字キー26aの操作等があったか否かを判断する。
ステップS33で“YES”の場合、CPU40は、ステップS35で、選択された日付を一番手前に移動する。具体的には、日付タブ702が選択された場合、選択された日付タブ702の日付を特定し、当該選択された日付が先頭になり、かつ、当該日付より前の日付が最後尾にまわるように、記憶領域508の日付順序データを更新する。また、ボタン714が選択され、または十字キー26aの右方向が押された場合、現在先頭の日付を最後尾にまわし、かつ、2番目以降の日付の順序を繰り上げるように、日付順序データを更新する。また、十字キー26aの左方向が押された場合、現在最後尾の日付を先頭にまわし、かつ、他の日付の順序を繰り下げるように、日付順序データを更新する。ステップS35を終了すると、処理はステップS31に戻る。したがって、ステップS31で番組表表示処理が実行されて、選択された日付の番組情報が一番手前の番組表に表示される。
一方、ステップS33で“NO”の場合、CPU40は、ステップS37で、この番組表表示アプリケーションを終了するか否かを判断する。たとえば、入力データおよびボタン710の表示位置データ等に基づいて、ボタン710が選択されたか否かを判断する。ステップS37で“NO”の場合、処理は図18のステップS1に戻り、一方、“YES”の場合、この番組表表示アプリケーションを終了する。
この実施例によれば、検索条件に該当するコンテンツ(番組情報)が表示されているものについては当該コンテンツの表示形態を変化させ、検索条件に該当するコンテンツが表示されていないものについては当該コンテンツに対応する見出し部(日付タブ702)の表示形態を変化させるようにしたので、コンテンツの表示されている表示情報とコンテンツの表示されていない表示情報の両方についてそれぞれ検索条件に該当するコンテンツがあるか否かを容易に識別することができる。
なお、上述の実施例では、検索条件に該当する場合の表示形態の変化として、コンテンツまたは見出し部の色または階調を変化させたり、コンテンツの高さ(突出の有無)を変化させたりするようにした。しかし、表示形態の変化は適宜変更可能であり、他の実施例では、白黒反転、コンテンツおよび見出し部の形状の変化、コンテンツおよび見出し部の文字サイズ・字体の変化、シンボルマーク・下線・枠囲みの有無等によって、検索条件に該当するか否かを表現するようにしてもよい。
また、上述の各実施例では、任意に選択された1日分の番組情報を最前の番組表に表示するとともに、他の日付については日付タブ702を表示するようにしたが、他の実施例では、2個以上の日付分の番組表を表示するとともに、他の日付について日付タブ702を表示するようにしてもよい。つまり、コンテンツ部を表示する表示情報として、2個以上の表示情報が選択されてもよい。
また、上述の各実施例では、電子番組表におけるコンテンツの見出しとして日付を採用し、日付ごとの番組表を構成するようにしたが、他の実施例では、見出しは、番組のジャンル、放送局または時間等であってもよい。例えば、放送局を見出しとして採用する場合には、コンテンツ部として日付軸と時間軸からなる放送局毎の番組表を構成するようにしてもよい。
また、上述の各実施例では、見出し部としてタブを形成するようにしたが、見出し部の形式は適宜変更可能であり、他の実施例では、見出し部として、たとえば、コンテンツ部から離れた位置に配置されたボタンやコンテンツ部から引き出された吹き出しのようなものが形成されてもよい。
また、上述の各実施例では、番組情報の表示されている番組表には日付タブ702を表示しないようにした。つまり、現在選択されている表示情報については、コンテンツ部のみを表示し、見出し部を表示しないようにした。しかし、現在選択されている表示情報については、少なくともコンテンツ部を表示するようにすれば、その見出し部は表示されなくてもよいし表示されてもよい。したがって、他の実施例では、現在選択されている表示情報の見出し部もさらに表示するようにしてよい。その場合、当該見出し部の表示形態も、他の見出し部と同様にして、検索条件に該当するコンテンツの有無によって変化させるようにしてよい。
また、上述の各実施例では、検索条件に該当するコンテンツに対応する見出し部の表示形態を変化させるようにしたが、見出し部の変化は検索条件に該当する見出し部の表示形態の変化に限定されるものではなく、表示された見出し部の表示形態を検索結果に応じて変化させるようにすれば、検索条件に該当するコンテンツが存在するか否かを明確に示すことができる。具体的には、上述の各実施例では、検索条件に該当するコンテンツの含まれていない見出し部もそのまま表示するようにしたが、他の実施例では、検索条件に該当しない見出し部を表示しないようにしてもよく、つまり、検索条件に該当しない見出し部を消去して検索条件に該当する見出し部のみを表示するようにしてもよい。検索条件に該当するコンテンツに対応する見出し部のみが表示されるように、見出し部の全体的な表示形態が変化されるので、当該検索条件に該当するコンテンツの存在の有無をさらに明確に示すことができるとともに、検索条件に該当する見出し部のみが選択可能となるので、当該見出し部を選択し易くすることができる。また、この場合にも、検索条件に該当するコンテンツに対応する見出し部の表示形態を変化させることによって、当該見出し部をより際立たせるようにしてもよい。
なお、上述の実施例では、電子番組表を表示するアプリケーションを実行する場合を説明したが、この発明は、種々のコンテンツの表示に適用することが可能である。図23および図24には、この発明をゲームプログラムの実行における所持アイテム一覧表の表示に適用した場合の一実施例が示される。
この実施例の所持アイテム一覧表では、複数のアイテムが種類ごとに分類されて表示される。つまり、コンテンツ部900には種類別のアイテムが表示され、見出し部902にはアイテムの種類が表示される。この実施例では、見出し部902はボタンとして形成されており、ボタン選択によって、コンテンツ部900に表示されるアイテムが切り替えられる。この実施例では、「ぶき」、「かぶと」、「よろい」および「たて」ボタンが表示されている。
図23(A)は「ぶき」ボタンが選択された場合を示し、図23(B)は「よろい」ボタンが選択された場合を示す。どの種類のアイテムが表示されているかを分り易く示すために、コンテンツ部900に表示されているアイテムの種類に対応するボタン902とコンテンツ部900を示すパネルとが引き出し線で結ばれている。なお、この実施例では、コンテンツ部900に表示されているアイテムの種類に対応するボタンも、他の種類のボタンとともに表示されている。コンテンツ部900を示すパネルでは、選択された種類の複数のアイテムのそれぞれが、たとえばマトリックス状に配列された各枠内に表示されている。
図24は検索結果の表示された所持アイテム一覧表を示しており、図24(A)は「ぶき」ボタンが選択された場合を示し、(B)は「よろい」ボタンが選択された場合を示す。画面の上端部には、検索条件の表示欄904が設けられており、この図24の例では、検索条件として「はがね」が指定されている。なお、検索条件の指定方法は、上述の番組表表示アプリケーションの場合と同様であってよい。たとえば、検索条件入力画面がコントローラ22の所定の入力手段(たとえばBトリガースイッチ26i)の操作や画面上の検索ボタン(図示せず)の選択等に応じて表示されて、当該検索条件入力画面で文字列が入力されたり一覧から選択されたりすることによって検索条件が指定されてよいし、あるいは、所持アイテム一覧表に表示された文字列のドラッグ操作による指定等によって検索条件が指定されてもよい。
検索条件が指定されると、上述の番組表表示アプリケーションの場合と同様な検索・マーキング処理が実行される。たとえば種類ごとに検索条件に該当するアイテムであるか否か判別され、検索条件に該当するアイテムがマーキングされる。具体的に、図20の番組検索・マーキング処理では、調べる日の代わりに調べる種類が設定され、調べる番組の代わりに調べるアイテムが設定される。なお、この実施例では調べる放送局の代わりは無い。
そして、表示されたコンテンツ部900において、マーキングされたアイテムの表示形態(この実施例では色または階調)が変化される。さらに、見出し部902の表示形態(この実施例では色または階調)が検索結果に応じて変化される。図24の例では、マーキングされたアイテムを含む種類に対応するボタン902の表示形態が変化されている。たとえば、図24(A)では、コンテンツ部900にコンテンツが表示されていない「よろい」ボタン902の表示形態が変化されているので、当該種類にも検索条件に該当するアイテムが存在していることを容易に識別することができる。当該「よろい」ボタン902を選択すれば、図24(B)に示すように、種類が「よろい」であるアイテムがコンテンツ部900に表示されるとともに、当該種類のうちマーキングされたアイテムの表示形態が変化される。したがって、当該種類のアイテムのうち検索条件に該当するアイテムを確認することができる。